磁碟空間耗盡是 Linux 伺服器常見嚴重故障,會導致服務掛掉、日誌無法寫入、資料庫崩潰。本文以 /home 分區為例,提供 10 個實戰排查步驟,助您快速定位佔用大戶並安全釋放空間。
# ls -lR /home > files.txt
# diff filesold.txt files.txt
分析頻繁讀寫的檔案,預測空間增長趨勢;對低頻存取檔案進行壓縮以節省空間。
# df -i /home
若 inode 充足,代表大檔案佔用空間;若 inode 耗盡,則是大量小檔案導致。
# du -hs /home # 查看總佔用
# du | awk '$1>2000' # 列出超過 1000MB 的目錄(單位為 KB)
# find /home -size +2000k # 找出超過 2MB 的檔案
# touch -t 08190800 test # 建立時間戳記參考檔(格式:MMDDhhmm)
# find /home -newer test -print
# find / -name core | xargs rm -rf # 刪除 core dump
# rm -rf /var/log/* # 清空日誌(謹慎操作,建議先備份)
# ln -s /home /usr/home # 將空間充裕的分區連結到滿載分區
根據應用特性,使用 lsof、ps 等工具定位佔用磁碟 I/O 或開啟大量檔案的進程,分析根因。
# fsck -y /home
修復潛在的檔案系統錯誤,釋放被標記為壞塊的空間。
釋放被已刪除但仍被進程持有開啟的檔案所佔用的空間(透過 lsof | grep deleted 可預先確認)。
cd /
du -h --max-depth=1 | grep G | sort -n
# 進入最大目錄後繼續遞迴
du -h --max-depth=1 | grep G | sort -n
# 若無 G 單位,改用 M
du -h --max-depth=1 | grep M | sort -n
層層深入,快速鎖定空間大戶,確認無用檔案後刪除。