Answers:
如果您想结束使用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)。
PS:如果您的新大小太小,即使使用新的vdi文件,也会遇到相同的错误。
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"
如果您指定实际路径,该命令将由于崩溃VBoxManage: error: Cannot register the hard disk
,因为VBox认为它已经在其他地方定义了。
clonehed
不断创建不支持的卷--resize
。事实证明,追加--format vdi
到clonehd
至关重要!
我能够通过克隆然后修改和调整大小来调整vmdk的大小。
vboxmanage clonehd "virtualdisk.vmdk" "new-virtualdisk.vdi" --format vdi
vboxmanage modifyhd "new-virtualdisk.vdi" --resize 30720
VBoxManage.exe: error: Code CO_E_SERVER_EXEC_FAILURE (0x80080005)
尝试在Windows上运行此命令时,请以非管理员身份运行命令提示符。
virtualdisk.vmdk
:vboxmanage clonehd virtualdisk.vmdk "new-virtualdisk.vdi" --format vdi vboxmanage modifyhd "new-virtualdisk.vdi" --resize 30720
VBoxManage可以达到目的,但是请不要忘记必须使用GParted或其他工具来分配使用VBoxManage创建的可用空间。
看看我的博客文章以获取详细信息和分步截图。
实际上,仅需要以下命令:
VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
VBoxManage modifyhd "cloned.vdi" --resize 51200
然后,您可以在Virtualbox GUI存储中选择cloned.dvi。
之后,启动虚拟窗口并展开您的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
VM,然后单击顶部的“设置”齿轮。docker-machine start default
您可以使用Vmware Player调整vmdk的大小。如果您希望将其转换为vmdk格式,则会删除往返转换(在其他帖子中已注明)。只要确保将vmdk添加到vmware中时,不要在提示时单击升级格式,请保留当前格式,以防VirtualBox不接受它。
如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图形用户界面中的下执行File -> Virtual Media Manager
。选择要克隆的驱动器,然后选择Copy
。将打开一个对话框,允许您选择磁盘格式和选项。要调整VDI图像的大小,只需使用底部的滑块(Properties
如果看不见,请单击)。
最后,您可能还需要在来宾操作系统中更改磁盘大小:
gparted
或kparted
。Windows版VirtualBox
在保留虚拟机设置的同时调整磁盘文件的大小!
启动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格式的数据库文件,其中包含为VM配置的设置。重命名此文件,带有.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
键盘快捷键来复制该令牌。
.vbox.bak
在文本编辑器(如Notepad ++)中打开文件。您将看到一个类似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
目录中剩余的文件。剩下的就是使用以前保留的VirtualBox Manager设置.vmdk
,通过更新的.vbox
数据库调整大小。
现在,您可以使用适当的操作系统工具来启动VirtualBox VM Manager并执行VM,以填充新的可用空间。
对于Windows VM,请使用diskpart
从Windows Recovery Consule(恢复分区)引导到的命令提示符SELECT DISK 1
,LIST PARTITION
并收集C:\
驱动器的分区号,然后单击SELECT PARTITION #
。您可以使用将EXTEND SIZE=mb
Windows C:\驱动器的大小调整为适当的值。确保为恢复和引导分区留出空间!由于卷影复制和Windows恢复文件的缘故,从新的虚拟磁盘大小中减去4096 MB可以安全地获得此值。
对于Linux VM,.ISO
可以在以下位置找到可以通过VM的磁盘文件启动的gparted 实时版本:http : //gparted.org/ 。它将直接带您进入基于图形用户界面的gparted-gtk,您可以在其中填充您的可用空间。
对于PPC / Mac VM,Disk Utility
通过Finder可以帮助您填充可用空间,但是您可能要考虑使用gparted Linux选项,因为当前在VirtualBox中启动MacOSX的唯一方法是hackintosh,并且您无法扩展其容量引导到MacOSX时。您可能还需要临时调整VM的设置gparted
,以使其启动。MacOSX分区被gparted识别为HFS
“堆文件系统”分区。
因为上网。;)您完成了。.vmdk
使用适用于Windows的VirtualBox 享受新调整大小的虚拟磁盘映像!
vboxmanage list hdds
。要删除不需要的内容: vboxmanage closemedium disk <filename.vmdk>
。查看SATA端口号,设备号: vboxmanage showvminfo <vmName>
。要分离盘: vboxmanage storageattach <vmName> --storagectl SATA --port <p#> --device <d#> --medium none
这是一种调整VirtualBox磁盘大小的方法,而不管它是固定格式磁盘还是动态格式磁盘。具体来说,它可以防止磁盘为固定格式时出现错误。
Backup️备份虚拟磁盘。您永远都不知道可能出什么问题。
在您的主机上:
打开一个终端窗口。
在Windows上:打开命令提示符
cmd
。
转到包含您要调整大小的虚拟磁盘的目录。例如:
cd "My VMs"
使用所需的文件名,大小(以兆字节为单位)和格式(Standard
(动态)或Fixed
)创建一个新的VirtualBox磁盘。例如,创建一个名为50 GB的固定格式磁盘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
将原始磁盘复制到新磁盘。
VBoxManage clonemedium "MyOriginalDisk.vdi" "MyNewDisk.vdi" --existing
调整大小!您可以根据需要检查新磁盘的属性:
VBoxManage showmediuminfo "MyNewDisk.vdi"
将虚拟机更改为使用新磁盘。
接下来,在来宾OS上,您需要调整分区的大小以使用新的可用空间。
我到达这里是因为我需要为Docker(CoreOS)开发环境调整磁盘大小。
CoreOS文档说,不需要调整OS分区的大小-这是虚假的。调整虚拟磁盘大小后,应遵循以下说明并通过GParted调整操作系统分区的大小:
快速简单的选择:
将内容从旧磁盘移动到新磁盘内部:
vboxmanage clonehd "source-disk.vmdk" "new-disk.vmdk" --existing
开机
警告
如果新磁盘比源磁盘短,您将丢失源磁盘上新磁盘大小位置的数据。
您可以在步骤1之前在OS内部源磁盘的末尾阻止这种释放增量空间的操作,其中增量= size(源磁盘)-size(新磁盘)。
您只需按照以下步骤操作:
恭喜,享受您的自由空间。
该视频将帮助您:https :
//youtu.be/ikSIDI535L0