VirtualBox:快照时不保留连接的设备更改(如何?)

VirtualBox:快照时不保留连接的设备更改(如何?)

(这与我的类似 如何告诉 virsh:保存虚拟机和虚拟磁盘的状态,但不保存附加磁盘?但对于 VirtualBox 和原始设备)

如何告诉 VirtualBox 在快照时不保留原始连接设备的状态?细节:

  • 我在主机上创建了一个VMDK,如下所示:

VBoxManage internalcommands createrawvmdk -filename sdb.vmdk -rawdisk /dev/sdb

并附在客人身上。

  • /dev/sdb 现在在客户机上显示为纯设备文件。

  • 我的聪明想法:挂载 /dev/sdb,我在那里所做的任何更改都将在快照中保留,因为 VirtualBox 不会保存 /dev/sdb 的状态

  • 我错了。默认情况下,VirtualBox 将保存 /dev/sdb 的状态:如果您恢复到较早的快照,您在 /dev/sdb 上所做的任何操作都将被清除。

  • 换句话说,我的狡猾计划失败了。

  • 有什么办法让它发挥作用吗?我意识到我可以在主机上挂载 /dev/sdb,然后让来宾挂载它或 sshfs 它或其他东西,但是是否有一个 VirtualBox 选项显示“快照时不保留/恢复 /dev/sdb 状态”?

  • 我正在尝试使用虚拟机来确定如何安装 CentOS 7.2,理想情况下,我希望来宾尽可能接近真实的系统。

我要感谢@gilles 的出色回答,但事实证明它不太有效。

当我关闭、分离 /dev/sdb、拍摄快照,然后恢复快照并重新附加 /dev/sdb 时,我看到以下内容(单击查看完整大小):

在此输入图像描述

基本上,VirtualBox 拒绝接触 /dev/sdb,即使我附加它。相反,它使用差异磁盘来存储我所做的任何更改,并且当我恢复快照时这些更改将被还原。

您实际上可以在媒体管理器中看到差异磁盘:

在此输入图像描述

但我找不到用它们做任何有用的事情的方法。

我将留下我的赞成票和对 giles 答案的复选标记,但将返回使用更正常的方法在来宾上挂载 /dev/sdb。

答案1

您必须在创建快照之前卸载设备。否则,在恢复时,设备的状态将与来宾内核中磁盘缓存的状态不匹配,这将导致大规模损坏。

卸载设备后,在创建快照之前将其与虚拟机分离。

相关内容