1-) Estou armazenando as VMs no LVM:
# lvcreate -Ay -L 60G -n vm00 Vol_LVM
# lvcreate -Ay -L 60G -n vm01 Vol_LVM
# lvcreate -Ay -L 60G -n vm02 Vol_LVM
2-) Estou usando o “partimage-0.6.7_beta2.tar.bz2″, pois a versão stable não funciona bem em 64 bits:
3-) A primeira VM deve ser instalada/ configurada manualmente/normalmente. Depois você pode tirar uma cópia dela:
# kpartx -a /dev/mapper/Vol_LVM-vm01
# partimage -z1 save /dev/mapper/Vol_LVM-vm01p1 /LVM/vm01p1.partimg.gz
ou
# partimage -z0 -c -d -f0 save /dev/mapper/Vol_LVM-vm01p1 /LVM/vm01p1.partimg
# kpartx -d /dev/mapper/Vol_LVM-vm01
PS: Note que se você usar compressão (-z1) a geração da imagem vai demorar mais para ser criado, porém com o tamanho bem menor (515M vs 3.7GB) . A restauração da mesma também será mais lenta.
4-) Com base na primeira VM:
# fdisk -l /dev/mapper/Vol_LVM-vm00
Disk /dev/mapper/Vol_LVM-vm00: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/mapper/Vol_LVM-vm00p1 * 2 7395 59392305 83 Linux
/dev/mapper/Vol_LVM-vm00p2 7396 7832 3510202+ 82 Linux swap / Solaris
Você poderá preparar um arquivo, por exemplo, /tmp/parttable, com as especificações das demais partições.
1,7394,83,*
7395,,82,-
Estou usando uma partição primária para o raiz “/” (tipo 83) com ~ 60 GB e o restante para swap (tipo 82).
Você poderá usar o sfdisk e especificar os dados em: sectors, blocks, cylinders ou megabytes.
5-) Crie as partições para a segunda VM:
# dd if=/dev/zero of=/dev/mapper/Vol_LVM-vm01 count=1 bs=512
# sfdisk -uC /dev/mapper/Vol_LVM-vm01 < /tmp/parttable
Se preferir, simplesmente faça o processo manualmente:
# fdisk /dev/mapper/Vol_LVM-vm01
6-) Crie a SWAP para o segundo device:
Será necessário usar o “kpartx” para “mapear” as partições que existem dentro do device LVM:
# kpartx -a /dev/mapper/Vol_LVM-vm01
# ll /dev/mapper/Vol_LVM-vm01*
# mkswap /dev/mapper/Vol_LVM-vm01p2
7-) Restaure a imagem da primeira VM:
- Restauração com GZIP:
# partimage restore /dev/mapper/Vol_LVM-vm02p1 /LVM/vm01p1.partimg.gz
Time elapsed: 10m:59sec
Speed: 5.16 GiB/min
Data copied: 56.64 GiB
- Restauração sem GZIP:
# partimage restore /dev/mapper/Vol_LVM-vm03p1 /LVM/vm01p1.partimg.000
Time elapsed: 1m:15sec
Speed: 2.90 GiB/min
Data copied: 3.62 GiB
Monte a VM e troque endereços de IP, hostname e MAC Address:
# mount /dev/mapper/Vol_LVM-vm01p1 /mnt/xen/
# vi /mnt/xen/etc/sysconfig/network-scripts/ifcfg-eth0
# vi /mnt/xen/etc/sysconfig/network
# vi /mnt/xen/etc/hosts
PS: Use o macgen.py para alterar o MAC address:
$ cat macgen.py
#! /usr/bin/python
# macgen.py script generates a MAC address for Xen guests
#
import random
mac = [ 0×00, 0×16, 0×3e,
random.randint(0×00, 0×7f),
random.randint(0×00, 0xff),
random.randint(0×00, 0xff) ]
print ‘:’.join(map(lambda x: “%02x” % x, mac))
9-) Desmonte a partição, e arrume seu /etc/xen/vm02:
# umount /mnt/xen
# kpartx -d /dev/mapper/Vol_LVM-vm02
Utilize o “uuidgen” para gerar um novo UUID para sua VM.
Não esqueça de trocar também o MAC no campo “vif” e o device LVM, ex:
name = “vm02″
uuid = “82f89076-487e-4de5-ab4a-99ce07c586eb”
maxmem = 1000
memory = 800
vcpus = 1
bootloader = “/usr/bin/pygrub”
on_poweroff = “destroy”
on_reboot = “restart”
on_crash = “restart”
vfb = [ “type=vnc,vncunused=1,keymap=en-us” ]
disk = [ “phy:/dev/Vol_LVM/vm01,xvda,w” ]
vif = [ “mac=00:16:3e:5a:02:a6,bridge=xenbr0″ ]
10-) Inicie a VM e corra para o abraço:
# xm create vm02 -c
Em caso de problemas, consulte este artigo: Xen: Dicas rápidas e problemas resolvidos


Entries (RSS)
February 8th, 2008 at 7:35 am
[…] que podem ser interessantes à comunidade, portanto gostaria de divulgá-los. O primeiro reúne dicas sobre o Xen, como por exemplo, passos para fazer a clonagem de uma máquina virtual recém-instalada (dúvida […]
February 8th, 2008 at 2:57 pm
Show de bola o artigo! É possivel coloca-lo no wiki do GU Xen-br?
Abração!
February 8th, 2008 at 4:27 pm
Marco,
O artigo já está lá desde ontem
http://wiki.xen-br.org/index.php?title=CloneVM
Abraços
May 9th, 2008 at 10:20 am
Ola Tiago tudo bem, o artigo ficou otimo, agora queria se possivel que vc me esclarece uma duvida, vc utiliza um volume LVM para montar suas VMs correto, como sou iniciante neste mundo do Xen criei minhas Vms como arquivons no meus discos, existe algum procedimento para fazer a clonagem dessas vms? Ja que as mesmas sao arquivos salvos no meu disco? Desde ja agradeco
May 9th, 2008 at 10:37 am
Olá Cícero,
Sim, eu sempre utilizo LVM no domU (nunca no dom0) pois facilita muito a minha vida (backups, redimencionar o FS…)
http://www.everlinux.com/blog/2008/04/03/fazendo-backup-das-suas-vms-do-xen/
Agora para o seu caso, sim, é possível clonar as VM’s mesmo que elas estejam em discos “raw”, porém, em vez de ficar fazendo tudo isso que descrevi acima, simplesmente use o virt-clone que faz tudo isso para você
Para baixa-lo, baixe o pacote “virtinst 0.300.3″ daqui:
http://virt-manager.et.redhat.com/download.html
Abraços a boa sorte!