老 VirtualBox 用户都知道,VirtualBox 的设置界面并不支持直接调整虚拟硬盘的大小。之前我们介绍过在 Windows 下用命令提示符扩大 VirtualBox 虚拟磁盘容量的方法,当虚拟硬盘空间不足时非常实用。

不过在用命令提示符调整 VirtualBox 磁盘大小时,你可能会碰到“Resize hard disk operation for this format is not implemented yet!”这个报错。出现该错误一般有两种原因:一是安装的 VirtualBox 版本太旧不支持扩容功能(4.0 及以上版本才支持);二是虚拟硬盘是固定大小(fixed size)类型而非动态分配。

如果你已经用上了最新版 VirtualBox,但执行扩容命令时依然报这个错,可以按照下面的方法,通过命令行先克隆出一个动态分配的虚拟硬盘,再对它扩容并挂载到虚拟机上。用命令行工具克隆虚拟硬盘时,生成的磁盘是动态分配类型,因此扩容时不会再报错。
1. 先弄清楚 VirtualBox 虚拟硬盘的确切位置,并确保所在分区有足够的剩余空间来创建克隆盘。比如当前虚拟硬盘位于 D 盘、大小为 20 GB,想扩到 30 GB,那么 D 盘至少需要 30 GB 空闲空间(20 GB 用于克隆,再加 10 GB 用于扩容)。
2. 打开命令提示符。在开始菜单或开始屏幕输入 CMD 后回车即可(无需管理员权限),也可以用 Windows+R 打开运行对话框,输入 CMD 回车。
3. 在命令提示符中输入以下命令并回车:
cd C:\Program Files\Oracle\VirtualBox
其中“C”要换成你 Windows 系统所在分区的盘符。
4. 输入以下命令并回车,为现有虚拟硬盘创建克隆:
vboxmanage clonehd "路径和名称.vdi" "新磁盘路径和名称.vdi"
例如,旧磁盘 Windows 7.vdi 位于 S:\VirtualBox,想克隆到同一目录,命令如下:
vboxmanage clonehd "S:\VirtualBox\Windows 7.vdi" "S:\VirtualBox\Windows 7 Clone.vdi"

5. 克隆完成后你就得到了一块动态分配的虚拟硬盘,现在输入以下命令来扩大它的容量,不会再报错:
vboxmanage modifyhd --resize 大小MB "路径和名称"
(注意 resize 前面是两个连字符)
例如,新建的 Windows 7 Clone.vdi 位于 S:\VirtualBox,想把它扩到约 19 GB,命令如下:
vboxmanage modifyhd --resize 19000 "S:\VirtualBox\Windows 7 Clone.vdi"

扩容完成后,还需要移除旧硬盘并把新硬盘挂载到虚拟机,参考下面两步操作。
6. 运行 VirtualBox,选中虚拟机,点击“设置(Settings)”,切换到“存储(Storage)”选项卡,选中 Controller: SATA/IDE,点击加号图标(添加硬盘),选择“选择现有磁盘(Choose existing disk)”浏览到新硬盘并点击“打开”添加。



7. 最后选中旧硬盘,点击“移除虚拟磁盘(Remove attachment)”将其移除。建议先启动一次虚拟机确认一切正常,再永久删除旧的虚拟硬盘文件。
标签: VirtualBox 虚拟硬盘 命令行