linux中du,df查看磁盤空間大小還不一樣

“Linux查看磁盤空間一般可以用du,df,但是有些時候兩個得到的結(jié)果卻不一樣.
分別用du,df查看根分區(qū)的大小
>?root#?du?-k?-d?1?/??
628?????/run??
41736???/etc??
0???????/dev??
6761392?/root??
6905636?/var??
4???????/media??
4???????/mnt??
206096??/boot??
2247520?/opt??
30812???/home??
0???????/proc??
16??????/lost+found??
10319996????????/usr??
0???????/sys??
4???????/srv??
168?????/tmp??
26514016????????/??
>?df?-k??
Filesystem?????1K-blocks?????Used?Available?Use%?Mounted?on??
devtmpfs?????????1856388????????0???1856388???0%?/dev??
tmpfs????????????1866776????????0???1866776???0%?/dev/shm??
tmpfs????????????1866776??????628???1866148???1%?/run??
tmpfs????????????1866776????????0???1866776???0%?/sys/fs/cgroup??
/dev/vda1???????41152812?26803328??12445776??69%?/??
tmpfs?????????????373356????????0????373356???0%?/run/user/0??
du得到根目錄
/的大小是26514016KBdf得到根目錄
/的大小是 26803328KB
df 得到的比du得到的大,下面分析一下原因
五種原因
df 命令的全稱是Disk Free ,顯而易見它是統(tǒng)計磁盤中空閑的空間,也即空閑的磁盤塊數(shù)。它是通過文件系統(tǒng)磁盤塊分配圖進(jìn)行計算出的。
du 命令的全稱是 Disk Used ,統(tǒng)計磁盤有已經(jīng)使用的空間。它是直接統(tǒng)計各文件各目錄的大小,而不是從硬盤獲得信息的。
用戶刪除了大量的文件后,du命令就不會在文件系統(tǒng)目錄中統(tǒng)計這些文件。如果此時還在運(yùn)行中的進(jìn)程持有這個已經(jīng)被刪除的文件句柄,那么這個文件就不會真正在磁盤中被刪除,分區(qū)超級塊中的信息也就不會更改,df命令仍會統(tǒng)計這個被刪除的文件。通過lsof命令查詢處于deleted狀態(tài)的文件,被刪除的文件在系統(tǒng)中被標(biāo)記為deleted。如果系統(tǒng)有大量deleted狀態(tài)的文件,會導(dǎo)致du和df命令統(tǒng)計結(jié)果不一致??稍趏pt目錄下執(zhí)行如下命令查看。
lsof |grep deletedLinux系統(tǒng)磁盤分區(qū)有保留區(qū)的概念,會給root或指定用戶預(yù)留5%或更大的空間,當(dāng)使用到這塊保留區(qū)的空間時,fdisk命令的計算將會是負(fù)數(shù)。ext文件系統(tǒng)(包括ext2、ext3、ext4)都會默認(rèn)預(yù)留5%的磁盤空間,使用root用戶維護(hù)系統(tǒng)或記錄系統(tǒng)關(guān)鍵日志使用。
當(dāng)用
du -sh *命令來統(tǒng)計目錄總?cè)萘繒r,如果該路徑下包含隱藏文件,是不會包含在統(tǒng)計結(jié)果里的。如果某個正在運(yùn)行的進(jìn)程進(jìn)行io的文件被刪除,du不會統(tǒng)計,但因?yàn)閷?yīng)的句柄未釋放,文件系統(tǒng)中仍有此句柄,df仍會有對應(yīng)的統(tǒng)計;
由于數(shù)據(jù)盤掛載前該路徑下就存在文件,掛載后用du無法查詢到原路徑文件。
文章轉(zhuǎn)載:入門小站
(版權(quán)歸原作者所有,侵刪)
![]()

點(diǎn)擊下方“閱讀原文”查看更多
