歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> df與du命令輸出區別

df與du命令輸出區別

日期:2017/2/28 11:17:02   编辑:關於Unix


  1、正常情況下,df和du輸出結果都會有差距
  du -s命令通過將指定文件系統中所有的目錄、符號鏈接和文件使用的塊數累加得到該文件系統使用的總塊數;而df命令通過查看文件系統磁盤塊分配圖得出總塊數與剩余塊數。文件系統分配其中的一些磁盤塊用來記錄它自身的一些數據,如i節點,磁盤分布圖,間接塊,超級塊等。這些數據對大多數用戶級的程序來說是不可見的,通常稱為Meta Data。
  du命令是用戶級的程序,它不考慮Meta Data,而df命令則查看文件系統的磁盤分配圖並考慮Meta Data。
  因此正常情況下,df計算的USED空間會比du計算的結果要稍大。
  2、異常情況下,df計算的USED空間會比du大很多
  這也是Rocket說的之前碰到的問題,df查看結果文件系統100%使用了,而du的結果是還有6GB空閒的,就這麼個問題硬件廠商一個SUPPORT居然不知道怎麼解釋,這也是讓我好奇晚上回來查查看究竟的原因,結果GOOGLE一下就有了,呵呵。
  原因在於du是以文件名、目錄名為依據計算空間使用的,而df是以硬盤塊使用情況來計算空間使用的。
  當一個應用程序正在寫一個大文件的時候,我們RM或者MV了這個文件(UNIX是允許這麼干的,WINDOWS在這一點上傻有傻福),應用程序會占有句柄,並根據句柄所指磁盤位置直接寫磁盤,而不會檢查該文件是否被刪除。
  因此就會產生上述的問題。具體到Oracle層面,可能發生這種情況的有:Oracle因為某種原因在生成很大的TRACE文件,可能導致/oracle等目錄滿,如果此時直接RM或MV掉該TRACE文件會發現空間並不會釋放,進而可能導致Oracle數據庫DOWN機。
  解決辦法:使用“> tracefile.trc”命令清空掉該文件,如果需要保留TRACE文件便於事後分析問題,可以使用CP先復制該文件到其他地方,然後清空掉原來的文件。
Copyright © Linux教程網 All Rights Reserved