当我指定了正确的虚拟机映像目录时,为什么虚拟盒磁盘无法收缩?

当我指定了正确的虚拟机映像目录时,为什么虚拟盒磁盘无法收缩?

这是我的虚拟盒安装目录。

C:\Program Files\Oracle\VirtualBox

这就是我的映像 (linux.vdi) 所在的位置。

C:\Users\hmkhitaryan\dev\vm\linux

现在我想将光盘大小添加到我的虚拟机中,我确实在“虚拟媒体管理器”中缩小了它,现在尝试在终端中执行此操作,正如规范所述,通过此命令

C:\Program Files\Oracle\VirtualBox>VBoxManage modifyhd "C:\Users\hmkhitaryan\VirtualBox VMs\linux.vdi" --resize 133672

并得到这样的错误

    C:\Program Files\Oracle\VirtualBox>VBoxManage modifyhd "C:\Users\hmkhitaryan\dev\vm\linux\linux.vdi" --resize 133672
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage.exe: error: Failed to resize medium
VBoxManage.exe: error: Shrinking is not yet supported for medium 'C:\Users\hmkhitaryan\dev\vm\linux\linux.vdi'
VBoxManage.exe: error: Details: code VBOX_E_NOT_SUPPORTED (0x80bb0009), component MediumWrap, interface IMedium
VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleModifyMedium(struct HandlerArg *)" at line 768 of file VBoxManageDisk.cpp

请任何人帮助我,这个错误的原因可能是什么。

答案1

原因很简单,错误信息中有说明。VirtualBox 目前不支持收缩媒体,只是扩大。

但是,您可以缩小来宾内部的分区,然后使用VBoxManage 修改介质--compact减小 vdi 文件的大小。这将防止它变得大于您新设置的分区大小。

为此,请按照下列步骤操作:

  • 进行备份。
  • 将 VM 从 iso 引导到实时环境(或进入恢复模式并启动 root shell)。
  • 启动分区管理器,例如。格帕特,GNOME 磁盘或使用命令行工具,例如fdisk.
  • 将现有分区缩小到所需的大小。
  • 在现有分区之后创建一个新分区,但不要将其格式化为任何文件系统。让它填满磁盘的其余部分。
  • 用于dd用零填充新分区。例如,如果您之前只有一张磁盘和一个分区,则命令为:dd if=/dev/zero of=/dev/sda2 bs=4M替换sda2为新创建的未使用的分区。sudo如果不在 root shell 中,您很可能必须使用以下命令启动该命令。
  • 关闭虚拟机。
  • VBoxManage在主机上找到该工具。在 Windows 上,它位于"c:\Program Files\Oracle\VirtualBox\VBoxManage.exe",在那里打开一个 cmd。在 *nix 上,它可能在路径上,所以只需在任何地方打开一个终端即可。
  • 找到要缩小的 vdi 文件。复制其完整路径,如果包含空格,请用引号 ( ") 括起来。
  • 使用如下命令压缩 vdi:VBoxManage modifymedium --compact "c:\Users\user\VirtualBox VMs\Ubuntu Desktop\Ubuntu Desktop.vdi"
  • 对于 SSD,这将需要几分钟,对于 HDD,甚至需要几个小时。最后,您的 vdi 文件最多应为内部分区的大小,并且永远不应大于该大小。

相关内容