Linux

磁碟已滿,du 告訴不同。如何進一步調查?

  • September 21, 2021

我在伺服器中有一個 SCSI 磁碟(硬體 Raid 1),32G,ext3 文件系統。df告訴我磁碟已滿 100%。如果我刪除 1G,則會正確顯示。

但是,如果我執行 adu -h -x /然後du告訴我只使用了 12G(我使用-x是因為一些 Samba 掛載)。

所以我的問題不是關於 du 和 df 命令之間的細微差別,而是關於我如何找出導致這種巨大差異的原因?

我為 fsck 重新啟動了機器,但沒有出現錯誤。我應該跑badblocks嗎?lsof顯示沒有打開的已刪除文件,lost+found是空的,並且消息文件中沒有明顯的警告/錯誤/失敗語句。

隨時詢問設置的更多詳細資訊。

檢查位於掛載點下的文件。通常,如果您將目錄(例如 sambafs)掛載到已經有一個或多個文件的文件系統上,您將無法查看這些文件,但它們仍會佔用底層磁碟上的空間。在單使用者模式下,我有文件副本,將文件轉儲到除了單使用者模式之外我看不到的目錄(由於其他目錄系統安裝在它們之上)。

嘗試在本地伺服器上查找問題時偶然發現了此頁面。

在我的情況下,df -hdu -sh大約 50% 的硬碟大小不匹配。

這是由於 apache (httpd) 將已從磁碟刪除的大型日誌文件保存在記憶體中。

lsof | grep "/var" | grep deleted這是通過執行我需要/var清理的分區來追踪的。

輸出顯示如下行:

httpd 32617 nobody 106w REG 9,4 1835222944 688166 /var/log/apache/awstats_log (deleted)

然後通過重新啟動 apache ( service httpd restart) 解決了這種情況,並通過允許清除已刪除文件的鎖定來清除 2gb 的磁碟空間。

引用自:https://serverfault.com/questions/275206