为什么不能使用modifyhd命令调整动态VDI的大小?

为什么不能使用modifyhd命令调整动态VDI的大小?

我在这里看到如何增加虚拟机的硬盘大小

它应该与类似命令一起工作

VBoxManage modifyhd xp.vdi --resize 2000

当 VDI 具有固定大小时,您可能会收到此错误:

~/VirtualBox VMs/xp$ VBoxManage modifyhd xp.vdi --resize 2000
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!

对此的讨论和解决方案是这里

但是当我的 VDI 是动态时,我会收到该错误

~/VirtualBox VMs/xp$ VBoxManage showhdinfo xp.vdi
UUID:           8880dc58-cd0c-4ffb-a583-f8dd50eda98e
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /home/cip/VirtualBox VMs/xp/xp.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       8192 MBytes
Size on disk:   4693 MBytes
In use by VMs:  xp (UUID: e2b70963-3c26-41cf-88f6-4e03ca721e2d)

这是为什么?

答案1

使用时VBoxManage modifyhd请注意以下事项:

  • 驱动器需要采用 .VDI 或 .VHD 格式。
  • 驱动器必须是动态格式,而不是固定格式(通过创建克隆可以将固定磁盘转换为动态磁盘)。
  • 驱动器大小只会影响逻辑尺寸,而非物理尺寸。
  • 将驱动器缩小到等于或小于其物理尺寸是不可能的。
  • 为了缩小物理尺寸我们必须用 填充未使用的驱动器空间0
  • 在缩小 Windows VDI 的物理尺寸之前,可能需要对其进行碎片整理。

在上面的例子中,尝试将物理大小为 4693 MB 的动态磁盘调整为 2000 MB,但这是不可能的。因此出现错误。

答案2

这个解决方法对我有用:

  1. 关闭机器
  2. 通过管理界面创建一个具有所需大小的新驱动器
  3. 使用VBoxManage 克隆介质带着--existing旗帜

    VBoxManage clonemedium <source-guid> <destinatin-guid> --existing
    

笔记:现在新磁盘将具有未分配的多余空间,您将需要使用 gparted 将大小扩展到最大。

不确定为什么 VirtualBox 的人不能使用上面的方法来实现这一点,而是抛出VBOX_E_NOT_SUPPORTED...至少链接到这个:)

答案3

以下是整个过程,我会尽量详细

  1. 确保要扩大规模的机器处于“关闭”状态(而不是“已保存”或任何其他状态)

在我的例子中,它是一台 32 GB 大小的机器,并将其称为小型虚拟机

  1. 创建具有新所需大小的新虚拟机

就我而言我决定制作一台新的 70 GB 虚拟机,同时将小型机器的内容恢复到这个新虚拟机中我将称之为大型虚拟机

  1. 运行命令VBoxManage list hdds或打开虚拟媒体管理器获取的 GUID小型虚拟机(原点)以及大型虚拟机(目的地)

使用这些 GUID 构建以下命令

VBoxManage 克隆介质 SMALL_VM_GUID LARGE_VM_GUID --现有

就我而言来源 - 小型虚拟机是:39143127-42b6-478a-afb2-5e58f14218b

就我而言目的地 - 大型虚拟机是:bb808b5b-b88c-49b2-a646-3414af906d84

当然你的 GUID 会和我的不一样

确保不要反转 GUID,否则全新的机器将替换现有机器的内容!!!!

确保没有混淆原点和目标后,运行以下命令:

$ VBoxManage 克隆介质 39143127-42b6-478a-afb2-5e58f14218b2 bb808b5b-b88c-49b2-a646-3414af906d84 --现有

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

以“VDI”格式创建的克隆介质。UUID:bb808b5b-b88c-49b2-a646-3414af906d84

  1. 开始新的大型虚拟机您在步骤 2 中创建的。

  2. 检查计算机管理窗口工具,机器实际上有更多未使用/未格式化的空间

  3. 如果你愿意,你可以在 C 盘上运行“chkdsk”以确保一切就绪(这可能需要你重新启动两次大型虚拟机

  4. 使用 gparted-live*.iso,将其“插入”到新的虚拟机中并重新启动它

  5. 启动进入 gparted 环境

  6. 扩大分区并保存更改

  7. “弹出” gparted-live*.iso 以重新启动 Windows

  8. 检查计算机管理窗口工具,机器现在有一个更大的 C 盘来解决您的规格问题

我有这些过程的屏幕截图,但决定不包括它们,因为这会使我的答案变得太大,并让那些“急于”在 Windows 虚拟机上获得可用空间的人感到害怕

答案4

找到了一个更简单的解决方法,至少对我来说是这样:(确保先克隆你的机器,以防 gparted 搞砸了什么,作为备份)

  1. 在虚拟管理器中增加虚拟磁盘大小

  2. 在虚拟机设置->存储->光驱中:

    • 启用 Live CD
    • 将光驱链接到 gparted .iso 文件
  3. 启动虚拟机。它将进入 gparted linux 发行版

  4. 调整分区大小

  5. 关闭虚拟机

  6. 取消 ISO 文件与光盘的链接(“从虚拟驱动器中移除磁盘”)

  7. VM 现在应该有新的磁盘大小。可能会要求 chkdsk。

相关内容