1. 程式人生 > >df和du 結果不一致,差別很大,df -h看到是利用率100%

df和du 結果不一致,差別很大,df -h看到是利用率100%

今天發現有臺測試伺服器的根目錄利用率100%,根目錄120G,但是du -sh發現所有資料夾加在一起也不到40G。

一共嘗試了4種方法,終於解決。

1、網上的說法都是說有已經刪除的檔案,但是程序仍在使用,使用lsof | grep deleted檢視已刪除但仍在使用的檔案對應的PID,使用kill -9殺掉該程序,df看到的大小就和du一致了,但是我遇到的情況這樣解決不了。

2、還有說整理磁碟碎片的,但我查了下磁碟碎片並不多,而且沒有空餘空間,也沒法整理。

檢視碎片情況:

xfs_db -c frag -r /dev/sdc1

整理碎片(需要一定的空餘空間):

xfs_fsr /dev/sdc1

3、嘗試伺服器重啟,還是不行。

4、最後用下面的語句解決了

for i in `lsof |grep log |awk '{ print $2 }'` ; do kill -9 $i ;done

如果是生產系統,上面這條命令要慎用,它會找到帶log關鍵字的程序,然後挨個殺掉。

疑問:
1、為什麼重啟系統不行,但是殺掉程序可以?
2、是不是有程序寫log把磁碟寫滿了?但為什麼du -sh看不到?