我需要在拍摄快照后写入 VirtualBox 客户机的硬盘(我无法修改原始备份文件(VDI、dd 等等)。我希望 VBox 中有某种方法可以通过 VBoxManage 命令或它们的 API 来修改差异快照磁盘(非常类似于 VMWare 允许您通过其管理命令/api 直接读取和写入磁盘扇区,而无需与原始文件交互)。
我唯一的解决方案是编写一系列任务脚本,使用 VBoxManage storageattach 插入可启动 CD、挂载它找到的任何分区、执行命令并自动关闭。我宁愿在机器关闭的情况下与它交互。
理想情况下,我希望 VirtualBox 可以在 Linux 主机上公开类似虚拟块设备的东西,以便我可以使用所需的任何驱动程序安装它并执行必要的任务。
我知道有工具可以挂载 VDI,但由于多种原因,这些工具无法使用。最重要的是我无法修改后备存储(因此需要快照),其次是 VDI 并不总是存在(iSCSI 目标可能是后备存储,而不是本地文件)
VBox 有一些使用 VBoxManage guestcontrol 的命令(http://www.virtualbox.org/manual/ch08.html),但它要求计算机处于开启状态、安装来宾附加组件,并且来宾帐户具有凭据。它也不允许任何低于文件级别访问的操作。
答案1
改进的解决方法:
您可以创建一个可启动的 CD 映像(或一个附加磁盘,该磁盘将成为启动磁盘,之后您可以将其移除),它不会挂载磁盘,但会启动 sshd。主机上的脚本可以通过 ssh 连接并通过 sshfs 导出磁盘的设备文件。但我必须承认,我从未尝试过通过 sshfs 访问设备文件。如果这不可能,那么我的下一次尝试是通过 FUSE 等将设备文件映射到常规文件。
答案2
根据与 VirtualBox 开发人员的对话,这是不可能的。他们唯一的建议是使用可执行必要操作的可启动 CD。