服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-24 简米科技 3,236 字 8 分钟阅读

虚拟机磁盘空间不足怎么办,如何扩展虚拟机磁盘容量

导读虚拟机磁盘空间不足,优先在虚拟化平台里把虚拟磁盘文件调大,再进系统扩展分区和文件系统;如果虚拟磁盘格式或快照结构不支持直接扩容,就新增一块独立虚拟磁盘并迁移数据, 很多人以为扩容只是把硬盘“调大”这么简单,实际上一半的扩容失败都发生在最后一步:分区没扩展,虚拟机磁盘空间不足怎么解决?先分清原因再动手快照累积,你……

虚拟机磁盘空间不足,优先在虚拟化平台里把虚拟磁盘文件调大,再进系统扩展分区和文件系统;如果虚拟磁盘格式或快照结构不支持直接扩容,就新增一块独立虚拟磁盘并迁移数据。 很多人以为扩容只是把硬盘“调大”这么简单,实际上一半的扩容失败都发生在最后一步:分区没扩展。

虚拟机磁盘空间不足怎么解决?先分清原因再动手

  • 快照累积,你给虚拟机开了快照,之后产生的每次写入都会先计入快照增量文件,快照越多、时间越久,磁盘占用越离谱,业内专家指出,快照和日志往往是虚拟机磁盘膨胀最主要的两个隐性来源。
  • 日志与应用缓存,数据库的binlog、容器日志、/var/log 下的系统日志,都会悄悄吞掉大量空间,很多服务器跑上一两年,根分区就满了,清理日志往往能省出不少空间。
  • 磁盘文件格式的影响,精简置备的虚拟磁盘按需增长,刚开始很省空间,但删掉虚拟机内部文件后容量并不会自动归还;厚置备则是一开始就占满宿主机的空间,扩容前要评估宿主机剩余存储是否够用。

判断方法是:先进虚拟机看 df -h,再回宿主平台查虚拟磁盘文件实际大小,两步对照后,你就能确定是“真的需要扩容”,还是“清理一下就能救回来”,如果是日志或快照导致的空间告警,优先清理而不是扩容。

扩展虚拟机磁盘容量,先想清楚走哪条路

直接扩容虚拟磁盘文件,适合系统盘根分区满了、数据不需要迁移的场景,这是大多数人的第一选择。新增独立虚拟磁盘,适合数据积累型负载,比如把数据库目录搬到新盘上;或者直接扩容报错,比如磁盘格式太老、快照链太乱。

对比项 直接扩容虚拟磁盘 新增独立数据盘
适用场景 根分区或系统盘空间不足 数据目录持续增长、原盘不宜动
操作复杂度 相对简单 需要挂载、迁移数据
风险点 必须处理快照、分区扩展 新盘盘符、开机自启挂载配置
常见平台支持 VMware、VirtualBox、Hyper-V、KVM 几乎所有平台

如果只是临时救急,新增数据盘更安全;如果目标是扩大 或 C: 盘,直接扩容再扩展分区才是正路。

vmware虚拟机磁盘扩容:图形界面三步走

VMware Workstation 用户,按下面顺序操作:

  1. 关机,虽然 VMware Workstation 也支持在线扩展,但为了避免文件系统状态不一致,关机最稳妥。
  2. 打开“虚拟机设置”,选中硬盘,右侧找到 扩展 按钮。
  3. 输入新的磁盘大小,点击确定,等待进度条走完。

这里有个前置条件:如果这台虚拟机有快照,扩展大小按钮通常是灰色不可用的,你需要先在“快照管理器”里删除当前快照,或在“虚拟机 → 快照”里执行合并操作,合并过程中磁盘文件会变大,留足宿主机的可用空间。

很多人在这一步结束后立刻回到虚拟机里看,发现容量没变化,就开始怀疑操作失败了,其实是正常的,因为虚拟磁盘文件变大后,还需要在虚拟机内部把分区和文件系统一并扩大,这一步放在文章后面专门说。

其他主流平台的扩容操作:VirtualBox、Hyper-V与KVM

VirtualBox扩容vdi文件:一条命令解决问题

VirtualBox 扩容主要靠命令行,比图形界面更直接,先关闭虚拟机,然后打开终端或 CMD,进入 VirtualBox 安装目录或有 VBoxManage.exe 的路径,执行:

VBoxManage modifyhd "D:\vms\ubuntu\ubuntu.vdi" --resize 40960

后面的数字单位是 MB,40960 就是扩容到 40GB。注意路径别带引号出错,文件名区分大小写,如果虚拟机有快照,同样无法直接扩容,需要先删除快照或用 VBoxManage clonehd 克隆出一个干净磁盘再操作。

Hyper-V 扩展 VHDX 虚拟硬盘

在 Hyper-V 管理器里,先关闭虚拟机,右键选择“编辑磁盘”,选中 VHDX 文件后选择 扩展,输入新大小即可,整个过程是图形向导,没有太多容易出错的地方。

唯一要留意的是磁盘类型,如果原始 VHDX 是固定大小,扩展后新空间不会自动补足为物理占用,而是在虚拟机内部看得到更大的空间,上限取决于虚拟磁盘格式及宿主机配置,普通业务场景很少碰到天花板。

KVM虚拟机增加磁盘容量:用qemu-img命令

KVM 下常见格式是 qcow2,扩容命令很简单:

sudo qemu-img resize /var/lib/libvirt/images/ubuntu.qcow2 +40G

注意 +40G 是增加 40GB,不是扩容到 40GB,执行完再启动虚拟机,用 lsblk 查看系统盘大小,新空间才会出现,如果是给 KVM 虚拟机加一块新数据盘,可以用 virsh attach-disk 在线挂载,不过持久化配置还得手动改 XML 文件,新手更容易出错。

在虚拟机系统里扩展磁盘分区,最后一步别偷懒

虚拟磁盘扩容成功,只完成了 50%,剩下的 50% 是在操作系统里扩展分区,让文件系统真正“看到”那块新空间。

Windows 虚拟机:扩展卷

Win + X 打开磁盘管理,找到对应磁盘,如果扩容后的未分配空间就在系统分区的右侧,直接右键系统分区选 扩展卷,连续点击下一步即可,扩展卷”按钮是灰色,说明未分配空间不在系统分区相邻位置,或者磁盘分区表格式导致扩展受限。

Linux 虚拟机:growpart 与 resize2fs

以最典型的 Ubuntu/CentOS 为例:

  1. 查看分区布局:lsblk,确认磁盘已经变大,但分区还停留在旧大小。
  2. 扩展分区边界:sudo growpart /dev/sda 1,把第一分区扩展到整块磁盘。
  3. 扩展文件系统:sudo resize2fs /dev/sda1(ext4)或 sudo xfs_growfs /(XFS)。

使用 LVM 的虚拟机还要多走两步:先 sudo pvresize /dev/sda1 让物理卷识别新空间,再 sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv,最后用 resize2fs 或 xfs_growfs 扩大逻辑卷上的文件系统。

一个容易踩的坑:未分配空间没紧挨着分区

扩充分区的前提是空闲空间跟目标分区相邻,如果磁盘原本有多个分区,扩容出来的新区间被挡在中间,扩展卷或者 growpart 就会失败,这种情况下比较省事的方案是:把新空间单独做成一个分区,挂载到 /data 或 D盘 等目录,而不是强行合并进系统盘。

常见问题:扩展虚拟机磁盘容量时的三个坑

有快照的虚拟机,扩容总失败是怎么回事?

快照会把虚拟磁盘拆成父盘和增量盘,扩容工具无法直接修改这种链式结构,解决方法是先删除或合并快照,再执行扩容,如果这些快照还想保留,先导出虚拟机的完整备份,再删除快照扩容,最后恢复数据,行业共识认为,大部分扩容失败都与快照未清理有关。

磁盘扩容后虚拟机里还是显示空间不足?

大概率是分区没扩展,用 df -h 看不靠谱,先看 lsblk:如果磁盘大小已更新,但分区大小没变,说明分区和文件系统还停留在旧状态,按上面步骤执行 growpart 必须写清楚磁盘和分区的编号,如果仍提示找不到新空间,重启一次虚拟机再操作。

扩容前必须要备份吗?直接扩容会不会丢数据?

有一定风险,稳妥做法是先备份,最简单的是把虚拟磁盘文件完整复制一份;有条件的话,在虚拟机内建一个临时快照或做一次完整导出,但要记住,快照会反过来限制扩容操作,所以更推荐直接备份镜像文件,这类操作的风险点主要集中在分区扩展阶段,备份花不了几分钟,恢复却可能花上几个小时。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱