温馨提示×

Linux虚拟机磁盘空间不足怎么解决

小樊
31
2025-12-26 00:14:53
栏目: 云计算

Linux虚拟机磁盘空间不足的解决思路

  • 先快速定位占用与剩余空间,再决定是“清理”还是“扩容”。常用命令:
    • 查看文件系统使用:df -h
    • 查看目录占用:du -sh /(或进入目录逐级排查)
    • 查看块设备与分区:lsblkfdisk -l
    • 若新增了磁盘或扩展了虚拟盘但未识别,可触发 SCSI 总线重新扫描(无需重启):
      • 扫描主机总线:echo “- - -” > /sys/class/scsi_host/host0/scan
      • 扫描具体设备:echo 1 > /sys/class/scsi_device/1:0:0:0/device/rescan
    • 清理建议:清理 YUM/DNF 缓存(如 dnf clean allyum clean all)、删除旧日志(如 journalctl --vacuum-time=7d)、清理临时文件(如 /tmp/var/tmp)、移除无用镜像与容器、归档/迁移大文件到外部存储。

方案一 扩展现有虚拟磁盘并扩容分区与文件系统

  • 步骤概览
    1. 在虚拟化平台扩展虚拟磁盘
      • VMware:编辑虚拟机设置 → 硬盘 → 扩展,输入新的容量。
      • VirtualBox(命令行):VBoxManage modifyhd “<路径/磁盘.vdi>” --resize <大小MB>
      • KVM/QEMU:qemu-img resize <镜像.qcow2> +<增量G/M>
    2. 启动系统,确认新容量可见:lsblkfdisk -l
    3. 扩展分区
      • 非 LVM、MBR 磁盘(如 /dev/sda1):用 fdisk 删除旧分区并重建为更大的分区(保持起始扇区不变),或使用 partedresizepart 在线调整分区大小。
      • 大于 2TB 建议使用 partedGPT
    4. 扩展文件系统
      • ext2/ext3/ext4:先检查(可选)e2fsck -f /dev/sda1,再扩容 resize2fs /dev/sda1
      • XFS:扩容 xfs_growfs /mount/point(如 /dev/mapper/centos-root 或挂载点 /
    5. 验证:df -h 查看容量是否已增加。

方案二 使用 LVM 在线扩容根分区或数据分区(推荐)

  • 适用前提:系统使用 LVM(常见卷组名如 centosrhelcl 等)。
  • 步骤概览
    1. 扩展虚拟磁盘(同上),确认系统识别新空间:lsblk
    2. 若新增了一整块盘(如 /dev/sdb
      • 创建物理卷:pvcreate /dev/sdb
      • 扩展卷组:vgextend /dev/sdb
    3. 若在原盘上新增了分区(如 /dev/sda3
      • 创建物理卷:pvcreate /dev/sda3
      • 扩展卷组:vgextend /dev/sda3
    4. 扩展逻辑卷(按需)
      • 使用全部空闲空间:lvextend -l +100%FREE /dev//
      • 或指定增量:lvextend -L +40G /dev//
    5. 扩展文件系统
      • ext4resize2fs /dev//
      • XFSxfs_growfs /mount/point(如 //home
    6. 验证:df -hlvsvgs 查看空间是否已扩容。

方案三 添加新虚拟硬盘并挂载使用

  • 步骤概览
    1. 在虚拟化平台添加新硬盘(关机或热插,视平台而定)
    2. 识别设备:lsblk
    3. 分区与格式化
      • 分区:fdisk /dev/sdbparted /dev/sdb
      • 格式化:mkfs.ext4 /dev/sdb1(或 xfs 等)
    4. 挂载
      • 临时:mount /dev/sdb1 /mnt/newdisk
      • 永久:在 /etc/fstab 追加一行
        • /dev/sdb1 /mnt/newdisk ext4 defaults 0 0
    5. 验证:df -h

注意事项与常见问题

  • 备份与快照:分区/扩容有风险,操作前请完整备份或在非生产环境演练;生产变更建议先创建虚拟机快照
  • 扩展前先检查并修复文件系统(ext 系列):e2fsck -f /dev/sdXN;XFS 使用 xfs_growfs 前无需强制检查。
  • 扩展分区与文件系统顺序:先扩分区(或 LVM 逻辑卷),再扩文件系统;XFS 必须对已挂载路径执行 xfs_growfs,如 xfs_growfs /
  • 在线扩容能力:LVM 与 ext4/xfs 支持在线扩容;使用 parted resizepart 可在多数情况下在线调整分区。
  • 虚拟平台差异:部分平台/磁盘类型对“在线扩展”有限制;若无法扩展,可新增磁盘或先关机再扩展。
  • 大容量磁盘与分区表:超过 2TB 建议使用 GPT 分区表(parted)。
  • 扩容失败排查:确认新空间已被系统识别(lsblk)、分区类型正确(LVM 为 8e)、卷组有可用空间(vgs)、文件系统类型与扩容命令匹配(ext4 用 resize2fs,XFS 用 xfs_growfs)。

0