Linux-記憶體和磁碟管理

eacape發表於2022-02-14

記憶體使用率檢視

  • free -b | -k | -m | -g 分別代表 以 BYTE KB MB GB 為單位顯示使用率
  • top 動態檢視記憶體使用情況

磁碟使用率檢視

  • fdisk 用於建立和維護分割槽
    fdisk -l 檢視所有分割槽
  • df檢視磁碟使用統計情況.
  • du 檢視實際佔用磁碟空間.

    du == disk usage (磁碟使用量,佔用的磁碟空間)
    du 的基本使用
    du -s     #s引數是可以統計佔硬碟空間大小的
    如 du -skh b.txt
    -k或--kilobytes 以1024 bytes為單位。
    -h或--human-readable 以K,M,G為單位,提高資訊的可讀性
    -s或--summarize 統計目錄或檔案

    $$ 檔案磁碟佔用空間 ≠ 檔案大小 $$

    linux的檔案系統有 '塊' (block)這個概念,一般預設塊的大小是4k,即一個檔案大小隻有1byte,那麼它仍會獨自佔用一個塊,檔案為6k它會佔用兩個塊,所以在塊大小為4k的linux系統中,每個檔案所佔用的磁碟空間都會是n*4k,這樣一般情況下一個檔案的磁碟使用了會比檔案實際大小高出(0k~4k).
    使用命令 ls -l 檢視的就是檔案的實際大小,使用du 檢視的就是檔案的磁碟佔用.
    但是也有特殊情況,當檔案有比較大的 '黑洞' 時,磁碟的佔用空間會比檔案實際大小 小

    黑洞產生的原因
    在向一個檔案中寫資料的時候,檔案偏移量可以大於檔案的當前長度,在這種情況下,
    對該檔案的下一次寫將加長該檔案,並在檔案中構成一個空洞,這一定是允許的。
    位於檔案中但沒有寫過的位元組都被讀為0.檔案中的空洞並不要求在磁碟上佔用儲存區。
    具體處理方式與檔案系統的實現有關,當定位超出檔案尾端之後寫時,對於新寫的資料
    需要分配磁碟塊,但是對於原檔案尾端和新開始寫位置之間的部分則不需要分配磁碟塊。
     
    例如:
    用dd if=/dev/zero of=a.out seek=1023 bs=1M count=1建立a.out檔案後,
    用ls檢視a.out的檔案大小為1G,用du檢視a.out檔案大小為1M。
    

相關文章