Linux 磁盘用量管理指南
在 Linux 系统运维中,监控和管理磁盘用量是确保系统稳定运行的关键,当磁盘空间耗尽时,可能会导致系统无法启动、服务崩溃或日志无法写入。
查看整体磁盘空间占用
最常用的命令是 df (disk free),用于显示文件系统的磁盘空间使用情况。
df -h:以人类可读的格式(GB, MB)显示磁盘空间,这是最常用的命令。df -T:显示文件系统的类型(如 ext4, xfs)。df -i:查看 Inode 的使用情况。- 注意:即使磁盘空间有剩余,Inode 用尽(大量小文件),系统依然会提示“磁盘空间不足”。
分析具体目录和文件占用
当发现磁盘空间不足时,需要使用 du (disk usage) 来定位具体是哪个文件夹占用了空间。
- `du -sh `查看当前目录下每个文件和文件夹的总大小。
du -h --max-depth=1 /var/log:查看/var/log目录下第一级子目录的大小。- 查找大文件组合命令:
du -sh | sort -hr:列出当前目录下所有文件/文件夹,并按大小降序排列。find / -type f -size +100M:在全盘范围内查找大于 100MB 的所有文件。
常见的磁盘空间占用原因及清理方法
日志文件过大
- 位置:通常在
/var/log。 - 清理方法:
- 不要直接删除正在写入的日志文件,建议使用
truncate命令清空内容:
truncate -s 0 /var/log/syslog - 配置 logrotate 自动轮转和压缩日志。
- 不要直接删除正在写入的日志文件,建议使用
软件包缓存
- Ubuntu/Debian:使用
sudo apt-get clean清理安装包缓存。 - CentOS/RHEL:使用
sudo yum clean all或dnf clean all。
临时文件
- 位置:
/tmp和/var/tmp。 - 清理方法:删除长时间未被访问的临时文件。
Docker 镜像与容器
- Docker 运行久了会产生大量无用镜像和卷。
- 清理命令:
docker system prune -a(删除所有未使用的容器、网络和镜像)。
已删除但未释放的文件
- 现象:
df显示空间不足,但du找不到大文件。 - 原因:某个进程仍然持有已删除文件的句柄。
- 解决方法:
- 使用
lsof | grep deleted查找被删除但仍被占用的文件。 - 重启相关服务
或杀死该进程以释放空间。
- 使用
推荐的可视化工具
如果觉得命令行不够直观,可以使用以下工具:
- ncdu:一个基于终端的交互式磁盘分析工具。
- 安装:
sudo apt install ncdu或sudo yum install ncdu。 - 使用:直接输入
ncdu /,可以通过方向键浏览文件夹并直接删除文件。
- 安装:
- htop/btop:虽然主打 CPU/内存监控,但部分版本也提供基础的磁盘 I/O 监控。
磁盘管理最佳实践总结
- 定期监控:设置 Zabbix 或 Prometheus 监控磁盘阈值(如 80% 报警)。
- 分区规划:将
/var/log、/home和根目录 分开分区,防止日志撑爆根分区导致系统宕机。 - 自动清理:编写简单的 Crontab 脚本,定期清理临时目录和过期备份。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/488200.html



