磁盘空间不足需分紧急清理和长期扩容两步处理:先用df、du定位高占用目录并清理日志、缓存等;再用lsof、iotop排查异常写入进程;云盘可在线扩容并扩展分区与文件系统;最后通过logrotate、监控告警和定期巡检预防复发。

磁盘空间不足是Linux服务器常见问题,触发告警后需快速判断是临时文件堆积还是存储容量真正见底。处理思路分两步:紧急清理释放空间 + 长期扩容保障稳定。
一、立即排查并清理占用高的目录
先定位“谁吃掉了磁盘”,再针对性清理,避免误删关键数据:
- 用 df -h 查看各挂载点使用率,确认告警对应分区(如 /、/var、/home)
- 进入高占用分区,执行 du -sh * | sort -hr | head -10 列出前10大目录
- 重点检查:/var/log(日志轮转失效或调试日志暴增)、/tmp(残留临时文件)、/var/cache(包管理缓存)、应用日志目录(如 Nginx 的 access.log、MySQL 的 slow.log)
- 清理示例:
– 清空过期日志:find /var/log -name "*.log.*" -mtime +30 -delete
– 清理 yum 缓存:yum clean all(CentOS/RHEL)或 apt clean(Ubuntu/Debian)
– 安全清空大日志文件:truncate -s 0 /var/log/messages(不删除文件,避免服务重开句柄)
二、识别并终止异常写入进程
某些进程可能因bug持续写入大量日志或临时数据,导致磁盘短时间打满:
- 用 lsof +L1 查看已删除但仍被进程占用的大文件(常见于未重启服务的日志轮转)
- 用 iotop -o 实时观察哪些进程在高频写磁盘
- 结合 ps aux --sort=-%mem 和 ps aux --sort=-%cpu 辅助判断异常进程
- 确认无业务影响后,可 kill 对应进程或通知开发修复逻辑(如循环写日志、未关闭文件句柄)
三、在线扩容云盘(以阿里云/腾讯云为例)
若磁盘长期趋近饱和,优先考虑扩容而非反复清理。云服务器支持不停机扩容:
- 控制台操作:对目标云盘执行“在线扩容”,设置新容量(如从100G扩至200G)
- 登录服务器,确认设备识别:lsblk 或 fdisk -l 查看是否显示新容量(如 /dev/vda 显示 200G)
- 扩展分区(MBR主引导记录):
– 若为单主分区(如 /dev/vda1),用 fdisk /dev/vda 删除并重建分区(起始扇区保持不变,结束扇区用默认值)
– 执行 partprobe 或重启 udev 刷新分区表 - 扩展文件系统:
– ext4:resize2fs /dev/vda1
– xfs:xfs_growfs /(挂载点路径,非设备名) - 验证:df -h 确认可用空间已更新
四、建立预防机制,减少重复告警
运维不是救火队,自动化监控和定期维护能大幅降低突发风险:
- 配置 logrotate:为自定义日志添加轮转规则(按大小或天数切割、压缩、自动删除旧文件)
- 部署基础监控:用 zabbix 或 prometheus + node_exporter 设置磁盘使用率阈值(如 >85% 触发企业微信/钉钉告警)
- 定期巡检脚本示例(加入 crontab 每周执行):
find /var/log -type f -size +100M -exec ls -lh {} \;
du -sh /var/cache/* 2>/dev/null | sort -hr | head -5 - 对数据库、对象存储等有增长规律的服务,提前规划容量,预留至少20%缓冲空间










