磁碟空間耗盡會導致服務崩潰、寫入失敗、日誌停寫。本文提供系統化排查流程:從文件系統級掃描到進程級定位,並給出清理與擴容策略。
# 定期掃描重要文件系統,生成文件清單對比
find /home -type f -printf "%p %s %TY-%Tm-%Td %TH:%TM\n" > files_$(date +%F).txt
diff files_old.txt files_new.txt
識別高增長目錄/文件,對低頻訪問大文件考慮壓縮(gzip/xz)或歸檔。
df -i /home # 查看 inode 使用率
df -h /home # 查看空間使用率
# 目錄級:顯示 /home 下佔用超過 100MB 的子目錄
du -h --max-depth=1 /home | awk '$1 ~ /[0-9]+M/ && $1+0 > 100'
# 文件級:查找超過 200MB 的文件
find /home -type f -size +200M -exec ls -lh {} \;
# 最近 24 小時修改/創建的文件
find /home -type f -mtime -1 -ls
/var/log/:舊日誌(保留策略配置 logrotate)/tmp/、/var/tmp/:臨時文件/root/.cache/、/home/*/.cache/:用戶緩存docker system prune -a、docker image pruneyum clean all / apt-get clean / dnf clean allpackage-cleanup --oldkernels --count=2 (CentOS)systemctl reload rsyslog),否則文件句柄未釋放,空間不回收lsof | grep deleted 找出已刪除但未釋放的文件,重啟持有進程mount /dev/sdb1 /mnt; mv /var/log/* /mnt/; mount --bind /mnt /var/logmv /home/bigdir /data/; ln -s /data/bigdir /home/bigdir# 按 I/O 寫入量排序
iotop -o -b -n 1 | head -20
# 查看進程打開的大文件
lsof -p | awk '$7 > 100000000'
# 系統級 I/O 統計
pidstat -d 1 5
logrotate:按大小/時間輪轉、壓縮、保留份數quota 限制用戶/項目空間df -h 定時檢查,閾值 80% 告警