客戶反映云主機(jī)數(shù)據(jù)盤就放了幾個(gè)網(wǎng)站,可是統(tǒng)計(jì)資源占用了90%以上的空間。如下圖,df統(tǒng)計(jì)數(shù)據(jù)盤已使用35G,可是du統(tǒng)計(jì)出來的數(shù)據(jù)不足10G。
問題原因
用戶刪除了大量的文件后,du命令就不會(huì)在文件系統(tǒng)目錄中統(tǒng)計(jì)這些文件。如果此時(shí)還在運(yùn)行中的進(jìn)程持有這個(gè)已經(jīng)被刪除的文件句柄,那么這個(gè)文件就不會(huì)真正在磁盤中被刪除,分區(qū)超級(jí)塊中的信息也就不會(huì)更改,df命令仍會(huì)統(tǒng)計(jì)這個(gè)被刪除的文件。 通過lsof命令查詢處于deleted狀態(tài)的文件,被刪除的文件在系統(tǒng)中被標(biāo)記為deleted。如果系統(tǒng)有大量deleted狀態(tài)的文件,會(huì)導(dǎo)致du和df命令統(tǒng)計(jì)結(jié)果不一致。
可執(zhí)行如下命令查看lsof |grep deleted
解決方法
根據(jù)lsof列出的進(jìn)程號(hào),終止相應(yīng)進(jìn)程或者重啟相應(yīng)的服務(wù)。也可以重啟實(shí)例,重啟實(shí)例系統(tǒng)會(huì)退出現(xiàn)有的進(jìn)程,開機(jī)后重新加載過程中,會(huì)釋放調(diào)用的deleted文件的句柄。