如何优化CentOS磁盘空间使用
小樊
35
2025-12-13 20:37:11
CentOS磁盘空间优化实操指南
一 快速定位占用
- 查看整体使用:执行df -h,优先关注Use% 接近或达到 100% 的挂载点(如 /、/var、/home)。
- 定位大目录:在疑似分区根下执行du -sh * | sort -rh,逐层进入占用最大的目录继续排查。
- 精准查找大文件:例如查找大于100MB的文件:
find / -type f -size +100M -exec ls -lh {} ; 2>/dev/null
- 交互式分析工具:安装并使用ncdu(yum/dnf install ncdu),可视化定位“吃空间”的路径。
二 安全清理释放空间
- 包管理器缓存
- YUM:执行yum clean all;
- DNF(CentOS 8+):执行dnf clean all。
- 临时文件
- 清理系统临时目录:rm -rf /tmp/ /var/tmp/*(谨慎,确保无业务正在使用)*。
- 日志文件
- 系统日志轮转与清理:配置并使用logrotate;
- systemd 日志:保留最近7 天示例:journalctl --vacuum-time=7d;
- 传统日志可按需截断或删除旧轮转文件(如 messages-、.gz),避免直接删除正在写入的日志。
- 旧内核(/boot 空间告急时优先)
- 安装 yum-utils(如未安装):yum install -y yum-utils;
- 仅保留最新1个内核:package-cleanup --oldkernels --count=1。
- 未使用软件包
- 回收站
- 清理当前用户回收站:rm -rf ~/.local/share/Trash/files/*(各桌面环境路径可能不同)。
- 可选 内存页缓存(仅释放内核缓存,不释放磁盘)
- 执行:sync && echo 3 > /proc/sys/vm/drop_caches(对业务无影响,用于应急“看数”)。
三 按场景专项清理
- Docker/容器环境
- 清理未使用对象:docker system prune -a(谨慎,会删除停止容器、悬空镜像、无用网络与卷);
- 分步清理(更可控):
- 容器:docker container prune;
- 镜像:docker image prune -a;
- 卷:docker volume prune;
- 网络:docker network prune。
- 大文件归档与迁移
- 对历史归档数据执行tar czvf archive.tar.gz && rm -rf ;
- 将大目录迁移至更大盘(如 /home),并通过软链接保持应用路径不变:
- 停服务 → mv /app /home → ln -s /home/app /app → 启动服务(注意权限与属主)。
四 扩容与架构优化
- LVM 在线扩容(推荐)
- 新增磁盘或分区初始化为 PV:pvcreate /dev/sdX;
- 扩展卷组:vgextend <vg_name> /dev/sdX;
- 扩展逻辑卷:lvextend -l +100%FREE /dev/mapper/-;
- 扩展文件系统:
- XFS:xfs_growfs <挂载点>;
- ext4:resize2fs <逻辑卷设备>。
- 非 LVM 场景
- 新增磁盘 → 分区/格式化 → 挂载到目标目录(如 /var 或 /home)→ 写入 /etc/fstab 持久化。
- 架构与运维建议
- 将快速增长数据(如日志、数据库、容器数据)与系统盘分离;
- 配置合理的logrotate策略与监控告警(如 df 阈值报警);
- 建立定期清理与归档流程,必要时实施配额与集中日志管理。
五 安全与回退建议
- 操作前务必备份重要数据;清理命令建议先列出目标再执行删除(例如先用 find/du 确认)。
- 避免在业务高峰期清理正在写入的日志;需要清空日志时优先使用truncate -s 0 而非直接删除。
- 删除旧内核前确保至少保留1 个可启动内核,并在重启验证后再继续清理。
- 生产环境变更建议先在测试环境验证,并准备回退方案(如快照、备份、可回滚的 fstab 配置)。