工作示例

工作示例

我正在尝试弄清楚如何更改 VDI 文件的大小。我是 VirtualBox 的新手,还有很多东西要学。但我想我已经掌握了基础知识。我已经安装了 Windows 7 作为我的第一个客户机。主机也是 Windows 7。我不确定要分配多少磁盘空间,所以我选择了 40 GB 的 VDI 大小和固定大小以提高性能。但我现在改变了主意,我想再添加 10 GB。我一直在点击程序并阅读帮​​助菜单内容,但这没有帮助。它解释了磁盘控制器、SAS、SATA、SCSI、等等,但不是我想要的。

我在网上搜索答案,VirtualBox 论坛说,如果你想要最简单的方法,你应该使用 Gparted(一些 mod 发布了置顶帖)。一些用户讨论使用dd命令。但那都是 Linux 的东西。此外,SU 上有很多问题涉及增加和减少 VDI 文件大小,但它们都是关于使用 Linux 作为主机和 Windows 作为客户机的。

我觉得这很好博客发帖介绍如何使用modifyhdVBoxManage 命令执行此操作。此人也在 Linux 主机操作系统上执行此操作。他甚至希望他的 VDI 文件大小(50 GB)与我的 VDI 文件大小相同,真是巧合。所以我想我无论如何都要试一试,要么成功,要么失败。可能出什么问题?... 嗯?好吧,这是我得到的丑陋惊喜。

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "%userprofile%\virtua
lbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi" --resize 51200
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage.exe: error: Resize hard disk operation for this format is not impleme
nted yet!

C:\Program Files\Oracle\VirtualBox>

A

现在说什么?!...无法调整 VDI 格式的虚拟硬盘大小?你不说吗?不支持你自己的格式?现在怎么样...

真的没有简单的方法来更改 VDI 文件的大小吗,最好在 VirtualBox 中单击几下?有什么进展吗?

答案1

概括:

  • VBoxManage.exe modifyhd --resize可以增加(但不能减少)磁盘映像的逻辑大小(客户操作系统看到的大小)。
  • VBoxManage.exe modifyhd inputfile.vdi --compact可以减小物理磁盘映像大小(主机操作系统看到的磁盘上的映像文件大小)。但这不会改变逻辑磁盘大小。请注意,这仅在客户操作系统中的可用空间已清零时才有效。
  • modifyhd仅适用于动态格式变体(“动态分配的图像”)。
  • modifyhd仅适用于 VDI 和 VHD 图像格式。
  • 如果您使用快照,则必须从“快照”子文件夹克隆最新的快照 VDI。

有关详细信息,请参阅章节8.23. VBoxManage 修改在手册中。


尚未实施减小 VDI 逻辑磁盘大小的原因是为了防止可能发生的数据损坏,从而导致无法启动虚拟机。因此,当--resize使用该选项时,新磁盘大小必须大于当前大小。不允许小于或等于当前大小。换句话说,40 GB 磁盘只能调整为 41 GB 或更大,不能调整为 40 GB(这很愚蠢)或 39 GB 或更小。

旧版本的 VirtualBox 将 VDI 文件创建为“固定”格式变体。现在,新的默认设置是在创建新的 VDI(虚拟磁盘映像)文件时创建“动态”格式变体。(我猜自从引入动态格式变体以来,无论在哪个版本中引入,情况都是如此。)

因此,错误消息“此格式的操作尚未实现”意味着您的 VDI 文件使用“固定”格式变体。要解决这个问题,您必须使用命令克隆您的 VDI 文件clonehd。要查看您的 VDI 文件目前处于哪种格式变体,您可以使用命令showhdinfo

工作示例

显示有关当前磁盘的 VDI 信息。

输入命令:vboxmanage.exe showhdinfo path\inputfile.vdi

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi"
UUID:           132e9af1-0428-49f4-bc45-4d84680e17f5
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       C:\Users\Name\VirtualBox VMs\sg2_win7_x64_lab\sg2_win7_x64_lab.
vdi
Storage format: VDI
Format variant: fixed default
Capacity:       40960 MBytes
Size on disk:   40962 MBytes
In use by VMs:  sg2_win7_x64_lab (UUID: dcd106b3-7ed6-4f19-ad94-820ab4dc10d3)

C:\Program Files\Oracle\VirtualBox>

看到“固定默认值”了吗?这就是为什么当你尝试调整它的大小时会出现上面的错误。

将旧的 VDI 文件克隆为新的 VDI 文件。

输入命令:vboxmanage.exe clonehd path\inputfile.vdi path\outputfile.vdi

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonehd "%userprofile%\virtual
box vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi" "%userprofile%\virtualbox vms\sg2
_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 34dafa68-3093-4946-926a-8237ea263
e5c

C:\Program Files\Oracle\VirtualBox>

瞧!旧文件现在已克隆到新文件。由于新版本 VirtualBox 中的默认设置是使用“动态”格式变体,因此您不必明确定义它。但是,如果您使用的是旧版本的 VirtualBox,那么您可能希望将选项设置为“动态”(如果可用)以确保与未来版本的 VirtualBox 具有更好的兼容性和/或灵活性。

显示有关克隆磁盘的 VDI 信息。

输入命令:vboxmanage.exe showhdinfo path\inputfile_clone.vdi

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID:           34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       40960 MBytes
Size on disk:   7806 MBytes

C:\Program Files\Oracle\VirtualBox>

看到现在显示的是“动态默认”了吗?多好啊!

(附注!这里之所以说物理大小为 7806 MB 是因为我曾--compact在原始 VDI 文件上使用该选项来尝试强制转换为动态格式变体。我在 VirtualBox 论坛上读到过,据说它可以与旧版本一起使用,所以我想我也可以尝试一下。但它没有用。)

调整克隆磁盘的大小。

输入命令:vboxmanage.exe modifyhd path\inputfile.vdi --resize 51200

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "%userprofile%\virtua
lbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi" --resize 51200
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

C:\Program Files\Oracle\VirtualBox>

成功了!再也不需要格式化了。只需记住调整新克隆磁盘的大小,而不是原始磁盘。请记住,大小以 MB 表示。我相信您可以使用例如5120050G或可能是“GB”)。还有一个选项--resizebyte可用于以字节为单位表示大小。

显示有关调整大小的克隆磁盘的 VDI 信息。

输入命令:vboxmanage.exe showhdinfo path\inputfile_clone.vdi

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID:           34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity:       51200 MBytes
Size on disk:   7806 MBytes

C:\Program Files\Oracle\VirtualBox>

就是这样!从这里开始,您需要做的是将此克隆驱动器添加为 VM 的新 VDI。您可以在 VirtualBox 中执行此操作。我不会深入讨论这一点。如果您到目前为止已经能够阅读并理解这一点,那么您可能不需要进一步的指导。您可以删除旧的“修复”文件,也可以将其保留为备份。确保在删除原始源文件之前测试新的 VDI 文件。

笔记!您不会立即看到克隆磁盘的新大小。您必须使用它启动虚拟机,然后使用分区管理工具扩展分区以填充虚拟磁盘(或创建更多分区)。对于 Windows,只需运行,diskmgmt.msc您就可以在其中扩展分区。

截图

A b C d 埃 F G

参考

答案2

这是一个相当简单的过程,我可以在我的 Mac(OS X 10.9.4)上将 VirtualBox(v. 4.3.16)固定大小磁盘调整为 60GB 动态磁盘,并以 Linux(Ubuntu 14.04)作为客户操作系统运行:

在 Mac 上的终端中,将 CD 放入包含 VDI 文件的目录并输入以下内容:

VBoxManage showhdinfo mydisk.vdi  
VBoxManage clonehd mydisk.vdi mydiskClone.vdi  
VBoxManage modifyhd mydiskClone.vdi --resize 61440  
VBoxManage showhdinfo mydiskClone.vdi

在 VirtualBox 应用程序存储部分,添加 mydiskClone.vdi 作为第二个 HD,然后正常启动 VM。

在客户操作系统的 shell 中,输入:

sudo fdisk /dev/sdb
- delete all partitions
- create new partition on full disk

重启客户机。重启后,再次进入 shell 并输入:

sudo resize2fs /dev/sdb1

关闭客户操作系统。

再次在 VirtualBox 应用程序存储部分中,将 mydiskClone.vdi 设置为启动磁盘。然后启动客户操作系统并使用文件浏览器中“计算机”的属性验证新磁盘大小。

答案3

克隆实际上是一个更好的解决方案,并且有更简单的方法可以做到。

从文件菜单中,选择虚拟媒体管理器,然后单击复制。源将是您原来的固定大小 vdi 硬盘,而您的目标将是您选择的新内容(包括新选项)。

答案4

虽然有点迟了,但我还是想说说我的看法。首先我要说的是,这是一个复杂的过程,大多数普通用户都会为弄明白而抓狂。为什么 Oracle 没有在 VBox GUI 中包含这个功能,这还是个谜。

步骤 1:使用 Windows 命令行 (VBoxmanage) 增加驱动器大小。这里的提示是使用 vdi 驱动器的 ID,而不是无休止地尝试输入文件位置并收到错误消息。

步骤 2:然后您需要扩展主分区以利用新空间。下载 gparted iso 并在 VBox 中创建一个新的虚拟机,将其用作 IDE 源。然后使用现有的 VDI 驱动器作为 sata 磁盘。不要为这台机器创建虚拟驱动器。启动新机器,您将运行 gparted Gui。这可能需要几次重新启动才能解决。

一旦 gparted 运行,您将看到要调整大小的 vdi 驱动器的分区。重要提示:您必须删除扩展分区和交换文件空间才能增加主分区的大小,因此不要将所有新空间分配给 PP。完成此操作后,您必须为新扩展分区指定剩余空间并在其中创建新的交换文件空间。我发现这比摆弄命令行要容易得多。

虽然不是件容易的事,但还是可行的……我花了大约半天时间在网上研究才弄清楚。在 VBox 上运行 win8.1 / Ubuntu

威利

相关内容