我已经用完了虚拟机磁盘(vmdk)上的空间,需要调整虚拟映像的大小。使用命令调整大小

vboxmanage modifyhd Machine-disk1.vmdk --resize 30720

给出错误

Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!

如何调整vmdk映像的大小?


当前回答

正如Luca在回答中提到的,所需的步骤是:

将VMDK镜像克隆为VDI格式 VBoxManage clonehd”源代码。vmdk”“克隆。Vdi”——格式化Vdi 调整VDI映像的大小 VBoxManage modifyhd "克隆。Vdi”——调整大小51200 克隆回VMDK格式 VBoxManage clonehd克隆。vdi”“调整大小。Vmdk "——格式化Vmdk

如果可以使用VDI映像,则步骤3是可选的。

所有这些步骤都可以在VirtualBox图形用户界面下的File -> Virtual Media Manager中执行。选择要克隆的驱动器,然后选择“复制”。打开一个对话框,允许您选择磁盘格式和选项。要调整VDI图像的大小,只需使用底部的滑块(如果不可见,则单击属性)。

最后,您可能还需要在客户操作系统中更改磁盘大小:

运行客户操作系统,调整磁盘分区大小。如果您正在运行Linux,则可以使用gparted或kparted。

其他回答


VirtualBox for Windows

调整您的磁盘文件,同时保留您的虚拟机设置!


步骤1 -调整磁盘文件大小

开始用于cmd . exe

cd到Oracle VM VirtualBox的目录(在64位系统上:"C:\Program Files\Oracle\VirtualBox\")

运行这些命令(如上所述):

VBoxManage clonehd "C:\path\to\source.vmdk" "C:\path_to\cloned.vdi" --format vdi
VBoxManage modifyhd "C:\path\to\cloned.vdi" --resize 51200

Windows资源管理器和“复制地址为文本”通过地址栏应该帮助你得到你需要的路径。

在windows系统中,用户下面的VirtaulBox VM目录可能包含您为虚拟机配置的设置的XML格式的数据库文件。重命名这个文件,扩展名为.bak(扩展名为.vbox)。用.bak扩展名重命名原始的.vmdk文件,以避免另一个错误。现在,您可以安全地执行第三步,而不会出现将机器转换回.vmdk格式的错误消息或“重复磁盘”错误。

VBoxManage clonehd "C:\path_to\cloned.vdi" "C:\path_to\source.vmdk" --format vmdk

您将看到一个UID令牌。通过从Windows命令解释器窗口中拖拽高亮显示并使用快捷键Ctrl+C复制此令牌。

在文本编辑器(如notepad++)中打开.vbox.bak文件。您将看到一个类似xml的数据库文件。看看这些台词:

<VirtualBox xmlns="http://www.virtualbox.org/" version="1.16-windows">
  <Machine uuid="{some uid}" name="source disk name" OSType="the_vbox_OS" snapshotFolder="Snapshots" lastStateChange="2043-03-23T00:54:18Z">
    <MediaRegistry>
      <HardDisks>
        <HardDisk uuid="{some uid}" location="C:\path_to\source.vmdk" ...

在行<HardDisk uuid="{some uid}" location="C:\path_to\source. "vmdk”…,删除括号之间的旧UID令牌,并粘贴从命令窗口复制的UID令牌。确保你把括号放在适当的位置!

保存该文件,并退出文本编辑器。重命名.vbox.bak文件以返回其预期扩展名.vbox。


步骤2 -清除垃圾

现在可以安全地删除目录中剩余的.bak文件了。剩下的是一个调整大小的.vmdk,更新了.vbox数据库,同时保留了之前保留的VirtualBox管理器设置。


步骤3 -调整磁盘分区大小以填充空闲空间

现在,您可以启动VirtualBox虚拟机管理器并执行您的虚拟机,使用操作系统的适当工具来填充新的空闲空间。

For Windows VMs, use diskpart from the command prompt booted from the Windows Recovery Consule (recovery partition) to SELECT DISK 1, LIST PARTITION and gather the partition number of your C:\ drive, then SELECT PARTITION #. You can use the EXTEND SIZE=mb to resize the Windows C:\ drive to the appropriate value. Make sure you leave room for the recovery and boot partitions! It's safe to subtract 4096 MB from your new virtual disk size to get this value, because of shadow copy and windows recovery files.

对于Linux虚拟机,可以在以下地址找到一个gparted的活动iso文件,可以用虚拟机的磁盘文件引导:http://gparted.org/。它将直接引导您进入一个基于图形用户界面的gparted-gtk,从那里您可以填充空闲空间。

对于PPC / Mac虚拟机,查找器中的磁盘实用程序将帮助您填充空闲空间,但您可能要考虑gparted Linux选项,因为目前在VirtualBox中引导MacOSX的唯一方法是hackintosh,并且在引导到MacOSX时不能扩展卷。您可能还想临时调整VM的gparted设置,以引导它。MacOSX分区被gparted识别为HFS -“堆文件系统”分区。


第四步-猫的照片

因为互联网。,)你完成了。使用VirtualBox for Windows享受您新的调整大小的虚拟.vmdk磁盘映像!

使用这些简单的步骤来调整vmdk的大小。

单击File ->虚拟媒体播放器

选择“vdi文件”,单击“属性”

在这里,您可以增加或减少vdi大小。

一个快速而简单的选择:

关闭机器 创建所需大小的新虚拟盒磁盘 将内容从旧磁盘移动到新磁盘: Vboxmanage clonehd“源磁盘。vmdk”“新磁盘。vmdk”——现有的 打开机器 您可能必须在操作系统中调整分区大小,以填充磁盘的其余部分


警告

如果新磁盘比源磁盘短,则会丢失源磁盘上新磁盘大小位置上的数据。

在步骤1之前,您可以防止在操作系统内源磁盘的末端释放delta空间,其中delta = size(source-disk) - size(new-disk)。

因为这是一个vmdk文件,所以您可以使用VMWare的vdiskmanager,如果它适用于您的平台的话。VMWare在这里有x86 Linux、Windows和OS X版本(请参阅右侧的“附件”)。

然后你只要做:

1023856-vdiskmanager-windows-7.0.1.exe -x 30720M Machine-disk1.vmdk

它避免了必须克隆,然后扩展磁盘。现在,缺点是您需要额外的工具,而vmdk是VMWare的磁盘格式,并且您仍在使用Virtualbox,因此可能存在不兼容性。

qemu-img也可以工作,但我不确定它是否支持调整vmdk文件的大小。它看起来像这样:

qemu-img resize Machine-disk1.vmdk +8G

提醒一下,对于这两种情况,在调整底层磁盘的大小之后,仍然需要增加分区。这些工具本质上都是dd if=/dev/old_disk of=/dev/new_disk bs=16M。

我可以通过克隆vmdk,然后修改和调整它的大小来调整它的大小。

vboxmanage clonehd "virtualdisk.vmdk" "new-virtualdisk.vdi" --format vdi
vboxmanage modifyhd "new-virtualdisk.vdi" --resize 30720