服务器根目录满了怎么办?/分区爆满的快速处理方法

服务器根目录满了怎么办?/分区爆满的快速处理方法

你打开终端,敲了个命令,系统提示:No space left on device。你运行df -h,看到/分区已经100%了。

网站开始报错,数据库连不上,日志写不进去。更糟的是,你不知道哪些文件可以删——怕删错了系统就崩了。

根目录满了比普通数据盘满了更棘手。因为系统本身需要空间才能运转,某些目录是系统目录,删错可能导致无法启动。今天讲怎么快速定位、安全清理。

先看一个数据

在服务器磁盘空间不足的案例中,/分区爆满占比很高。主要原因是系统日志膨胀、包管理器缓存堆积或旧内核未清理。好消息是,大部分情况不需要扩容——清理就够。


第一步:定位——谁把/吃满了

先找到哪些目录占用了最多空间,而不是盲目翻找。

bash

# 查看各分区使用情况
df -h

确认/分区的使用率。如果/dev/vda1/dev/sda1的Use%到了95%以上,需要立刻处理。

bash

# 从根目录开始,找最大的前20个目录
du -sh /* 2>/dev/null | sort -hr | head -20

输出会告诉你哪些一级目录最大。通常可疑目标集中在:/var/home/root/tmp

bash

# 继续往下钻,比如/var下最大的子目录
du -sh /var/* 2>/dev/null | sort -hr | head -10

重复这个步骤,直到找到具体的大文件或目录。

第二步:安全清理——哪些可以删

以下目录/文件相对安全,可以根据实际情况清理。

1. 日志文件(/var/log

这是最常见的元凶。系统日志、应用日志长期累积,可能占用数十GB。

安全范围:30天前的日志通常不再需要。谨慎起见,先检查日志是否在增长:

bash

ls -lh /var/log/*.log

清理方法:使用logrotate手动轮转:logrotate -f /etc/logrotate.conf

即时清理(谨慎):删除.gz压缩过的旧日志文件,保留最近几天的。

bash

# 找到超过30天的日志文件
find /var/log -name "*.log" -mtime +30 -delete

2. 包管理器缓存

软件包安装文件缓存。系统更新后,旧的安装包还在。

bash

# Ubuntu/Debian
du -sh /var/cache/apt/archives/
apt clean

# CentOS/RHEL
du -sh /var/cache/yum/
yum clean all

通常能清理几百MB到几个GB。

3. 旧内核

每次内核更新都会保留旧内核,但通常不需要保留4个以上。

bash

# Ubuntu/Debian
dpkg --list | grep linux-image
apt autoremove --purge

# CentOS/RHEL
package-cleanup --oldkernels --count=2

4. 临时文件(/tmp/var/tmp

某些程序会在/tmp目录写入临时文件,重启后应自动删除。但如果不重启,可能长期积累。

bash

# 查看/tmp占用
du -sh /tmp/
ls -la /tmp/

删除超过3天的临时文件:

bash

find /tmp -type f -atime +3 -delete
find /var/tmp -type f -atime +3 -delete

5. 大文件或异常文件

用以下命令在/下找出超过100MB的大文件:

bash

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

逐个排查,确认文件用途。如果是core dump或数据库备份文件,确认不需要就可以删。

第三步:如果清理后还不够

如果清理了上述目录,/分区仍然使用率较高,说明数据确实在快速增长。排查方向:

检查哪个目录还在持续增长:

bash

watch -n 30 'du -sh /* 2>/dev/null | sort -hr | head -10'

观察几分钟,看哪些目录持续膨胀。可能是某个应用在疯狂写日志,或网站上传文件过多。

检查是否有进程持有已删除的文件:

如果你删除了一个大文件但空间没释放,很可能有进程还在使用它:

bash

lsof | grep deleted

找到这些进程后,重启对应的服务才能释放磁盘空间。

哪些目录/文件绝对不要删

目录说明
/bin/sbin系统命令和核心工具,删了系统无法启动
/lib/lib64系统库文件,删了几乎所有程序都会报错
/etc系统配置文件,删了导致服务异常
/boot启动文件,删除可能导致无法启动
/usr系统程序和库,除非你明确知道在做什么
/proc/sys虚拟文件系统,存放运行时信息

核心规则:除非你确定该目录的用途,否则不要删除任何系统目录下的内容。如果你不确定,先查文档,不要冒险。

真实案例

一台跑了3年的服务器,/分区使用率98%。排查发现/var/log/journal目录占用35GB。这是systemd日志的持久化存储,默认不限制大小。执行journalctl --vacuum-size=500M,瞬间释放34GB,使用率降到70%。服务恢复正常。

最后一句

根目录满了和普通磁盘满了的区别在于:有些系统文件你不能碰。但系统日志、包缓存、旧内核都是安全的清理目标。按上面的顺序走一遍——先定位大目录,再安全清理,通常10-20分钟就能解决。

如果清理完还满,检查是否有进程占用了已删除的文件。大多数情况下你不需要扩容——你只需要告诉系统哪些东西已经不需要了。

知识库

网站搬家实战:从旧服务器到新服务器完整指南

2026-6-25 16:26:10

知识库

云计算与5G:如何利用5G网络优化云平台的性能

2025-6-20 13:24:12

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧