如何调整VirtualBox vmdk文件的大小

虚拟机磁盘上的空间不足,需要调整虚拟映像的大小。 使用命令resize

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图像?

是的, 布赖恩 ,你是对的:这些是​​步骤,但如果你想结束回vmdk硬盘(也许你有兴趣在vwmare中使用磁盘),你错过了一步。 所以完整的howto是:

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

以上将调整硬盘高达50GB(50 * 1024MB)。

要完成你需要调整驱动器的东西 ! 要做到这一点,您可能需要下载gparted iso并从该启动iso来调整驱动器大小(从virtualbox设置中selectiso)。

PS如果你的新尺寸太小,即使你的新vdi文件也会出现同样的错误。

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

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

我在Mac主机上有一个Windows 7客户端,这个post是非常有帮助的。 谢谢。

我会补充说我没有使用gparted。 我做到了这一点:

  1. 启动新的放大的vmdk图像。
  2. 转到开始并右键单击计算机,然后selectpipe理。
  3. 点击磁盘pipe理
  4. 你应该看到你的(在我的情况下)C驱动器灰色的空间
  5. 右键单击C驱动器,然后select扩展卷。
  6. select大小,然后去

甜! 我更喜欢使用有关数据丢失警告的第三方工具。

干杯!

VBoxManage会诀窍,但不要忘记,你必须使用GParted或其他工具来分配VBoxManage创build的可用空间。

看看我的博客文章,以获得详细的信息和一步一步的截图。

其实,只有这些命令是需要的:

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

然后,您可以在Virtualbox GUI存储中selectcloned.dvi。

之后,启动虚拟窗口,并按照代码段的方法展开C盘。

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

您可以使用Vmware播放器来调整vmdk的大小。 这可以消除往返转换(在其他文章中提到),如果你想保持它的vmdk格式。 只要确保当您将vmdk添加到vmware中时,请不要在出现提示时单击升级格式,请保留当前的VirtualBox不接受它。

由于这是一个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

为了缩小图像大小,我使用以下步骤:

  1. 在客户机cat /dev/zero > z;sync;sleep 3;sync;rm -fz
  2. closures客户机
  3. 在主机上VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
  4. 在主机上VBoxManage modifyhd cloned.vdi --compact
  5. 在主机上VBoxManage clonehd "cloned.vdi" "resized.vmdk" --format vmdk

因为我需要为我的Docker(CoreOS)开发环境调整磁盘大小,所以我到了这里。

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

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


适用于Windows的VirtualBox

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


第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资源pipe理器和“通过地址栏复制地址为文本”应该可以帮助您获得所需的path。

在Windows系统上,用户下方的VirtaulBox VM目录可能包含您为虚拟机configuration的XML格式的数据库文件。 重命名该文件,扩展名为.bak (扩展名为.vbox )。 重命名.bak扩展名的原始.vmdk文件,以避免另一个错误。 现在,您可以安全地执行第三步而不会出现错误消息,将机器转换回.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预期扩展名。


第2步 – 删除垃圾

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


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

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

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

对于Linux虚拟机 ,你可以在虚拟机的磁盘文件中启动一个live的.ISO of gparted,它可以在http://gparted.org/find。它可以让你直接进入一个基于graphics用户界面的gparted-gtk,可以填补你的空闲空间。;

对于PPC / Mac虚拟机 ,Finder的“ Disk Utility ”可以帮助您填充空闲空间,但您可能需要考虑gparted Linux选项 ,因为目前在VirtualBox中启动MacOSX的唯一方法是hackintosh,而且您无法扩展启动到MacOSX时的音量。 您可能还想要为gparted临时调整虚拟机的设置,以启动它。 MacOSX分区被gparted识别为HFS – “Heaping File System”分区。


第4步 – 猫的照片

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

无论是固定格式还是dynamic格式磁盘,都可以调整VirtualBox磁盘的大小。 具体来说,它可以防止磁盘固定格式时出现的错误。


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

在你的主机上:

  1. 打开一个terminal窗口。

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

  2. 转到您要resize的虚拟磁盘的目录。 例如:

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

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

    如果VBoxManage未被识别为命令,请指定其完整path。 它可以在VirtualBox安装目录中find。 在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. resize完成! 如果您想要,您可以检查新磁盘的属性:

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

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

一个简单而快捷的选项:

  1. closures机器
  2. 创build具有所需大小的新虚拟盒子磁盘
  3. 将内容从旧磁盘移动到新磁盘中:

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

  5. 您可能需要调整操作系统中的分区大小来填充磁盘的其余部分

警告

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

在步骤1之前,您可以在操作系统内的源磁盘末尾防止释放增量空间,其中delta = size(源磁盘)大小(新磁盘)。

下载/安装/使用VMWare工作站并创build新的虚拟机基于您当前的vmdk文件,然后您可以调整您的vmdk。 有关这个问题谷歌VMWare的详细信息。

只需要按照以下步骤操作:

  1. closures你的机器。
  2. 右键单击虚拟机名称>设置>存储
  3. 点击Controller:SATA> Add Hard Disk。
  4. select新的硬盘驱动器types大小,并点击创build。
  5. 丢弃机器状态。
  6. 插入Ubuntu Live CD。
  7. 从Ubuntu的启动光盘。
  8. 打开“gparted”(已安装,无需安装)。
  9. 检查系统是否看到您新build立的硬盘。
  10. 打开terminal。
  11. 键入下面的代码。
  12. sudo dd if = / dev / sda of = / dev / sdb(第一个是旧的分区path,第二个是新的分区path)。
  13. 等到它完成复制数据(此步骤可能需要一些时间根据您的主机规格)。
  14. 完成复制后,返回到gparted并select刷新设备。
  15. 在执行dd命令之后,select新的分区/ dev / sdb,对旧分区必须是典型的。
  16. 它将显示扩展的空间作为未定位的数据。
  17. 删除交换分区/扩展分区。
  18. 右键单击根分区/ dev / sdb> Resize
  19. 分配整个空间没有交换分配。
  20. 创build新的扩展分区>select扩展>创build
  21. 创build新的Linux交换分区>selectlinux-swap>创build
  22. 现在关掉你的跑步机。
  23. 右键单击机器>设置>存储。
  24. popupUbuntu的生活光盘。
  25. 右键点击旧的硬盘>删除附件。
  26. 现在你可以从新创build的硬盘启动你的虚拟机了。
  27. 通过inputdf -kh命令来检查存储空间。
  28. 它必须告诉你新的大小。

恭喜,享受您的自由空间。
这个video将帮助你: https : //youtu.be/ikSIDI535L0