我一直在 Google、本网站和 VirtualBox 论坛上搜索这个问题,但找不到任何相关内容。由于如今分区可以在系统运行时调整大小、加密、克隆……(即使它是存储正在运行的操作系统的分区),是否可以vboxmanage --compact
在正在运行的客户机的磁盘上执行这些操作?
如果不行,可以对已保存的虚拟机的 .vdi 进行此操作吗?(即在使用“保存机器状态”关闭它之后)
(这是 Debian 11 主机内的 Windows 10 客户机)
答案1
自从Virtualbox 关于该主题的手册关于一些动作的约束相当稀缺,我尝试对其进行一些封闭:
我的测试设置包括 Virtualbox 7.0.8、主机和客户机上的 Debian 11,以及动态分配的 vdi-diskimages。我可以成功运行
vboxmanage modifymedium path/to/harddrive.vdi --compact
以及快照
vboxmanage modifymedium path/to/Snapshots/{uuid}.vdi --compact
Save the machine state
当使用或关闭机器时Shutdown via ACPI-Event
。
我不能VM 运行时,不压缩基础映像也不压缩快照。出现以下错误消息:
VBoxManage: error: Failed to lock media when compacting 'path/to/harddrive.vdi'
VBoxManage: error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component MediumWrap, interface IMedium, callee nsISupports
VBoxManage: error: Context: "Compact(pProgress.asOutParam())" at line 912 of file VBoxManageDisk.cpp
VBoxManage: error: Failed to compact medium!