帮助中心 > 关于云服务器 > 云服务器根目录满了怎么清理?大文件查找和磁盘扩容方法
云服务器根目录满了怎么清理?大文件查找和磁盘扩容方法
时间 : 2026-05-02 10:18:11
编辑 : Jtti

  云服务器用着用着,突然某一天登录上去,发现系统开始报错:网站无法写入日志、数据库异常、甚至连 SSH 登录都变得卡顿。再一查磁盘,根目录 / 已经 100% 满了。这种情况在实际运维中非常常见,而且往往来得很突然。很多人第一反应是“赶紧删点东西”,但如果没有搞清楚空间是怎么被占满的,很容易删错关键文件,甚至导致服务彻底崩溃。

  处理这类问题,核心思路其实很简单:先确认空间被谁占用,再决定是清理还是扩容,而不是盲目操作。最基础的一步,是先确认磁盘使用情况:

df -h

  这个命令可以快速看到每个分区的使用率。如果你发现 / 分区已经接近或达到 100%,那就说明问题确实出在根目录。接下来要做的不是删除,而是定位“大头”在哪。

  一个非常实用的命令是:

du -h --max-depth=1 /

  它会按目录层级统计空间占用情况,帮助你快速找到哪个目录在“吃空间”。一般来说,最常见的几个“元凶”是 /var、/home、/usr 和 /root。其中 /var 几乎是重灾区,因为日志、缓存、数据库数据基本都在这里。

  如果 /var 占用很大,可以进一步细查:

du -h --max-depth=1 /var

  很多时候你会发现 /var/log 或 /var/lib 特别大。日志文件是最容易被忽略的,比如 Nginx、Apache、MySQL、系统日志,如果没有做轮转(logrotate),可能会无限增长,一个日志文件几十 GB 并不夸张。

  可以用下面的命令找出大文件:

find / -type f -size +100M -exec ls -lh {} \;

  这个命令会列出大于 100MB 的文件,通常能很快锁定问题文件。如果你看到某个 .log 文件特别大,比如 access.log 或 error.log,可以先确认它是否仍在被使用:

lsof | grep deleted

  有一种情况比较隐蔽:文件已经被删除,但进程还在占用它,这时候磁盘空间不会释放。只有重启服务或进程,空间才会真正回收。

  对于日志文件的清理,不建议直接 rm,更安全的方式是先清空内容:

> /var/log/nginx/access.log

  这样不会影响正在运行的服务。如果确定日志可以删除,再结合 logrotate 做自动管理,避免再次发生。

  除了日志,另一个常见问题是缓存文件。比如系统包缓存:

apt-get clean

  或者在 CentOS 系统中:

yum clean all

  Docker 也是一个经常被忽略的“空间黑洞”。如果你在服务器上运行容器,镜像、容器日志和中间层会不断堆积。可以用以下命令清理无用资源:

docker system df
docker system prune -a

  执行前一定要确认没有重要容器依赖这些镜像,否则可能影响业务。

  还有一种情况是备份文件堆积。很多人习惯把数据库备份、网站压缩包直接放在 /root 或 /home,时间一长就会占用大量空间。可以用:

ls -lh /root

  检查是否有旧备份文件,并按需删除或迁移到对象存储。

  如果排查下来发现空间确实是被正常数据占满,比如数据库增长、用户上传文件增加,那就不是“清理”的问题,而是需要扩容。

  云服务器扩容通常分两步:先在控制台扩展云盘容量,然后在系统内扩展分区和文件系统。扩容云盘后,系统并不会自动识别新空间,需要手动操作。

  可以先查看磁盘:

lsblk

  如果你使用的是常见的 ext4 文件系统,可以执行:

resize2fs /dev/vda1

  如果是 xfs 文件系统,则使用:

xfs_growfs /

  在某些情况下,如果使用了 LVM(逻辑卷管理),扩容步骤会稍微复杂一些,需要先扩展物理卷,再扩展逻辑卷,最后扩展文件系统。但好处是更灵活,适合长期使用。

  还有一个值得注意的点是 inode 耗尽。有时候磁盘看起来还有空间,但系统依然提示“磁盘已满”,这可能是 inode 用完了。可以用:

df -i

  查看 inode 使用情况。如果 inode 满了,通常是因为大量小文件(比如缓存、session 文件),需要删除这些文件才能恢复。

  在整个处理过程中,有几个误区需要避免。第一,不要随意删除 /bin、/usr、/lib 等系统目录中的文件,这可能导致系统无法启动。第二,不要在不确认用途的情况下删除数据库文件或程序数据目录,否则数据可能无法恢复。第三,清理前最好做备份,尤其是在生产环境中。

  从运维角度来看,解决“磁盘满”只是第一步,更重要的是防止再次发生。建议做好以下几点:开启日志轮转、定期清理缓存、监控磁盘使用率、设置告警阈值。一旦磁盘使用率超过 80%,就应该引起重视,而不是等到 100% 才处理。

  另外,可以把日志、上传文件、数据库等数据目录单独挂载到数据盘,而不是全部堆在根目录。这样即使某个目录爆满,也不会影响整个系统。

  很多人经历过一次“磁盘爆满”后,都会意识到容量规划的重要性。云服务器的资源是可以弹性扩展的,但前提是你要提前发现问题,而不是等服务崩溃后再救火。

  最后总结一下,根目录满了并不可怕,关键在于方法:先用 df 和 du 找出问题,再用 find 定位大文件,合理清理日志、缓存和无用数据;如果是正常增长,就果断扩容。只要思路清晰,这类问题其实是可以快速解决的。

  常见问答:

  问:磁盘满了最先删什么最安全?

  答:优先清理日志文件(如 /var/log)、缓存(apt/yum/docker)、旧备份文件,这些一般不会影响系统运行。

  问:直接 rm 大文件为什么空间没释放?

  答:可能文件仍被进程占用,需要重启相关服务或进程才能释放。

  问:扩容后为什么 df 还是没变化?

  答:因为文件系统没有扩展,需要手动执行 resize2fs 或 xfs_growfs。

  问:inode 满了怎么办?

  答:删除大量小文件,比如缓存或 session 文件,释放 inode。

  问:如何避免再次出现磁盘满?

  答:开启日志轮转、设置监控告警、合理分区、定期清理,是最有效的方法。

相关内容

香港云服务器安全组规则怎么配?常见端口开放和最小权限原则 日本云服务器流量异常消耗怎么办? 网站部署到香港VPS后访问很慢的原因 什么是家宽住宅vps?如何判断家宽属性的真假? 个人博客用云服务器多大内存和带宽够用?2026年配置推荐 回国线路与国际线路分不清?去程回程搞懂就懂了 云服务器CPU持续100%怎么排查?是进程还是被攻击了 云服务器被刷流量导致欠费怎么办?如何设置限流和报警? 云服务器快到期了忘记续费,数据还能找回来吗? 香港vps云服务器做快照备份的最佳实践
返回

24/7/365 全天候支持我们时刻恭候您

帮助中心