我在虚拟机磁盘(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镜像的大小?
我在虚拟机磁盘(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镜像的大小?
如果您想重新获得一个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文件并从该文件启动以调整驱动器的大小(在virtualbox设置中选择iso文件)。
附言:如果您的新大小太小,即使使用新的vdi文件也会出现相同的错误。
我能通过克隆vmdk文件并修改和调整大小来改变其大小。
vboxmanage clonehd "virtualdisk.vmdk" "new-virtualdisk.vdi" --format vdi
vboxmanage modifyhd "new-virtualdisk.vdi" --resize 30720
我在Mac主机上有一个Windows 7客户端,这篇文章非常有用。谢谢。
我想补充一点,我没有使用gparted。我的做法是:
太好了!我更喜欢这种方法,而不是使用第三方工具(带有数据丢失警告)。
干杯!
vmdk's :
步骤:
1) 首先转换为“.vdi”- VBoxManage clonehd v1.vmdk v1.vdi --format vdi
2) 使用命令行扩展大小(参考:tvial's博客以获得逐步信息)
或者
从VirtualBox中的虚拟媒体管理器扩展。
[现在-在VM内部]
3) 扩展驱动器的大小,使用新的分配(例如,对于在虚拟机上运行的Ubuntu:使用GParted)
4) 扩展文件系统 - 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]
5) 扩大"/home" - resize2fs <文件系统标识符>
说明:
$ 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% /
您的系统现在应该准备就绪,具有扩展分配!
实际上,只需要这些命令:
VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
VBoxManage modifyhd "cloned.vdi" --resize 51200
然后,在Virtualbox GUI存储中选择cloned.dvi。
之后,按照Code Chops的方法启动虚拟Windows并扩展C盘。
无需将*.vdi文件转换回*.vmdk文件。
由于这是一个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
。
尝试了这里的所有解决方案,但似乎都没有效果。经过数小时的挖掘,我发现了这篇博客文章,就像魔法一样,一切都有效了。我需要做一些小调整,所以这是修改后的版本。测试使用的Docker版本为17.06.0-ce,构建版本为02c1d87。
一旦开发人员真正开始容器化他们的应用程序,他们通常会生成大量的镜像,并迅速填满默认分配给Docker虚拟机的20GB硬盘空间。为确保Docker虚拟机有足够的磁盘空间,我们应该将/dev/sda1的大小调整为更合理的数字。
停止Docker虚拟机docker-machine stop default
。
Boot2Docker软件包安装程序附带有一个VMDK卷,VirtualBox的本地工具无法调整其大小。为了调整Docker磁盘容量,首先克隆默认VMDK卷的VDI卷vboxmanage clonehd /full/path/to/disk.vmdk /full/path/to/disk_resized.vdi --format VDI --variant Standard
。
vboxmanage modifyhd /full/path/to/disk_resized.vdi --resize <size in MB>
。default
虚拟机并点击顶部的“设置”齿轮图标。docker-machine start default
来验证卷的调整大小是否成功。您可以使用Vmware播放器来调整vmdk的大小。这将消除往返转换(在其他帖子中注意到),如果您想保持vmdk格式,那么就不需要进行转换。只需确保在将vmdk添加到vmware时,当提示时不要单击升级格式,保留当前格式以防VirtualBox无法接受它。
为了缩小图像大小,我使用以下步骤:
cat /dev/zero > z;sync;sleep 3;sync;rm -f z
VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
VBoxManage modifyhd cloned.vdi --compact
VBoxManage clonehd "cloned.vdi" "resized.vmdk" --format vmdk
如 Luca 在 回答 中所提到的,需要执行以下步骤:
将 VMDK 镜像克隆为 VDI 格式
VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
调整 VDI 镜像大小
VBoxManage modifyhd "cloned.vdi" --resize 51200
再次克隆回 VMDK 格式
VBoxManage clonehd "cloned.vdi" "resized.vmdk" --format vmdk
如果可以使用 VDI 镜像,则步骤 3 是可选的。
所有这些步骤也可以在 VirtualBox 图形用户界面中进行,在 文件 -> 虚拟介质管理器
下选择要克隆的驱动器,然后选择 复制
。会打开一个对话框,允许您选择磁盘格式和选项。要调整 VDI 镜像的大小,只需使用底部的滑块(如果不可见,请单击 属性
)。
最后,您可能还需要在客户机操作系统中更改磁盘大小:
gparted
或 kparted
。
VBoxManage clonehd“〜/path/to/symlink/packer-centos-6.5-x86_64-disk1.vmdk”“/media/k0pernikus/thatFatSlowDisk/cloned_packer-centos-6.5-x86_64-disk1.vdi”
如果您指定实际路径,由于VBox认为它已在其他地方定义,命令将崩溃,出现“VBoxManage:error:Cannot register the hard disk”。 - k0pernikusclonehed
会创建不受--resize
支持的卷。原来在clonehd
后面添加--format vdi
是至关重要的! - datv