如何调整VirtualBox vmdk文件的大小

561

我在虚拟机磁盘(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镜像的大小?

15个回答

9

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系统中,您的用户目录下的VirtualBox VM目录可能包含一个XML格式的数据库文件,其中记录了您为VM配置的设置。将此文件重命名为具有“.bak”扩展名的文件(它具有“.vbox”扩展名)。同样,将原始的“.vmdk”文件也重命名为具有“.bak”扩展名的文件以避免出现其他错误。现在,您可以安全地执行第三步操作来将机器转换回“.vmdk”格式,或者避免“重复磁盘”错误。
VBoxManage clonehd "C:\path_to\cloned.vdi" "C:\path_to\source.vmdk" --format vmdk

你将会看到一个UID token。通过在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以恢复其预期的扩展名。

步骤二 - 删除垃圾文件

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


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

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

对于Windows虚拟机,请使用从Windows恢复控制台(恢复分区)引导的命令提示符中的diskpart命令来选择磁盘1列出分区并收集您的C:\驱动器的分区号,然后选择分区 #。 您可以使用EXTEND SIZE = mb将Windows C:\驱动器的大小调整为适当的值。 确保留有恢复和引导分区的空间! 可以安全地减去4096 MB以获取此值,因为影像副本和Windows恢复文件会占用此空间。

对于Linux虚拟机,您可以在VM的磁盘文件上启动的gparted的实时.ISO可以在以下位置找到:http://gparted.org/。它将直接进入基于图形用户界面的gparted-gtk,从那里您可以填充您的可用空间。

对于PPC / Mac虚拟机,Finder中的Disk Utility将协助您填充可用空间,但您可能需要考虑gparted Linux选项,因为目前唯一在VirtualBox中引导MacOSX的方法是hackintosh,并且您无法在引导到MacOSX时扩展您的卷。您还可以暂时寻求调整VM的设置以使用gparted进行引导。gparted识别MacOSX分区为HFS - “堆积文件系统”分区。


第四步 - 猫照片

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


谢谢您提供的全面步骤,它们非常有用! 我做了一些变化:我使用磁盘分区工具来扩展我的Win10虚拟机上的磁盘容量。 此外,还有一个缺失的详细步骤,即重新将克隆的vmdk磁盘添加到VM配置中。就是这样。干杯! - j4v1
在克隆之前,将虚拟机配置文件“.vbox”重命名为“.vbox.bak”的步骤非常重要!如果不这样做,克隆操作将失败。 - Andrés Falcón
如果您在执行VBoxManage命令时遇到错误,那么这可能是“最完整”的答案。在我的情况下,即使我将配置文件重命名为“*.vbox.bak”,VBox仍然保留了状态(通过注册表?)。因此,我不得不使用额外的VBoxManage命令。例如,要查看虚拟磁盘:vboxmanage list hdds。要删除不需要的虚拟磁盘:vboxmanage closemedium disk <filename.vmdk>。查看SATA端口号和设备号:vboxmanage showvminfo <vmName>。要分离磁盘:vboxmanage storageattach <vmName> --storagectl SATA --port <p#> --device <d#> --medium none - electromaggot

7

以下方法可以帮助您调整VirtualBox磁盘的大小,不论它是固定格式还是动态格式的磁盘。特别地,它可以避免磁盘为固定格式时出现的错误。


⚠️备份虚拟磁盘。你永远不知道会发生什么事情。

在主机上:

  1. Open a terminal window.

    On Windows: Open the command prompt cmd.

  2. Go to the directory with the virtual disk you want to resize. For example:

    cd "My VMs"
    
  3. Create a new VirtualBox disk with your desired filename, size (in megabytes) and format (either Standard (dynamic) or Fixed). For example, to create a 50 GB fixed-format disk called MyNewDisk.vdi:

    VBoxManage createmedium --filename "MyNewDisk.vdi" --size 50000 --variant Fixed
    

    If VBoxManage is not recognized as a command, specify the full path to it. It can be found in the VirtualBox installation directory. On Windows the above command would become:

    "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" createmedium
        --filename "MyNewDisk.vdi" --size 50000 --variant Fixed
    
  4. Copy the original disk to the new disk.

    VBoxManage clonemedium "MyOriginalDisk.vdi" "MyNewDisk.vdi" --existing
    
  5. The resize is done! You can check the properties of the new disk if you want:

    VBoxManage showmediuminfo "MyNewDisk.vdi"
    
  6. Change the virtual machine to use the new disk instead.

接下来,在您的客户操作系统上,您需要调整分区大小以利用新可用的空间。

3

我来这里是因为我需要调整我的Docker(CoreOS)开发环境的磁盘大小。

CoreOS文档说没有必要调整操作系统分区 - 这是错误的。在调整虚拟磁盘大小后,您应该按照以下说明通过GParted调整操作系统分区:

https://docs.docker.com/articles/b2d_volume_resize/


3

一种快速简单的选择:

  1. Turn off machine
  2. Create new virtual box disk with desired size
  3. Move content from old disk to inside new disk:

    vboxmanage clonehd "source-disk.vmdk" "new-disk.vmdk" --existing
    
  4. Turn on machine

  5. You may have to resize partition in OS to fill the rest of the disk

警告

如果新硬盘比原始硬盘短,您将会丢失位于源硬盘新硬盘大小位置之后的数据。

在第一步操作之前,在操作系统中释放源硬盘结尾处的增量空间(其中增量=大小(源硬盘)-大小(新硬盘)),以避免此情况发生。


1

使用以下简单步骤调整vmdk的大小。

  1. 点击 文件 -> 虚拟媒体播放器

enter image description here

  1. 选择vdi文件,然后点击 属性

enter image description here

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接