BWH Compass

磁盘或 /boot 已满:安全找出占用者

磁盘满可能来自容量不足,也可能来自 inode 用尽。先确定哪个分区和目录增长,再清理能确认用途的内容。

BWH Compass 编辑整理更新于 约 4 分钟阅读

1. 先看是容量满,还是 inode 用尽#

磁盘还有空间却无法创建文件,可能是 inode 耗尽;删除大文件后空间不释放,可能是进程仍占用已删除文件。先收集事实,再决定清理对象。

bash
df -hT
df -i
sudo du -xhd1 /var /home /opt 2>/dev/null

df -hT 看文件系统容量,df -i 看 inode,du -x 限制在同一文件系统内,避免扫到其他挂载盘。逐层进入占用大的目录,不要一开始就扫描或删除整个根目录。

2. 从可重建的缓存和有保留策略的日志开始#

Ubuntu/Debian 的已下载安装包缓存可用包管理器清理。systemd 日志先看当前大小,再按自己的故障追溯需求选择保留时长或容量。

bash
sudo apt clean
sudo journalctl --disk-usage

例如需要保留近 14 天日志,可以在确认要求后使用 sudo journalctl --vacuum-time=14d。它清理的是符合条件的归档日志,并非保证当前日志立刻缩到某个大小。不要删除仍在写入的业务日志文件,应配置 logrotate 或应用自己的轮转。

3. 找大文件时只列出,不直接删除#

bash
sudo find /var /home /opt -xdev -type f -size +200M -printf '%s %p\n' 2>/dev/null | sort -nr | head -20

常见对象是历史备份、上传文件、数据库日志和容器镜像。先确认谁在使用、是否有另一份备份、是否还在保留期限内。数据库数据文件和事务日志不能当普通缓存删除;Docker 也应先用 docker system df 查看,谨慎处理卷。

如果 df 很满而 du 对不上,可以安装并使用 lsof +L1 查看已删除仍打开的文件。确认所属服务后安排正常 reload/restart 释放句柄,不要随意终止数据库进程。

4. /boot 满时让包管理器删除旧内核#

bash
uname -r
dpkg -l 'linux-image*'
sudo apt autoremove --dry-run

先确认当前运行内核,保留至少一个已知可启动的备用内核,再阅读 dry-run 列表。只有列表合理时才执行真正的 autoremove。不要使用通配符手工删除 /boot/vmlinuz*/lib/modules/*,否则包管理状态和引导配置可能失配。

升级已中断时,释放足够空间后再按软件包修复完成配置。需要重启验证新内核前,确认控制台可以使用。

清理内核后重启前,确认实例控制台可用
服务商官方知识库公开截图(旧版界面),用于对照功能名称;当前菜单位置可能调整。图中的套餐、IP、端口和日期仅为示例。

5. 清理后建立容量预警#

重新运行 df -hTdf -i,确认目标文件系统恢复余量,再测试网站上传、数据库写入和备份任务。把日志轮转、备份保留数量和容器镜像清理写成可审阅的计划。

如果业务数据本身持续增长,删除缓存只能短暂缓解。评估扩容、对象存储或备份迁移,参考套餐升级备份恢复

完成后检查

不要删除当前内核,也不要把 rm -rf 用在尚未确认的系统目录。

官方资料与相关入口