磁盘空间满会导致系统无法写入日志、服务崩溃、命令执行失败甚至卡死;应急处理需快速定位大文件/目录、清理无用数据、释放空间,而非根治问题。

磁盘空间满会导致系统无法写入日志、服务崩溃、命令执行失败,甚至系统卡死。应急处理核心是快速定位大文件/目录、清理无用数据、释放空间,而非彻底根治问题。
立即查看哪个分区满了
运行 df -h 查看各挂载点使用率,重点关注 /、/var、/home 等关键分区。若某分区使用率显示 100%,说明已无可用空间(注意:root 用户默认保留 5% 空间,实际可能还有少量可用)。
确认后,用 df -i 检查 inode 是否耗尽——即使空间未满但 inode 用光,也会报“no space left on device”。
快速定位占用最大的目录和文件
进入疑似满的挂载点(如 cd /var),执行:
- du -sh * | sort -hr | head -10:列出当前目录下前 10 个最大子目录或文件
- find . -xdev -type f -size +100M -ls 2>/dev/null | sort -k7,7nr | head -10:查找大于 100MB 的普通文件,并按大小倒序排列
常见“罪魁祸首”包括:/var/log/ 下的旧日志、/var/cache/ 中残留的包管理缓存、/tmp/ 中未清理的临时文件、容器或数据库产生的日志或数据快照。
安全清理常用路径
以下操作前建议先备份重要配置,清理时避免直接 rm -rf 整个目录:
- /var/log/:用 journalctl --disk-usage 查看 journal 日志占用;执行 journalctl --vacuum-size=200M 限制日志总大小,或 journalctl --vacuum-time=2weeks 清理两周前日志
- /var/cache/apt/archives/(Debian/Ubuntu):运行 apt clean 清空已下载但未安装的 deb 包
- /var/cache/yum/(CentOS/RHEL):运行 yum clean all
- /tmp/:检查是否有长期驻留的大文件(如意外写入的 dump 文件),可手动删除确认无用的文件;系统重启通常会清空该目录
临时释放空间的应急技巧
当磁盘已满到无法执行常规命令时(如 bash: /usr/bin/find: No space left on device),可尝试:
- 用 echo > /var/log/syslog 或类似方式清空单个超大日志文件(仅适用于正在滚动、且服务允许截断的日志;不推荐对正在被追加写入的 active 日志直接 truncate)
- 查找并删除 core dump 文件:find / -name "core.*" -type f -size +100M -delete 2>/dev/null
- 卸载异常挂载的大型 loop 设备或快照卷(如 LVM snapshot、Docker overlay2 中废弃层)
- 若使用 systemd,临时禁用 journald 写盘:systemctl stop systemd-journald,再清空 /run/log/journal/(内存中)或 /var/log/journal/(持久化位置)
清理后务必再次运行 df -h 验证空间是否恢复,并检查关键服务(如 ssh、nginx、数据库)是否恢复正常。










