Linux虚拟机磁盘空间不足的解决思路
- 先快速定位占用与剩余空间,再决定是“清理”还是“扩容”。常用命令:
- 查看文件系统使用:df -h
- 查看目录占用:du -sh /(或进入目录逐级排查)
- 查看块设备与分区:lsblk、fdisk -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 all 或 yum clean all)、删除旧日志(如 journalctl --vacuum-time=7d)、清理临时文件(如 /tmp、/var/tmp)、移除无用镜像与容器、归档/迁移大文件到外部存储。
方案一 扩展现有虚拟磁盘并扩容分区与文件系统
- 步骤概览
- 在虚拟化平台扩展虚拟磁盘
- VMware:编辑虚拟机设置 → 硬盘 → 扩展,输入新的容量。
- VirtualBox(命令行):VBoxManage modifyhd “<路径/磁盘.vdi>” --resize <大小MB>
- KVM/QEMU:qemu-img resize <镜像.qcow2> +<增量G/M>
- 启动系统,确认新容量可见:lsblk、fdisk -l
- 扩展分区
- 非 LVM、MBR 磁盘(如 /dev/sda1):用 fdisk 删除旧分区并重建为更大的分区(保持起始扇区不变),或使用 parted 的 resizepart 在线调整分区大小。
- 大于 2TB 建议使用 parted 与 GPT。
- 扩展文件系统
- ext2/ext3/ext4:先检查(可选)e2fsck -f /dev/sda1,再扩容 resize2fs /dev/sda1
- XFS:扩容 xfs_growfs /mount/point(如 /dev/mapper/centos-root 或挂载点 /)
- 验证:df -h 查看容量是否已增加。
方案二 使用 LVM 在线扩容根分区或数据分区(推荐)
- 适用前提:系统使用 LVM(常见卷组名如 centos、rhel、cl 等)。
- 步骤概览
- 扩展虚拟磁盘(同上),确认系统识别新空间:lsblk
- 若新增了一整块盘(如 /dev/sdb)
- 创建物理卷:pvcreate /dev/sdb
- 扩展卷组:vgextend /dev/sdb
- 若在原盘上新增了分区(如 /dev/sda3)
- 创建物理卷:pvcreate /dev/sda3
- 扩展卷组:vgextend /dev/sda3
- 扩展逻辑卷(按需)
- 使用全部空闲空间:lvextend -l +100%FREE /dev//
- 或指定增量:lvextend -L +40G /dev//
- 扩展文件系统
- ext4:resize2fs /dev//
- XFS:xfs_growfs /mount/point(如 / 或 /home)
- 验证:df -h、lvs、vgs 查看空间是否已扩容。
方案三 添加新虚拟硬盘并挂载使用
- 步骤概览
- 在虚拟化平台添加新硬盘(关机或热插,视平台而定)
- 识别设备:lsblk
- 分区与格式化
- 分区:fdisk /dev/sdb 或 parted /dev/sdb
- 格式化:mkfs.ext4 /dev/sdb1(或 xfs 等)
- 挂载
- 临时:mount /dev/sdb1 /mnt/newdisk
- 永久:在 /etc/fstab 追加一行
- /dev/sdb1 /mnt/newdisk ext4 defaults 0 0
- 验证: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)。