今天登录服务器,发现磁盘空间告急。系统为 Ubuntu,面板使用宝塔面板进行管理。需要快速定位哪些文件占用了大量磁盘空间,并安全地进行清理。 排查过程 查看磁盘整体使用情况 df -h 确认磁盘确实占用较高后,从根目录开始逐层排查。 第一层:根目录各分区占用 du -sh /* 2>/dev/null | sort -rh | head -20 输出结果: 14G /www 14G /var 2.8G /usr 149M /boot 84M /root 36M /tmp 19M /etc 两个大头:/www 占 14G,/var 占 14G。继续深入。 第二层:深入 /var 目录 du -sh /var/* 2>/dev/null | sort -rh | head -20 输出结果: 9.0G /var/lib 4.0G /var/log 351M /var/cache /var/lib 和 /var/log 是两个主要占用者。 第三层:定位具体元凶 查看 /var/lib: du -sh /var/lib/* 2>/dev/null | sort -rh | head -20 8.9G /var/lib/docker 116M /var/lib/apt 32M /var/lib/dpkg 查看 /var/log: du -sh /var/log/* 2>/dev/null | sort -rh | head -20 4.0G /var/log/journal 1.7M /var/log/exim4 元凶锁定: 路径 大小 原因 /var/lib/docker 8.9G Docker 镜像、容器、缓存 /var/log/journal 4.0G systemd 系统日志堆积 清理操作 清理 systemd 日志(安全,无副作用) 查看当前日志占用: journalctl --disk-usage Archived and active journals take up 3.9G in the file system. 执行清理,只保留最近 100M: journalctl --vacuum-size=100M 清理结果: Deleted archived journal ... (72.0M). Deleted archived journal ... (72.0M). Vacuuming done, freed 3.8G of archived journals from /var/log/journal/... 一条命令释放 3.8G 空间。 说明: 该命令仅删除历史归档日志,不影响系统正常运行,新的日志照常记录。唯一的"代价"是无法回溯很久以前的系统日志,但一般用不到几个月前的记录。 排查思路总结 整个排查过程遵循逐层缩小范围的原则: 根目录 (/) └── /var (14G) ├── /var/lib (9G) │ └── /var/lib/docker (8.9G) ← 元凶 └── /var/log (4G) └── /var/log/journal (4G) ← 元凶 常用命令速查: # 查看磁盘总览 df -h # 查看目录占用(排序) du -sh /* 2>/dev/null | sort -rh | head -20 # 查找大文件(>100MB) find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh | head -20 # 清理系统日志 journalctl --vacuum-size=100M # 清理 Docker docker system prune -a 五、常见占用大户参考 路径 说明 /var/log/journal systemd 日志,容易堆积 /var/lib/docker Docker 镜像和容器数据 /www/wwwlogs/ 宝塔网站访问日志 /www/backup/ 宝塔备份文件 /www/server/mysql/data/ MySQL 数据库文件 /var/cache/ 系统包管理器缓存 /tmp/ 临时文件 排查核心原则:先定位,再清理,不清不认识的文件。
每天发现网络新鲜事