文件空洞和ls,du命令

du == disk usage (磁盤使用量,佔用的磁盤空間)
du 的基本使用
du -s  
  #s參數是可以統計佔硬盤空間大小的
如 du -skh web
-k或--kilobytes 以1024 bytes爲單位。
-h或--human-readable 以K,M,G爲單位,提高信息的可讀性
-s或--summarize 統計目錄或文件

一個文件佔用的磁盤空間和一個文件的大小是兩碼事情。佔用空間取決於文件系統的塊(block)的大小,linux一般默認是4k(4096),因此,一個大小爲1個字節的文件,最小也要佔用4k,如果你創建文件系統的時候制定塊大小是16K,那麼即便一個文件只有1個字節,佔用空間也是16K。

如果一個分區上主要放大文件,那麼block可以大一些,有利於減少磁盤碎片,如果主要放小文件,那麼block設置小一下,否則太浪費磁盤空間。

通常情況下,ls 顯示的文件大小比du顯示的磁盤佔用空間小
原因:
   比如文件系統的block是4K,一個13K的文件佔用的空間是 13k/4k = 3.25個block,一個block只能被一個文件佔用,因此實際佔用空間就是4個block,就是16K。

如果一個文件有比較大的黑洞,那麼會出現文件大小比磁盤空間佔用大的情況
原因:
   首先要理解什麼是黑洞,怎麼才能產生黑洞?(以下來自《UNIX 環境高級編程》)
   在向一個文件中寫數據的時候,文件偏移量可以大於文件的當前長度,在這種情況下,對該文件的下一次寫將加長該文件,並在文件中構成一個空洞,這一定是允許的。位於文件中但沒有寫過的字節都被讀爲0.
   文件中的空洞並不要求在磁盤上佔用存儲區。具體處理方式與文件系統的實現有關,當定位超出文件尾端之後寫時,對於新寫的數據需要分配磁盤塊,但是對於原文件尾端和新開始寫位置之間的部分則不需要分配磁盤塊。


關於文件空洞:點擊打開鏈接

發佈了42 篇原創文章 · 獲贊 7 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章