我的虚拟机磁盘空间不足,这是一个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硬盘(也许你有兴趣在vmware工具中使用磁盘),完整的步骤是:
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)。
附:如果您的新尺寸太小,即使使用新的vdi文件,也会出现相同的错误。
正如Luca在answer中所提到的,所需的步骤是:
VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
VBoxManage modifyhd "cloned.vdi" --resize 51200
VBoxManage clonehd "cloned.vdi" "resized.vmdk" --format vmdk
如果您可以使用VDI图像,则步骤3是可选的。
所有这些步骤也可以在File -> Virtual Media Manager
下的VirtualBox图形用户界面中执行。选择要克隆的驱动器,然后选择Copy
。将打开一个对话框,允许您选择磁盘格式和选项。要调整VDI图像的大小,只需使用底部的滑块(如果它不可见,请单击Properties
)。
最后,您可能还需要更改来宾操作系统中的磁盘大小:
gparted
或kparted
。VirtualBox for Windows
在保留虚拟机设置的同时调整磁盘文件大小!
启动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目录可能包含您为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
的预期扩展名。
现在可以安全地删除目录中剩余的.bak
文件。剩下的是带有更新的.vmdk
数据库的.vbox
大小调整,同时保留了之前保留的VirtualBox Manager设置。
您现在可以使用适当的操作系统工具启动VirtualBox VM Manager并执行VM,以填充新的可用空间。
对于Windows VM,使用命令提示符中的diskpart
从Windows恢复Consule(恢复分区)启动到SELECT DISK 1
,LIST PARTITION
并收集C:\
驱动器的分区号,然后SELECT PARTITION #
。您可以使用EXTEND SIZE=mb
将Windows C:\驱动器的大小调整为适当的值。确保为恢复和启动分区留出空间!由于卷影复制和Windows恢复文件,可以安全地从新的虚拟磁盘大小中减去4096 MB以获得此值。
对于Linux VM,您可以使用VM的磁盘文件启动的现场.ISO
gparted可以在以下位置找到:http://gparted.org/它将直接进入基于图形用户界面的gparted-gtk,您可以从中填充可用空间。
对于PPC / Mac VM,来自Finder的Disk Utility
会让你填补可用空间,但你可能想要考虑gparted Linux选项,因为目前在VirtualBox中启动MacOSX的唯一方法是hackintosh,你不能扩展你的启动到MacOSX时的音量。您可能还想要为gparted
暂时调整VM的设置,以使其启动。 MacOSX分区被gparted识别为HFS
- “Heaping File System”分区。
因为互联网。 ;)你结束了。使用VirtualBox for Windows享受新的重新调整大小的虚拟.vmdk
磁盘映像!
这是一种调整VirtualBox磁盘大小的方法,无论它是固定格式磁盘还是动态格式磁盘。具体来说,它可以防止磁盘为固定格式时出现的错误。
⚠️备份虚拟磁盘。你永远不知道会出现什么问题。
在您的主机上:
cmd
。cd "My VMs"
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
VBoxManage clonemedium "MyOriginalDisk.vdi" "MyNewDisk.vdi" --existing
VBoxManage showmediuminfo "MyNewDisk.vdi"
接下来,在您的客户操作系统上,您需要调整分区大小以使用新的可用空间。
我来到这里是因为我需要为Docker(CoreOS)开发环境调整磁盘大小。
CoreOS文档称没有必要调整操作系统分区的大小 - 这是虚假的。在调整虚拟磁盘大小后,您应该按照这些说明操作并通过GParted调整操作系统分区的大小:
一个快速简单的选择:
vboxmanage clonehd "source-disk.vmdk" "new-disk.vmdk" --existing
警告
如果新磁盘比源短,则会丢失源磁盘上新磁盘大小位置的数据。
您可以在步骤1之前的操作系统内部的源磁盘末尾阻止此deallocating增量空间,其中delta = size(源 - 磁盘) - 大小(新磁盘)。
下载/安装/使用VMWare Workstation并根据您当前的vmdk文件创建新VM,然后您可以调整vmdk的大小。有关此事项的详细信息,请访问Google for VMWare。
只需按照以下步骤操作:
祝贺您,享受您的自由空间。 此视频将帮助您:https://youtu.be/ikSIDI535L0
我能够通过克隆它然后修改和调整大小来调整vmdk的大小。
vboxmanage clonehd "virtualdisk.vmdk" "new-virtualdisk.vdi" --format vdi
vboxmanage modifyhd "new-virtualdisk.vdi" --resize 30720
我在Mac主机上有一个Windows 7客户端,这篇文章非常有帮助。谢谢。
我想补充一点,我没有使用gparted。我这样做了:
甜!我更喜欢使用第三方工具,其中包含有关数据丢失的警告。
干杯!
VBoxManage可以解决问题,但不要忘记你必须使用GParted或其他工具来分配用VBoxManage创建的可用空间。
Have a look to my blog post获取详细信息和一步一步的截图。
实际上,只需要这些命令:
VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
VBoxManage modifyhd "cloned.vdi" --resize 51200
然后,您可以在Virtualbox GUI存储中选择cloned.dvi。
之后,启动虚拟窗口并展开C盘作为Code Chops的方法。
没有必要将* .vdi文件转换回* .vmdk文件。
由于这是一个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
。
您可以使用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
尝试了所有解决方案,但似乎没有任何效果。经过几个小时的挖掘,我发现这个blog帖子和魔法一切正常。我不得不做一些调整,所以这里是修改后的版本。使用Docker版本17.06.0-ce测试,构建02c1d87。
一旦开发人员真正开始容纳他们的应用程序,他们通常会生成大量图像并快速填满默认分配给Docker虚拟机的20GB硬盘空间。为了确保Docker虚拟机有足够的磁盘空间,我们应该将/ dev / sda1的大小调整为更合理的数字。
docker-machine stop default
。vboxmanage clonehd /full/path/to/disk.vmdk /full/path/to/disk_resized.vdi --format VDI --variant Standard
克隆VDI卷。vboxmanage modifyhd /full/path/to/disk_resized.vdi --resize <size in MB>
。default
VM并单击顶部的“设置”设备.docker-machine start default
验证卷调整大小是否成功