Kvm

在主動/被動系統之間共享 KVM 虛擬磁碟是否安全

  • November 12, 2018

我有兩個在 Linux 來賓作業系統下執行 DB2 數據庫的 VM。一次只有一個數據庫處於活動狀態,但我希望兩個虛擬機同時執行。

數據庫將儲存在由 SAN 支持的虛擬磁碟映像(考慮為 .img,但對其他格式開放)上,並且該磁碟映像將附加到兩個 VM

如果虛擬磁碟僅由“活動”機器安裝,那麼在每個 VM 中配置虛擬磁碟文件是否安全?

這是我最終在 VM1 和 VM2 之間共享驅動器時所做的事情

創建共享文件系統

  • qemu-img create -f raw sharetest.img
  • 啟動 VM1
  • 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
  • 啟動 VM2
  • virsh attach-disk VM2 <full-path-to-sharetest.img> vdb
  • 登錄到 VM2 並mount /dev/vdb /mnt

這行得通,我已經多次在 VM1 和 VM2 之間來回移動 sharetest.img 文件。

出於好奇,我決定看看如果同時將 sharetest.img 附加到兩個 VM 會發生什麼。我在想我會把它附加到兩個虛擬機上,然後只需要協調掛載/解除安裝命令。不幸的是,雖然我能夠virsh attach-disk在兩個 VM 上使用它來連接它,但它導致 SELinux 出現錯誤,並且 KVM 非常困惑,即使它將驅動器列為已分離,它也不允許來賓作業系統看到驅動器。即使在從兩個系統中分離驅動器之後,如果我再次嘗試重新連接驅動器,它也會說 vdb 已經在使用中。

總之,只要您小心確保磁碟一次只附加到一個 VM,就可以在 VM 之間共享一個磁碟。

那麼問題是如果active系統弄亂了數據庫,那麼你的passive系統就不會有任何好處。

引用自:https://unix.stackexchange.com/questions/479445