Recentemente tive que fazer uma clonagem de uma máquina virtualizada com XEN, onde os vbd’s(Virtual Block Device) foram criados com LVM2. Vou postar as passos que fiz para conseguir isso.
Cenário
Tenho 2 Hosts Físicos virtualizadas com XEN no SLES 10, onde os vdb’s, para as máquinas virtuais foram criados sobre o LVM2
Fazendo backup do VBD da máquina virtual (Host 1)
1) Montando local de destino do arquivo de backup no Host XEN.
Tenho uma máquina windows que tem bastante espaço sobrando, então compartilhei uma pasta e joguei a imagem lá. Se você quiser pode gravar o backup no próprio host XEN.
| hostxen1:/ # mkdir -p /media/storage hostxen1:/ # mount.cifs //windowsxp/storage /media/storage -o user=renetf -p password: (digite sua senha de acesso) |
.
2) Criando snapshot da partição em LVM2 e fazendo o backup
Snapshot é uma grande funcionalidade do LVM. Com o snapshot é possível criar uma imagem fixa no tempo de uma partição em LVM enquanto a partição continua sendo usada, no meu caso, pela máquina virtual. Dessa forma eu posso fazer o backup da partição sem parar o servidor. Para a opção -L é preciso definir o tamanho do snapshot, este tamanho deve rodar em torno de 15% a 20% do tamanho da partição original, no meu caso a partição tem 10G então defini como 2G o tamanho do snapshot.
| hostxen1:/ # lvcreate -L 2G -s -n dbpartition1 /dev/system/partition1 hostxen1:/ # dd if=/dev/system/dbpartition1 |gzip -7 | dd of=/media/storage/partition1.gz hostxen1:/ # lvremove /dev/system/dbpartition1 |
.
Restaurando a partição LVM e criando a máquina virtual (Host 2)
1) Restaurando backup da partição LVM
No host de destino refaça o passo 1 para montar a pasta remota onde foi gravado o arquivo do backup da partição. Em seguida use os comandos abaixo para restaurar a imagem na nova partição partition2.
| hostxen2:/ # lvcreate -L 10G -n partition2 system hostxen2:/ # cat /media/storage/partition1.gz | gunzip | dd of=/dev/system/partition2 |
.
2) Criando a máquina virtual
Rode o comando uuidgen para criar uma id única para a nova máquina virtual
| hostxen2:/ # uuidgen 10d81d43-47d9-4796-9dd4-e706901e6b7a |
.
Copie o arquivo da máquina virtual anterior e atualize o uuid. O arquivo de configuração da VM(Virtual Machine) deve ficar parecido com o código abaixo.
| ostype=”sles10″ name=”vm_new” memory=1024 vcpus=2 uuid=”10d81d43-47d9-4796-9dd4-e706901e6b7a” on_crash=”destroy” on_poweroff=”destroy” on_reboot=”restart” localtime=0 builder=”linux” bootloader=”/usr/lib/xen/boot/domUloader.py” bootargs=”–entry=xvda1:/boot/vmlinuz-xen,/boot/initrd-xen” extra=” ” disk=[ 'phy:/dev/system/partition2,xvda,w', ] vif=[ 'mac=00:16:3e:53:a8:7a,bridge=xenbr1', ] vfb=['type=vnc,vncunused=1'] |
.
Por último dê o comando para criar a máquina virtual.
| hostxen2:/ # xm create vm_new |
.
No meu caso eu desliguei a VM anterior antes de criar a nova, pois estava migrando de um host físico para outro. Caso não fizesse isso iria ter problemas pois as duas máquinas teriam o mesmo IP, para resolver isso deve-se alterar o arquivo de configuração de rede dentro da nova partição restaurada.
Por hoje é só, abraços.







Renê Francisco, boa noite.
Espero que esteja bem. Parabéns por este tópico, estou desenvolvendo um projeto na faculdade onde queria compartilhar algumas idéias com vossa pessoa. Tenho uma parte a se realizar que preciso fazer alguns passos parecidos com o que você descreveu. Sendo possível, conversamos por e-mail, msn ou skype.
e-mail: wendelmineiro@yahoo.com.br
msn: wend.el.1@hotmail.com
skype: wendel.luis.bernardes.ferreira
No aguardo, desde já agradeço.
Boa noite.
opa, obrigado pela excelente explicação
Comente