Eu tenho duas VMs que executam um banco de dados DB2 em um sistema operacional convidado Linux. Apenas um banco de dados estará ativo por vez, embora eu queira que as duas VMs estejam sendo executadas ao mesmo tempo.
O banco de dados seria armazenado em uma imagem de disco virtual (pensando em .img, mas aberta a outros formatos) apoiada por uma SAN e essa imagem de disco seria anexada a ambas as VMs
É seguro ter o arquivo de disco virtual configurado em cada VM se o disco virtual for montado apenas pela máquina "ativa"?
Bem, o problema é que se o
active
sistema bagunçar o banco de dados, seupassive
sistema não fará nenhum bem.Aqui está o que acabei fazendo ao compartilhar uma unidade entre VM1 e VM2
Crie o sistema de arquivos compartilhado
qemu-img create -f raw sharetest.img
virsh attach-disk VM1 <full-path-to-sharetest.img> vdb
mount /dev/vdb /mnt
Neste ponto, você pode ler/gravar arquivos na unidade compartilhada usando /mnt.Para mover este sistema de arquivos faça o seguinte
umount /mnt
para desmontar o sistema de arquivos da VM1virsh detach-disk VM1 vdb
virsh attach-disk VM2 <full-path-to-sharetest.img> vdb
mount /dev/vdb /mnt
Isso funciona, eu movi o arquivo sharetest.img entre VM1 e VM2 muitas vezes.
Só por curiosidade, decidi ver o que acontece se eu anexar sharetest.img a ambas as VMs ao mesmo tempo. Eu estava pensando em anexá-lo às duas VMs e só preciso coordenar os comandos de montagem / desmontagem. Infelizmente, embora eu pudesse usar
virsh attach-disk
em ambas as VMs para anexá-lo, isso causou um erro com o SELinux e o KVM ficou realmente confuso, não permitindo que o sistema operacional convidado visse a unidade, embora listasse a unidade como desanexada. Mesmo depois de desconectar a unidade de ambos os sistemas, se eu tentasse reconectar a unidade novamente, diria que o vdb já estava em uso.Em resumo, contanto que você tenha cuidado para garantir que o disco seja anexado apenas a uma VM por vez, não há problema em compartilhar um disco entre as VMs.