(这与我的类似 如何告诉 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
您必须在创建快照之前卸载设备。否则,在恢复时,设备的状态将与来宾内核中磁盘缓存的状态不匹配,这将导致大规模损坏。
卸载设备后,在创建快照之前将其与虚拟机分离。