如何调整VirtualBox vmdk文件的大小

我已经用完了虚拟机磁盘(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映像的大小?

423332 次浏览

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

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

如果您希望结束返回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)。

要完成你也需要调整驱动器的大小!要实现这一点,你可能想要下载< >强gparted < / >强 iso,并从该iso引导来调整驱动器的大小(从virtualbox设置中选择iso)。

附注:如果你的新大小太小,即使你的新vdi文件也会得到同样的错误。

# EYZ0:

  • 相当固定的大小分配(步骤1、2)。
  • 即使在扩展之后,也无法在vmdk的操作系统中使用(步骤3、4、5)

步骤:

1)转换为".vdi"first - VBoxManage clonehd v1.vmdk v1.vdi --format vdi

使用命令行扩展EYZ0的大小(参考:tvial的博客的步骤信息)

从VirtualBox中的虚拟媒体管理器开始展开。

[现在-在vm内部]

扩展驱动器的大小,使用新的分配(例如Ubuntu在虚拟机上运行:使用GParted) enter image description here # EYZ0 < / p >

扩展文件系统 - lvextend -L +50G <file-system-identifier>

说明:

$ lsblk
NAME                       MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
...
sda                          8:0    0   200G  0 disk
└─sda1                       8:1    0   200G  0 part
├─myfs-vg-cloud          253:0    0    99G  0 lvm  /
└─myfs-vg-swap-1         253:1    0   980M  0 lvm  [SWAP]




$ lvextend -L +100G /dev/mapper/myfs-vg-cloud


$ lsblk
NAME                       MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
...
sda                          8:0    0   200G  0 disk
└─sda1                       8:1    0   200G  0 part
├─myfs-vg-cloud          253:0    0   199G  0 lvm  /
└─myfs-vg-swap-1         253:1    0   980M  0 lvm  [SWAP]

扩展“/ home" - resize2fs <file-system-identifier>

说明:

$ df -h /home/
Filesystem                        Size  Used Avail Use% Mounted on
/dev/mapper/myfs-vg-cloud         97G   87G  6.0G  94%   /


$ resize2fs /dev/mapper/myfs-vg-cloud


$ df -h /home/
Filesystem                        Size  Used Avail Use% Mounted on
/dev/mapper/myfs-vg-cloud         196G   87G  101G  47%  /

您的系统现在必须准备好使用扩展分配!!

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

我要补充一点,我没有使用gparted。我是这样做的:

  1. 启动新的放大的vmdk映像。
  2. 转到开始,右键单击计算机,选择管理。
  3. 单击磁盘管理
  4. 你应该在你的C盘上看到一些灰色的空间(在我的情况下)
  5. 右键单击C驱动器并选择扩展卷。
  6. 选择尺寸然后出发

甜蜜的!比起使用带有数据丢失警告的第三方工具,我更喜欢这种方法。

干杯!

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

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

然后选择“克隆”。Virtualbox GUI存储。

在那之后,启动虚拟窗口和扩展你的C盘作为Code chop的方法。

没有必要转换*。Vdi文件到*。返回VMDK文件。

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

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

CoreOS文档说不需要调整OS分区大小——这是假的。在你调整虚拟磁盘的大小后,你应该按照下面的说明,通过GParted调整OS分区的大小:

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

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

一个快速而简单的选择:

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

    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

Warning

If new disk is shorter than source, you will loss the data located from the new disk size position on the source disk.

You may prevent this deallocating delta space, where delta = size(source-disk) - size(new-disk), at the end of source disk inside OS before step 1.


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令牌,粘贴是从命令窗口复制的令牌。确保你离开括号在适当的位置!

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


步骤2 -清除垃圾

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


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

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

对于Windows vm,从Windows恢复控制台(恢复分区)启动的命令提示符中使用diskpartSELECT DISK 1LIST PARTITION,收集C:\驱动器的分区号,然后是SELECT PARTITION #。您可以使用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设置,以引导它。MacOSX分区被gparted识别为HFS -“堆文件系统”分区。


第四步-猫的照片

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

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


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

在主机上:

  1. 打开终端窗口

    Windows系统:打开命令提示符“cmd”。

    李< /引用> < / >
  2. 进入需要调整大小的虚拟磁盘所在目录。例如:

    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
    

    如果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. 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.

Next, on your guest OS you need to resize the partitions to use the newly available space.

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

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

    # EYZ0 < / p >

  2. 调整VDI镜像大小

    # EYZ0 < / p >

  3. 克隆回VMDK格式

    # EYZ0 < / p >

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

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

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

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

这里所有的办法都试过了,但似乎都不管用。经过几个小时的挖掘,我发现了这个博客帖子,就像魔法一样,一切都起作用了。我需要做一些调整,所以这是修改后的版本。使用Docker 17.06.0-ce版本测试,构建02c1d87。

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

  1. # EYZ0下载。
  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虚拟机,然后单击顶部的“设置”齿轮
  6. 点击“存储”图标。删除默认VMDK卷
  7. 添加一个新的IDE控制器
  8. 通过“Add CD/DVD Device”选项挂载GParted ISO
  9. 通过“Add CD/DVD Device”选项挂载克隆的VDI卷
  10. 如果你在一台有固态硬盘驱动器的计算机上运行Docker,请确保克隆的VDI卷选择了“固态驱动器”选项
  11. 点击“Start”图标启动Docker虚拟机,这将启动GParted ISO。选择“GParted Live(默认设置)”
  12. 设置处理keymap的策略为“Don 't touch keymap”
  13. 将语言首选项设置为“33”选项,映射为“US English”
  14. 选择选项“1”运行“Forcevideo”,手动配置X
  15. 选择选项“2”,保持“1024×760”的默认分辨率
  16. 使用默认的“vesa”作为VGA卡
  17. 通过选择选项“0”,保持默认颜色深度为“24”。# EYZ0
  18. 一旦GParted启动,点击“调整大小/移动”图标
  19. 拖动滑块将新的磁盘卷大小设置为所需的大小。在本例中,最大大小为127,035MB。点击“调整大小/移动”按钮开始这个过程
  20. 点击“应用”按钮确认调整大小操作
  21. Hard reset, np:) .调整大小操作完成后,关机
  22. 删除GParted ISO
  23. 登录到Docker虚拟机,通过启动机器docker-machine start default来验证卷大小调整成功
  24. 如果遇到网络问题,请重新启动docker-machine

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

  1. 单击File -> Virtual Media Player

enter image description here

  1. 选择vdi文件,单击properties

enter image description here

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