今天遇到一個(gè)已刪除文件占用磁盤的情況,這里記錄簡(jiǎn)單的分析和處理流程
背景:
1踪央、接收到磁盤告警后臀玄,用df -h
查看畅蹂,磁盤的使用率是93%。 2累贤、使用du -h --max-depth=1
查看高負(fù)載磁盤時(shí)少漆,各文件占用都不是很高臼膏。
問(wèn)題:
df和du的執(zhí)行結(jié)果不一致示损,無(wú)法定位到大文件路徑并清理文件
問(wèn)題分析:
初步懷疑有進(jìn)程占用已經(jīng)被刪除的大文件,導(dǎo)致文件無(wú)法被釋放
具體原因:
Linux下的文件始鱼,只有在引用數(shù)為0的情況下才會(huì)真正被刪除掉脆贵,之前所占用的空間是不會(huì)被釋放的。 如果存在文件引用丹禀,系統(tǒng)會(huì)將該文件標(biāo)記為已刪除,在引用此文件的進(jìn)程都關(guān)閉時(shí)(文件引用數(shù)為0時(shí))双泪,最終刪除文件,釋放空間資源葫盼。
解決方案:
1村斟、【找出被刪除的占用文件】lsof -n | grep grep deleted
2、【釋放被占用空間】使用kill pid
或kill -9 pid
殺掉進(jìn)程后蟆盹,再重啟服務(wù)
總結(jié):
這里可以看出,df和du的執(zhí)行結(jié)果是有區(qū)別的逾滥,那這兩個(gè)命令的執(zhí)行流程如何?是什么導(dǎo)致輸出結(jié)果不同讥巡,【Linux-運(yùn)維】df和du的命令區(qū)分