温馨提示×

如何优化centos虚拟机存储空间

小樊
37
2025-12-07 12:22:10
栏目: 云计算

CentOS 虚拟机存储空间优化指南

一 快速诊断与定位占用

  • 查看分区与可用空间:df -h,确认哪个挂载点(如 //var/home)吃空间。
  • 定位大目录与大文件:du -sh /* 2>/dev/null | sort -rh | head -n 20;必要时用 find / -type f -size +100M -exec ls -lh {} \; 查找超大文件。
  • 检查 inode 是否耗尽:df -i,若使用率接近 100%,说明小文件过多,需要清理或归档。
  • 辅助工具:ncdu / 交互式分析磁盘占用,定位更直观。

二 安全清理释放空间

  • 系统级清理
    • 清理包管理器缓存:yum clean all;移除无用依赖:yum autoremove
    • 清理旧日志与系统日志:journalctl --vacuum-size=200M;按需清理 /var/log/*.gz*.1*.old
    • 清理临时文件:rm -rf /tmp/* /var/tmp/*
    • 清理旧内核(保留最近 2 个):package-cleanup --oldkernels --count=2
  • 应用与容器
    • Docker:docker system prune -a(谨慎,会删除未使用镜像/容器/网络);限制容器日志大小:docker run --log-driver json-file --log-opt max-size=10m --log-opt max-file=3
  • 大文件处置
    • 归档压缩不常用数据,或将大目录迁移到新磁盘后再软链回原路径(见第四节)。

三 在线扩容虚拟磁盘与分区

  • 宿主机侧扩容(关机进行)
    • VMware:编辑虚拟机设置 → 硬盘 → 扩展;注意有快照时通常无法扩展,需先删除快照。
    • VirtualBox:设置 → 存储 → 控制器 SATA/SCSI → 添加硬盘或调整现有虚拟盘大小。
  • 启动进入 CentOS 后的分区处理
    • 识别新空间:fdisk -l;创建新分区(如 /dev/sda4 或逻辑分区 /dev/sda5),保存退出。
    • 通知内核重读分区表:partprobe /dev/sda
  • 文件系统扩容
    • 若新增分区:格式化(如 mkfs.xfs /dev/sda5mkfs.ext4 /dev/sda5),挂载到如 /data,并写入 /etc/fstab 实现开机自动挂载。
    • 若在原分区后追加空间(如 LVM 或整盘扩容):
      • LVM 示例:lvextend -L +10G /dev/mapper/vg-root;随后扩容文件系统:resize2fs /dev/mapper/vg-root(ext4)或 xfs_growfs /(xfs)。
      • 非 LVM 的 ext4 场景可用 resize2fs 扩容对应分区;xfs 需对挂载点执行 xfs_growfs
  • 风险提示:分区与扩容存在数据风险,务必先备份,并在变更前确认分区类型与文件系统。

四 迁移大目录与新盘挂载

  • 方案 A:挂载新盘到目标目录
    • 分区并格式化新盘(如 /dev/sdb1mkfs.xfs /dev/sdb1);创建挂载点 mkdir /data;挂载 mount /dev/sdb1 /data;写入 /etc/fstab 持久化。
  • 方案 B:迁移数据并重定向
    • 以 Docker 为例:systemctl stop dockermv /var/lib/docker /data/dockerln -s /data/docker /var/lib/dockersystemctl start docker
  • 适用场景:将 /var/lib/docker/opt/home 等大目录迁移,可快速缓解根分区压力。

五 收缩虚拟磁盘体积与长期预防

  • 收缩虚拟磁盘(仅限 VMware 场景)
    • 在来宾系统内将未使用空间填零:cat /dev/zero > zero.fill; sync; sleep 1; sync; rm -f zero.fill
    • 关闭虚拟机,使用 vmware-vdiskmanager -k "path/to/disk.vmdk" 收缩;或通过 VMware Tools 的 Shrink 功能(对预分配磁盘、存在快照等情况不适用)。
  • 长期预防与运维
    • 配置 logrotate 合理轮转日志;设置磁盘使用率告警(如阈值 90%);定期执行清理脚本;必要时为关键目录设置磁盘配额。
  • 注意:收缩前同样需要完整备份,并确保满足工具的前置条件。

0