如何调整VirtualBox vmdk文件的大小

时间:2012-07-25 21:36:21

标签: virtualbox

虚拟机磁盘上的空间不足,这是一个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图像的大小?

18 个答案:

答案 0 :(得分:745)

如果你想结束恢复vmdk硬盘(也许你有兴趣在vwmare中使用磁盘),完整的步骤是:

VBoxManage clonemedium "source.vmdk" "cloned.vdi" --format vdi
VBoxManage modifymedium "cloned.vdi" --resize 51200
VBoxManage clonemedium "cloned.vdi" "resized.vmdk" --format vmdk

以上将调整硬盘大小至50GB(50 * 1024MB)。

要完成任务,您还需要调整驱动器的大小!要实现此目的,您可能需要从该iso下载gparted iso并启动以调整驱动器大小(从虚拟机设置中选择iso)。

P.S。如果您的新尺寸太小,即使使用新的vdi文件也会出现相同的错误。

答案 1 :(得分:181)

我能够通过克隆它然后修改和调整大小来调整vmdk的大小。

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

答案 2 :(得分:42)

我在Mac主机上有一个Windows 7客户端,这篇文章非常有帮助。谢谢。

我想补充说我没有使用gparted。我这样做了:

  1. 启动新的放大vmdk图像。
  2. 转到“开始”,右键单击“计算机”,然后选择“管理”。
  3. 单击磁盘管理
  4. 你应该看到(在我的情况下)C盘
  5. 上有一些灰色的空间
  6. 右键单击C驱动器,然后选择“扩展卷”。
  7. 选择尺寸并转到
  8. 甜!我更倾向于使用第三方工具,并提供有关数据丢失的警告。

    干杯!

答案 3 :(得分:31)

VBoxManage 可以解决问题,但不要忘记你必须使用 GParted 或其他工具来分配用 VBoxManage

Have a look to my blog post 获取详细信息和分步截图。

答案 4 :(得分:29)

实际上,只需要这些命令:

VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
VBoxManage modifyhd "cloned.vdi" --resize 51200

然后,您可以在Virtualbox GUI存储中选择cloned.dvi。

之后,启动虚拟窗口并展开C盘作为Code Chops的方法。

没有必要将* .vdi文件转换回* .vmdk文件。

答案 5 :(得分:19)

由于这是一个vmdk文件,您可以使用VMWare的vdiskmanager,如果它适用于您的平台。 VMWare具有x86 Linux,Windows和OS X版本here

然后你就这样做了:

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

答案 6 :(得分:14)

您可以使用Vmware播放器调整vmdk的大小。 如果要将其保留为vmdk格式,则会删除往返转换(在其他帖子中注明)。只需确保将vmdk添加到vmware时,请不要在出现提示时单击升级格式,保留当前的格式以防VirtualBox不接受它。

答案 7 :(得分:10)

对于缩小图像尺寸,我使用以下步骤:

  1. 在客户端计算机cat /dev/zero > z;sync;sleep 3;sync;rm -f z
  2. 关闭客户端计算机
  3. 在主持人VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
  4. 在主持人VBoxManage modifyhd cloned.vdi --compact
  5. 在主持人VBoxManage clonehd "cloned.vdi" "resized.vmdk" --format vmdk

答案 8 :(得分:9)

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

  1. 将VMDK映像克隆为VDI格式

    VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi

  2. 调整VDI图像的大小

    VBoxManage modifyhd "cloned.vdi" --resize 51200

  3. 克隆回VMDK格式

    VBoxManage clonehd "cloned.vdi" "resized.vmdk" --format vmdk

  4. 如果您可以使用VDI图像,则步骤3是可选的。

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

    最后,您可能还需要更改来宾操作系统中的磁盘大小:

    1. 运行来宾操作系统并调整磁盘分区的大小。如果您运行的是Linux,则可以使用kpartedgem 'shoulda-context'

答案 9 :(得分:8)

VirtualBox for Windows

保留虚拟机设置时调整磁盘文件大小!

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

启动cmd.exe

cd到Oracle VM VirtualBox的dir(在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目录可能包含您为VM配置的XML格式的数据库文件。使用.bak扩展名重命名此文件(扩展名为.vbox)。使用.vmdk扩展名重命名原始.bak文件,以避免出现其他错误。您现在可以安全地执行第三步而不会出现错误消息,将机器转换回.vmdk格式,或者重复磁盘"错误。

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

您将看到 UID令牌。通过在Windows Command Interpetor窗口中拖动突出显示该令牌并使用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令牌,以及从命令窗口复制的粘贴。确保将括号保留在原位

保存此文件,然后退出文本编辑器。重命名.vbox.bak文件,将其预期的.vbox扩展名。{/ p>

第2步 - 删除垃圾

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

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

现在,您可以使用适当的操作系统工具启动VirtualBox VM Manager并执行您的VM,以填充新的可用空间。

对于 Windows VM ,请从命令提示符处使用diskpart从Windows恢复Consule(恢复分区)启动到SELECT DISK 1LIST PARTITION并收集分区您C:\驱动器的号码,然后是SELECT PARTITION #。您可以使用EXTEND SIZE=mb将Windows C:\驱动器的大小调整为适当的值。确保为恢复和启动分区留出空间!可以安全地从新的虚拟磁盘大小中减去4096 MB以获得此值,因为它具有卷影副本和Windows恢复文件。

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

对于 PPC / Mac VM ,来自Finder的Disk Utility会让您填补可用空间,但您可能需要考虑 gparted Linux选项 ,目前在VirtualBox中启动MacOSX的唯一方法是hackintosh,并且在启动到MacOSX时无法扩展音量。您可能还想要暂时调整VM gparted的VM设置,以使其启动。 MacOSX分区被gparted识别为HFS - &#34;堆叠文件系统&#34;分区。

第4步 - 猫照片

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

答案 10 :(得分:8)

尝试了所有解决方案,但似乎没有任何效果。经过数小时的挖掘,我发现了此blog帖子,并且像魔术一样一切正常。我不得不稍作调整,所以这里是修改后的版本。已在Docker 17.06.0-ce版本02c1d87上进行了测试。

一旦开发人员真正开始对其应用程序进行容器化,他们通常会生成大量映像并默认情况下迅速填满分配给Docker虚拟机的20GB硬盘空间。为了确保Docker虚拟机具有足够的磁盘空间,我们应该将/ dev / sda1的大小调整为更合理的数字。

  1. 下载GParted Live CD/USB/HD/PXE Bootable Image
  2. 停止Docker虚拟机docker-machine stop default

  3. Boot2Docker软件包安装程序随附VMDK卷,VirtualBox的本机工具无法调整其大小。为了调整Docker磁盘卷的大小,请首先从默认VMDK卷vboxmanage clonehd /full/path/to/disk.vmdk /full/path/to/disk_resized.vdi --format VDI --variant Standard克隆VDI卷。

  4. 将新克隆的VDI卷的大小调整为所需的容量。我们建议至少64GB vboxmanage modifyhd /full/path/to/disk_resized.vdi --resize <size in MB>
  5. 启动VirtualBox应用程序,选择default VM,然后单击顶部的“设置”齿轮。VirtualBox Manager
  6. 单击“存储”图标。删除默认的VMDK卷。enter image description here
  7. 添加新的IDE控制器。IDE controller
  8. 通过“添加CD / DVD设备”选项安装GParted ISO。Add CD/DVD Device
  9. 通过“添加CD / DVD设备”选项安装克隆的VDI卷。Mount volume
  10. 如果您在带有固态硬盘的计算机上运行Docker,请确保为克隆的VDI卷选择了“固态驱动器”选项。Solid-state Drive
  11. 单击“开始”图标以启动Docker虚拟机,这将启动GParted ISO。选择“ GParted Live(默认设置)”。GParted Live (Default settings)
  12. 将用于处理键盘映射的策略设置为“请勿触摸键盘映射”。keymaps
  13. 将语言首选项设置为选项“ 33”,该选项对应于“美国英语”。US English
  14. 选择选项“ 1”以运行“ Forcevideo”并手动配置X。Forcevideo
  15. 通过选择选项“ 2”保持默认分辨率“ 1024×760”。1024×760
  16. 保留默认的“ vesa”作为VGA卡。Leave blank if default is desired
  17. 通过选择选项“ 0”保持默认的颜色深度“ 24”。 Colour depth
  18. 启动GParted后,单击“调整大小/移动”图标。GParted
  19. 通过拖动滑块将新磁盘卷大小设置为所需大小。在此的示例,最大大小为127,035MB。单击“调整大小/移动”按钮以开始该过程。Disk volume size
  20. 通过单击“应用”按钮确认调整大小操作。Bake it
  21. 调整大小操作完成后,关闭机器电源。Hard reset, np :)
  22. 删除GParted ISO。Your almost done
  23. 登录Docker虚拟机以通过启动机器docker-machine start default来验证卷大小调整是否成功
  24. 如果遇到网络问题,请重新启动docker-machine

答案 11 :(得分:5)

这是一种调整VirtualBox磁盘大小的方法,无论它是固定格式磁盘还是动态格式磁盘。具体来说,它可以防止磁盘固定格式时出现的错误。

  

⚠️备份虚拟磁盘。你永远不知道会出现什么问题。

在您的主持人身上:

  1. 打开终端窗口。

      

    在Windows上:打开命令提示符cmd

  2. 转到包含要调整大小的虚拟磁盘的目录。例如:

    cd "My VMs"
    
  3. 使用所需的文件名,大小(以兆字节为单位)和格式(Standard(动态)或Fixed)创建一个新的VirtualBox磁盘。例如,要创建名为MyNewDisk.vdi的50 GB固定格式磁盘:

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

    如果VBoxManage未被识别为命令,请指定它的完整路径。它可以在VirtualBox安装目录中找到。在Windows上,上面的命令将变为:

    "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" createmedium
        --filename "MyNewDisk.vdi" --size 50000 --variant Fixed
    
  4. 将原始磁盘复制到新磁盘。

    VBoxManage clonemedium "MyOriginalDisk.vdi" "MyNewDisk.vdi" --existing
    
  5. 调整大小完成!如果需要,可以检查新磁盘的属性:

    VBoxManage showmediuminfo "MyNewDisk.vdi"
    
  6. 更改虚拟机以改为使用新磁盘。

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

答案 12 :(得分:3)

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

CoreOS docs表示没有必要调整操作系统分区的大小 - 这是虚假的。在调整虚拟磁盘大小后,您应该按照这些说明操作,并通过GParted:

调整操作系统分区的大小

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

答案 13 :(得分:2)

快速简单的选择:

  1. 关闭机器
  2. 创建所需大小的新虚拟磁盘
  3. 将内容从旧磁盘移至新磁盘内:

    vboxmanage clonehd "source-disk.vmdk" "new-disk.vmdk" --existing
    
  4. 开启机器

  5. 您可能必须在操作系统中调整分区大小以填充磁盘的其余部分
  6. 警告

    如果新磁盘比源短,您将丢失位于源磁盘上新磁盘大小位置的数据

    您可以在步骤1之前的操作系统内部的源磁盘末尾阻止此deallocating delta空间,其中delta = size(source-disk) - size(new-disk)。

答案 14 :(得分:0)

扔掉它,然后重新开始。忽略所有这些答案-不要浪费时间。

答案 15 :(得分:0)

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

  1. 点击 File -> Virtual Media Player

enter image description here

  1. 选择 vdi 文件并点击 properties

enter image description here

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

答案 16 :(得分:-4)

下载/安装/使用VMWare Workstation并根据您当前的vmdk文件创建新VM,然后您可以调整vmdk的大小。有关此事项的详细信息,请参阅Google for VMWare。

答案 17 :(得分:-4)

只需按照以下步骤操作:

  1. 关闭机器电源。
  2. 右键单击虚拟机名称&gt;设置&gt;存储
  3. 点击Controller:SATA&gt;添加硬盘。
  4. 选择新的硬盘驱动器类型大小,然后单击“创建”。
  5. 丢弃机器状态。
  6. 插入Ubuntu Live CD。
  7. 从ubuntu live cd。
  8. 启动
  9. 打开&#34; gparted&#34; (已安装,无需安装)。
  10. 检查系统是否看到新创建的硬盘。
  11. 打开终端。
  12. 输入以下代码。
  13. sudo dd if = / dev / sda = = dev / sdb(第一个是旧的分区路径,第二个是新的分区路径)。
  14. 等到完成复制数据后(根据您的主机规格,此步骤可能需要一些时间)。
  15. 完成复制后,返回gparted并选择刷新设备。
  16. 执行dd命令后,选择新分区/ dev / sdb,它必须是旧分区。
  17. 它会将展开的空间显示为未定位的数据。
  18. 删除交换分区/扩展分区。
  19. 右键单击root分区/ dev / sdb&gt;调整大小
  20. 在没有交换分配的情况下分配整个空间。
  21. 创建新的扩展分区&gt;选择扩展&gt;创建
  22. 创建新的linux-swap分区&gt;选择linux-swap&gt;创建
  23. 现在关闭正在运行的机器。
  24. 右键点击机器&gt;设置&gt;存储
  25. 弹出ubuntu live cd。
  26. 右键单击旧硬盘&gt;删除附件。
  27. 现在,您可以从新创建的硬盘启动虚拟机。
  28. 输入df -kh命令检查存储空间。
  29. 必须显示新尺寸。
  30. 祝贺你,享受你的自由空间。
    这个视频将帮助您: https://youtu.be/ikSIDI535L0