磁碟已滿,du 告訴不同。如何進一步調查?
我在伺服器中有一個 SCSI 磁碟(硬體 Raid 1),32G,ext3 文件系統。
df
告訴我磁碟已滿 100%。如果我刪除 1G,則會正確顯示。但是,如果我執行 a
du -h -x /
然後du
告訴我只使用了 12G(我使用-x
是因為一些 Samba 掛載)。所以我的問題不是關於 du 和 df 命令之間的細微差別,而是關於我如何找出導致這種巨大差異的原因?
我為 fsck 重新啟動了機器,但沒有出現錯誤。我應該跑
badblocks
嗎?lsof
顯示沒有打開的已刪除文件,lost+found
是空的,並且消息文件中沒有明顯的警告/錯誤/失敗語句。隨時詢問設置的更多詳細資訊。
檢查位於掛載點下的文件。通常,如果您將目錄(例如 sambafs)掛載到已經有一個或多個文件的文件系統上,您將無法查看這些文件,但它們仍會佔用底層磁碟上的空間。在單使用者模式下,我有文件副本,將文件轉儲到除了單使用者模式之外我看不到的目錄(由於其他目錄系統安裝在它們之上)。
嘗試在本地伺服器上查找問題時偶然發現了此頁面。
在我的情況下,
df -h
與du -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 的磁碟空間。