du結果與ls -l結果相比偏高偏低的原因分析

來源:互聯網
上載者:User

我們平常使用右鍵或者ls -l看到的檔案大小都是指這個檔案它本身內容的大小。比方說一個文字檔,裡面寫了ab,那麼它二進位內容實際是61610a,也就是ab分行符號,那麼總共佔了3個byte。所以右鍵以及ll看到的結果應該是3。而用du結果是4K(因人而異),為什麼會不同呢?

這是因為du=disk usage,它指這個檔案放到磁碟中佔了多少空間,當然3byte<4K,但是block是最小的單位,因此這個檔案就佔用了一個block,大小也就是4K。有一種計算方法可以協助理解,但是正確性我沒有考證:假如檔案是13K,1個block大小是4K,那麼du結果是多少呢?13/4=3.25,也就是該檔案要佔3個多block,因此磁碟佔用就應該是4個block,du結果應該是4*4=16K。

從上面我們可以看到,du是計算檔案佔了多少個block,似乎du結果總應該大於等於檔案內容的,也就是du結果總大於等於ll的,但也不盡然。如果你出現了du結果只有幾K,但是右鍵一看檔案竟然有好幾M甚至上G,也不要驚訝,這是有可能的。

linux中有一種檔案叫做sparse file,它可以延遲分配磁碟空間,特別適合虛擬機器。比方說你為虛擬機器分配了1G的虛擬磁碟空間,也就建立了一個1G的磁碟檔案,但是如果你還沒有開啟虛擬機器使用這個檔案,它實際上是沒有任何內容的,也就是說沒有產生磁碟佔用。這個時候,ll結果將是1G,而du結果是0。sparse file使用了dd命令的seek參數,具體原理大家可以再查。這種情況被某些人稱作檔案的黑洞,很形象。

du有一個參數是 --apparent-size,效果與ll相同。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.