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


29

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

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

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)

这是为什么?


Ubuntu 16.04LTS和动态vdi在这里也有同样的问题。非常奇怪
Luckyrings

Answers:


26

要使用VBoxManage modifyhd我们有以下警告:

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

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


1
我也在这里绊倒了。真痛苦
nicolas

2
要以固定格式修改驱动器,请遵循@ ripper234的答案
Sharun

检查我的答案,它具有您需要的所有详细信息,我可以证明它可以正常工作
Mauricio Gracia Gutierrez

我在两年前创建了这张图片,但很久以来我就忘记了它是固定大小而不是动态的。在答案中阅读它使我想起了。我花了一个多小时试图找出为什么我不能做到这一点:(...谢谢
Madivad

谢谢,这有所帮助。对于linux,不要忘记运行pvresize命令以将该空间用于linux
Maksim Luzik

24

这个解决方法对我有用:

  1. 关闭机器
  2. 通过管理界面使用所需大小创建新驱动器
  3. VBoxManage clonemedium--existing标志一起使用

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

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

不知道为什么VirtualBox的人为什么不能使用上面的方法来实现这一目标,而不是抛出VBOX_E_NOT_SUPPORTED...至少链接到此:)


1
我如何在Windows上分配多余的空间?

4
@Ken不确定是否知道了;单击开始->运行-> diskmgmt.msc,右键单击C :(或任何主驱动器),然后选择扩展。
特伦特(Trent)

2
这有所帮助。我不是使用GUID,而是使用驱动器文件名
Luckyrings

3
@ ripper234这三个步骤需要深入解释-对于像我这样不太确定自己在做什么的人。在2)中我们要创建一个新的固定磁盘还是什么?.vdi .vdmk ?? 请给出一个适当的示例,也许带有图形。另外3)与clodhd相比,clonemedium在做什么?即使我们正在克隆,这两个guid来自何处-特别是目的地-它已经存在?谢谢
mwarren

谢谢。现在,我被定向为Windows用户(即使这是askUbuntu),因此我要在此添加,在Windows版本的VBoxManage中,您必须放置虚拟硬盘驱动器的路径,而不是VM GUID。
肖恩·伯切特18'Dec

4

这是整个过程,我将尝试尽可能详细

  1. 确保您要增大尺寸的计算机处于“关闭”状态(而不是“已保存”或任何其他状态)

在我的情况下,这是一台32 GB的计算机,将其称为SMALL VM

  1. 使用所需的新大小创建一个新的虚拟机

就我而言,我决定新建一个70 GB的虚拟机,同时在此新VM中还原小型计算机的内容,我将其称为LARGE VM。

  1. 运行命令VBoxManage list hdds或打开虚拟媒体管理器以获取SMALL VM(原始)的GUID和LARGE VM(目标)的GUID。

使用这些GUID构建以下命令

VBoxManage克隆介质SMALL_VM_GUID LARGE_VM_GUID-现有

就我而言,起源-小型VM是:39143127-42b6-478a-afb2-5e58f14218b

在我的情况下DESINATION-大型VM是:bb808b5b-b88c-49b2-a646-3414af906d84

当然,您的GUID与我的会有所不同

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

确保您没有将原点与目标混合后,运行以下命令:

$ VBoxManage clonemedium 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中创建的新的大型VM

  2. 在“计算机管理”窗口工具中检查计算机实际上是否还有更多未使用/未格式化的空间

  3. 如果愿意,可以在C驱动器上运行“ chkdsk”,以确保一切就绪(这可能会使您在LARGE VM上重新启动两次)

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

  5. 引导到gparted环境

  6. 扩大分区并保存更改

  7. “弹出” gparted-live * .iso以再次启动进入Windows

  8. 在“计算机管理”窗口工具中检查计算机现在具有更大的C驱动器来解决您的规格问题

我有这些过程的屏幕截图,但决定不包括它们,因为它会使我大胆而又令人生畏的答案,使那些“急于”在Windows虚拟机上获得可用空间的人


感谢您的指导。在第3步中,您从哪里获得GUID?我不确定虚拟媒体管理器是什么。
A.Wan

3
没关系,我想我是从VBoxManage list hdds
A.Wan

@ A.Wan这是虚拟介质管理器- google.com.co/...
毛里西奥·格拉西亚·古铁雷斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.