温馨提示×

如何优化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
  • 未使用软件包
    • 自动移除无用依赖:yum autoremove
  • 回收站
    • 清理当前用户回收站: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 /homeln -s /home/app /app → 启动服务(注意权限与属主)。

四 扩容与架构优化

  • LVM 在线扩容(推荐)
    • 新增磁盘或分区初始化为 PV:pvcreate /dev/sdX
    • 扩展卷组:vgextend <vg_name> /dev/sdX
    • 扩展逻辑卷:lvextend -l +100%FREE /dev/mapper/-
    • 扩展文件系统:
      • XFSxfs_growfs <挂载点>
      • ext4resize2fs <逻辑卷设备>
  • 非 LVM 场景
    • 新增磁盘 → 分区/格式化挂载到目标目录(如 /var/home)→ 写入 /etc/fstab 持久化。
  • 架构与运维建议
    • 将快速增长数据(如日志、数据库、容器数据)与系统盘分离;
    • 配置合理的logrotate策略与监控告警(如 df 阈值报警);
    • 建立定期清理与归档流程,必要时实施配额集中日志管理

五 安全与回退建议

  • 操作前务必备份重要数据;清理命令建议先列出目标再执行删除(例如先用 find/du 确认)。
  • 避免在业务高峰期清理正在写入的日志;需要清空日志时优先使用truncate -s 0 而非直接删除。
  • 删除旧内核前确保至少保留1 个可启动内核,并在重启验证后再继续清理。
  • 生产环境变更建议先在测试环境验证,并准备回退方案(如快照、备份、可回滚的 fstab 配置)。

0