很多運(yùn)維同學(xué)都遇到過“磁盤告警”,遇到這種情況就需要去清理磁盤。
這時(shí)候,很多同學(xué)通過各種途徑、手段、命令找到了占用磁盤比較大的文件,然后大手一揮,?
sudo rm -rvf xxxxx.log
以為這樣任務(wù)就完成了,誰知道,一查詢磁盤使用量還是居高不下,完全沒有釋放。
這是因?yàn)樵贚inux中,如果你刪除一個(gè)正在被使用的文件,磁盤空間不會(huì)立即釋放。Linux使用了一種稱為"刪除掛起"的機(jī)制。當(dāng)你刪除一個(gè)文件時(shí),文件系統(tǒng)會(huì)將該文件標(biāo)記為已刪除,但實(shí)際上并不會(huì)立即從磁盤上刪除它。只有當(dāng)所有正在使用該文件的進(jìn)程關(guān)閉時(shí),磁盤空間才會(huì)被釋放。
這時(shí)候,不知道怎么處理了,網(wǎng)上的解決辦法基本上是讓你重啟相應(yīng)的進(jìn)程。當(dāng)然我們可以不重啟進(jìn)程。直接重啟主機(jī)唄(皮一下就很開心)。
下面我說一種不需要重啟進(jìn)程或者主機(jī)的辦法,不一定能完全解決大家的問題,方法僅供參考
1、如何查詢哪些文件被刪除了,但是空間沒有釋放
下面以/data目錄為例
sudo lsof /data | grep deleted |sort -k7rn | less
2、查詢出來結(jié)果如下圖,我們需要關(guān)注第2和第4列內(nèi)容,后面需要用到
3、這時(shí)候我們執(zhí)行
sudo ls -l /proc/3198801/fd/1 命令中: 3198801: 就是進(jìn)程號(hào) 1: 是第四列w前面的數(shù)字 ,如 1w,則id為1,如 47w,則id為47
4、這里我們可以查詢到這個(gè)命令是存在的,于是我們執(zhí)行下列命令
sudo cp /dev/null /proc/3198801/fs/1
5、執(zhí)行完成后,再次使用命令查詢磁盤空間是否釋放掉。文章來源:http://www.zghlxwxcb.cn/news/detail-677079.html
6、這個(gè)命令我在自己運(yùn)維的環(huán)境中跑過,是能解決此類問題的。不過這個(gè)方法為什么能夠解決問題,或者是否僅僅適用某些特定的場(chǎng)景,個(gè)中緣由還請(qǐng)各位大佬自行探索吧。文章來源地址http://www.zghlxwxcb.cn/news/detail-677079.html
到了這里,關(guān)于刪除文件后磁盤空間未釋放,只能重啟進(jìn)程?(僅供參考)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!