VVPSKAN

运维

Linux服务器磁盘满了怎么办?从定位到安全清理

证据状态:官方文档、明确条件与可重复步骤;页面未标注的数据不视为本站实测。

直接答案:先用df -h确认哪个分区满,再用df -i排除inode耗尽;随后在同一挂载点逐层用du定位目录,并用lsof +L1检查已删除但仍被进程占用的文件。确认来源后再清理日志、缓存或旧镜像,数据库文件和Docker卷不能凭目录大小直接删除。

确认容量还是inode耗尽

df -h显示容量,df -i显示inode。大量小文件可能让inode先耗尽。先记录满的是根分区、数据盘还是Docker所在分区。

在同一挂载点逐层定位

使用带-x的du避免跨到其他挂载点,从/var、/home或业务目录逐层检查。常见来源包括系统日志、网站日志、数据库日志、旧备份、镜像和容器日志。

处理看不见的占用

文件被删除后,如果进程仍保持打开,du看不到但df不会释放空间。用lsof +L1找到对应进程,确认服务后安排重启或重载。

按来源安全处理

  • 系统日志使用journal或logrotate的正式保留策略。
  • Docker先看docker system df,只清理确认未使用的对象。
  • 数据库使用自身的日志轮转与归档方式。
  • 旧备份要在另一份副本通过恢复后再删除。
  • 最后设置磁盘与inode告警,记录增长速度。

备份只有恢复成功才算有效

备份成本包括存储、跨地域复制、请求、出口流量和恢复时间。快照与异地备份承担不同职责。

  1. 定义可接受的数据损失时间和恢复时间。
  2. 分别备份数据库、用户文件和配置。
  3. 至少保留一份不与生产实例同故障域的副本。
  4. 定期在空白服务器完成恢复演练。
df -h df -i sudo du -xhd1 /var | sort -h sudo lsof +L1 docker system df

命令用于定位分区、inode、目录和已删除未释放文件,最后一项只读取Docker空间统计。不要在未确认数据归属时执行rm或带--volumes的清理。

哪些情况下不应这样选

  • 只开同账号同地域快照,就认为已经异地容灾。
  • 从未恢复过备份,也没有记录恢复依赖。
资料与边界

本文结合官方文档和可重复的验收方法编写。未标注“实测”的数据不作为跑分或线路承诺;价格、资格和产品限制应以购买当天的官方页面为准。

常见问题

删除大文件后空间为什么没回来?

进程可能仍打开该文件,可用lsof +L1确认并安排重启相关服务。

可以直接删除/var/lib/docker里的大文件吗?

不可以。该目录由Docker管理,直接删除可能损坏容器、镜像或卷。

磁盘扩容能彻底解决吗?

只能恢复余量;日志或程序持续异常增长时仍会再次占满。

编辑说明:测试与更正方法 · 编辑规范 · 联盟关系披露