Estou trabalhando nesse mesmo problema. Eu consegui isso para trabalhar de duas maneiras diferentes.
Configuração
Eu estou escolhendo construir meus sistemas guest kvm em cima de LVs usando o formato raw. Eu não sei que isso é melhor do que tê-los em arquivos de imagem nos LVs, mas é com isso que estou indo. Seria muito mais simples usar o drbd para sincronizar a partição física do LVM, mas eu quero rodar vários LVs, e ter um rodando em hostA
(requer drbd
primary role) e o outro em hostB
(também requer drbd
principal papel). Então, estou presa a menos que seja brilhante, mas estou relutante em adotar outra tecnologia neste momento. Minha pilha de armazenamento já está:
KVM guest
drbd (drbd1)
lvm2 logical volume (guestlv)
lvm2 volume group (vg)
lvm2 physical volume (crypt)
dm-crypt (crypt)
gpt partitions (md_d0p1=root, md_d0p2=swap, md_d0p3=crypt)
mirror-RAID (md_d0)
gpt partition (single)
hard drive (2)
O maior problema que tenho que resolver é que virt-manager
não reconhece ou deixa você trabalhar com drbd
volumes ( virt-install
e vmbuilder
não funcionam para mim). Então, aqui está o que eu fiz:
hostA
e hastB
estão executando o Ubunut 14.04LTS, instalado com os pacotes OpenSSH Server e Host de Virtualização, com lvm2
e drbd8-utils
também instalados. Cada um tem 4 NICS, ligados em pares. bond0
é vinculado a br0
e usado pelos convidados, bond1
não é vinculado e usa uma sub-rede reservada para drbd
.
Método 1 do KVM + DRBD
Parte A - Criar o convidado do KVM
- Crie um LV em
hostA
.
- Copie
ubuntu-14.04.1-server-amd64.iso
para /var/lib/libvirt/images
- Em um cliente que executa o Ubuntu Desktop, execute
virt-manager
.
- Conecte-se a
hostA
.
- Abra a janela
Details
e use a guia Storage para incluir o grupo de volumes LVM.
- Configure uma nova máquina, usando a instalação ISO, o LV para armazenamento,
br0
para a rede.
- Reinicie, etc., verifique se o seu LV está funcionando muito bem.
Parte B - Configurar replicação
- Encerre o sistema convidado do KVM.
- Use
lvresize
para aumentar o tamanho de LV em 1 lun. %código%
- Inicialize os metadados
lvresize -l +1 vg/guestlv
. %código%
- Crie o arquivo de recurso
drbd
.
%código%
- em
drbdadm create-md /dev/vg/guestlv
- crie um LV de tamanho idêntico (o novo tamanho +1!), usando o grupo de volumes e os nomes lv como no arquivo de recursos.
- Executar
drbd
- Executar
file:/etc/drbd.d/guest.res
resource guest {
device /dev/drbd1;
meta-disk internal;
startup {
become-primary-on hostA;
wfc-timeout 30;
outdated-wfc-timeout 20;
degr-wfc-timeout 30;
}
net {
cram-hmac-alg sha1;
shared-secret sync_disk;
}
syncer {
rate 100M;
verify-alg sha1;
}
on hostA {
address 192.168.2.1:7789;
disk /dev/vg/guestlv;
}
on hostB {
address 192.168.2.2:7789;
disk /dev/vg/guestlv;
}
}
- Executar
hostB
- em
drbdadm create-md /dev/vg/guestlv
- Executar
drbdadm connect --discard-my-data guest
- Executar
drbdadm up guest
Parte C - Mude o dispositivo drbd para a configuração do KVM
- Em
hostA
, execute drbdadm up guest
- Encontre a linha
drbdadm primary guest
e altere para hostA
- Salve e saia, inicie sua VM, verifique se ela funciona. Desligue.
- Aguarde até que
virsh edit guestlv
sync termine.
- Executar
<source dev='/dev/vg/guestlv'/>
.
- Em
<source dev='/dev/drbd1'/>
, execute drbd
.
- Na sua estação de trabalho, use
drbdadm secondary guest
para criar um novo convidado com algum volume de lixo eletrônico para o armazenamento. Desligue assim que a instalação começar.
- Em
hostB
, use drbdadm primary guest
e defina o armazenamento como virt-manager
. Inicie a VM, verifique se ela funciona, etc.
KVM + Método DRBD 2
Muito semelhante ao acima, mas
- Configure
hostB
, sincronize.
- Crie um convidado KVM usando um volume de lixo eletrônico para o armazenamento, cancele a instalação.
- Use
virsh edit guestlv
para trocar o /dev/drbd1
storage.
- Inicie e execute a instalação.
Às vezes isso funcionava, às vezes eu recebia um erro de parada de show na instalação do grub para
/dev/drbd1
.
- Se você conseguir trabalhar, desligue a VM, troque a
virsh-edit
primary & secundário, configure seu outro host, teste, etc.