如何调整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。 我做到了这一点:
- 启动新的放大的vmdk图像。
- 转到开始并右键单击计算机,然后selectpipe理。
- 点击磁盘pipe理
- 你应该看到你的(在我的情况下)C驱动器灰色的空间
- 右键单击C驱动器,然后select扩展卷。
- 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
。
为了缩小图像大小,我使用以下步骤:
- 在客户机
cat /dev/zero > z;sync;sleep 3;sync;rm -fz
- closures客户机
- 在主机上
VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
- 在主机上
VBoxManage modifyhd cloned.vdi --compact
- 在主机上
VBoxManage clonehd "cloned.vdi" "resized.vmdk" --format vmdk
因为我需要为我的Docker(CoreOS)开发环境调整磁盘大小,所以我到了这里。
CoreOS的文档说,没有必要调整操作系统分区 – 这是假的。 调整虚拟磁盘大小后,您应该按照这些说明并通过GParted调整操作系统分区:
适用于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 1
, LIST 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️备份虚拟磁盘。 你永远不知道会出现什么问题。
在你的主机上:
-
打开一个terminal窗口。
在Windows上:打开命令提示符
cmd
。 -
转到您要resize的虚拟磁盘的目录。 例如:
cd "My VMs"
-
使用所需的文件名,大小(以兆字节)和格式(
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
-
将原始磁盘复制到新磁盘。
VBoxManage clonemedium "MyOriginalDisk.vdi" "MyNewDisk.vdi" --existing
-
resize完成! 如果您想要,您可以检查新磁盘的属性:
VBoxManage showmediuminfo "MyNewDisk.vdi"
-
将虚拟机更改为使用新磁盘。
接下来,在您的客户操作系统上,您需要调整分区大小以使用新的可用空间。
一个简单而快捷的选项:
- closures机器
- 创build具有所需大小的新虚拟盒子磁盘
-
将内容从旧磁盘移动到新磁盘中:
vboxmanage clonehd "source-disk.vmdk" "new-disk.vmdk" --existing
-
打开机器
- 您可能需要调整操作系统中的分区大小来填充磁盘的其余部分
警告
如果新磁盘比源磁盘短,则会丢失位于源磁盘上新磁盘大小位置的数据 。
在步骤1之前,您可以在操作系统内的源磁盘末尾防止释放增量空间,其中delta = size(源磁盘)大小(新磁盘)。
下载/安装/使用VMWare工作站并创build新的虚拟机基于您当前的vmdk文件,然后您可以调整您的vmdk。 有关这个问题谷歌VMWare的详细信息。
只需要按照以下步骤操作:
- closures你的机器。
- 右键单击虚拟机名称>设置>存储
- 点击Controller:SATA> Add Hard Disk。
- select新的硬盘驱动器types大小,并点击创build。
- 丢弃机器状态。
- 插入Ubuntu Live CD。
- 从Ubuntu的启动光盘。
- 打开“gparted”(已安装,无需安装)。
- 检查系统是否看到您新build立的硬盘。
- 打开terminal。
- 键入下面的代码。
- sudo dd if = / dev / sda of = / dev / sdb(第一个是旧的分区path,第二个是新的分区path)。
- 等到它完成复制数据(此步骤可能需要一些时间根据您的主机规格)。
- 完成复制后,返回到gparted并select刷新设备。
- 在执行dd命令之后,select新的分区/ dev / sdb,对旧分区必须是典型的。
- 它将显示扩展的空间作为未定位的数据。
- 删除交换分区/扩展分区。
- 右键单击根分区/ dev / sdb> Resize
- 分配整个空间没有交换分配。
- 创build新的扩展分区>select扩展>创build
- 创build新的Linux交换分区>selectlinux-swap>创build
- 现在关掉你的跑步机。
- 右键单击机器>设置>存储。
- popupUbuntu的生活光盘。
- 右键点击旧的硬盘>删除附件。
- 现在你可以从新创build的硬盘启动你的虚拟机了。
- 通过inputdf -kh命令来检查存储空间。
- 它必须告诉你新的大小。
恭喜,享受您的自由空间。
这个video将帮助你: https : //youtu.be/ikSIDI535L0
- Vagrant + Chef:提供错误“虚拟机上缺lessChef所需的共享文件夹”。
- Virtualbox主机 – 访客networking设置
- 如何从stream浪的virtualbox机器连接主机PostgreSQL
- Windows10上使用VirtualBox的stream氓软件:无法在您的PATH上find“Rsync”
- 强烈build议在生产中使用环回设备
- Vagrant / VirtualBox / Apache2奇怪的caching行为
- 如何打包未使用vagrant up命令创build的现有VM?
- Virtualbox共享文件夹权限
- 当我命令“brew cask install virtualbox”或“brew cask search google-chrome”时发生自制错误