我有两个在 Linux 来宾操作系统下运行 DB2 数据库的 VM。一次只有一个数据库处于活动状态,但我希望两个虚拟机同时运行。
数据库将存储在由 SAN 支持的虚拟磁盘映像(考虑为 .img,但对其他格式开放)上,并且该磁盘映像将附加到两个虚拟机
如果虚拟磁盘仅由“活动”计算机挂载,那么在每个虚拟机中配置虚拟磁盘文件是否安全?
答案1
问题是,如果active
系统搞乱了数据库,那么你的passive
系统就没有任何用处。
答案2
这是我在 VM1 和 VM2 之间共享驱动器时最终做的事情
创建共享文件系统
qemu-img create -f raw sharetest.img
- 启动虚拟机1
virsh attach-disk VM1 <full-path-to-sharetest.img> vdb
- 以 root 身份登录 VM1,使用 gparted 将文件系统放在 /dev/vdb(或 mkfs)上
mount /dev/vdb /mnt
此时,您可以使用 /mnt 将文件读取/写入到共享驱动器。
要移动此文件系统,请执行以下操作
umount /mnt
从 VM1 卸载文件系统virsh detach-disk VM1 vdb
- 启动虚拟机2
virsh attach-disk VM2 <full-path-to-sharetest.img> vdb
- 登录 VM2 并
mount /dev/vdb /mnt
这有效,我已在 VM1 和 VM2 之间来回移动 sharetest.img 文件多次。
出于好奇,我决定看看如果我同时将 sharetest.img 附加到两个虚拟机会发生什么。我想将它附加到两个虚拟机,然后只需要协调安装/卸载命令。不幸的是,虽然我能够virsh attach-disk
在两个虚拟机上使用它来连接它,但它导致了 SELinux 的错误,并且 KVM 非常困惑,不允许来宾操作系统看到该驱动器,即使它将驱动器列为已分离。即使从两个系统分离驱动器后,如果我尝试再次重新连接驱动器,它也会说 vdb 已在使用中。
总之,只要您小心确保磁盘一次仅附加到一台虚拟机,就可以在虚拟机之间共享磁盘。