P2v-howto

De Xen-BR wiki

Xen-BR 
Migrando um servidor físico Linux para virtual (p2v)

Xenlogo.png




Tabela de conteúdo

Introdução

Este artigo serve como auxilio a administradores de sistema na migração de servidores físicos para virtuais. Para a instalação do host Xen, siga o artigo Compilando o Xen 3.2 no Debian Etch.

A semântica utilizada para o nome do Volume Group e da maquina virtual são meramente ilustrativos para exemplificar o processo. Portanto:

  • Altere o Volume Lógico VGxen sugerido pelo utilizado em seu servidor.
  • Altere o nome da maquina virtual vmname pelo nome que você desejar.

Ambos os dados se repetem inúmeras vezes neste artigo.

Preparando o servidor físico

IMPORTANTE: Pare todos os serviços ativos no servidor físico deixando apenas a rede e um servidor ssh ativo.

Instale o rsync no servidor físico:

apt-get install rsync 

Configure-o para prover a raiz do sistema para que possa ser sincronizada para o futuro servidor virtual editando o arquivo /etc/rsyncd.conf:

# /etc/rsyncd.conf

max connections = 1
syslog facility = local3
read only = yes
list = yes
uid = root
gid = root

[p2v]
       comment = physical to virtual server
       path = /

Ative o daemon rsync:

rsync --daemon

Preparando o dom0 para receber os dados

No dom0 onde se deseja rodar a futura maquina virtual, crie os volumes lógicos que servirão de disco virutal e sincronize os dados do servidor físico para os novos discos virtuais:

  • Raiz:
lvcreate -L 50G -n vmname.dsk VGxen
  • Swap:
lvcreate -L 2G -n vmname.swp VGxen

Ajuste as informações acima de acordo com as necessidades de espaço em disco da maquina virtual.


Formate e monte o disco raiz:

mkfs.ext3 /dev/VGxen/vmname.dsk
mkswap /dev/VGxen/vmname.swp
mkdir /mnt/vmname
mount /dev/VGxen/vmname.dsk /mnt/vmname

Agora, rode o rsync para copiar o raiz do servidor fisico para o disco virtual com o comando abaixo:

rsync -vaH --numeric-ids --stats --progress --exclude "/mnt/*" --exclude "/proc/*" --exclude "/sys/*" --exclude "/tmp/*" --exclude "/var/tmp/*" \
           --exclude "/var/run/*.pid" --exclude "/var/run/dbus/system_bus_socket" rsync://192.168.1.123/p2v/ /mnt/vmname/

O IP 192.168.1.123 sugerido deverá ser alterado pelo IP real de seu servidor físico a ser copiado.


Alternativamente, é possível fazer a sincronização via SSH, da seguinte maneira:

rsync -vaH -e 'ssh' --numeric-ids --stats --progress --exclude "/mnt/*" --exclude "/proc/*" --exclude "/sys/*" --exclude "/tmp/*" --exclude "/var/tmp/*" \
          --exclude "/var/run/*.pid" --exclude "/var/run/dbus/system_bus_socket" 192.168.1.123:/ /mnt/vmname/

Caso o SSH esteja em outra porta, por exemplo, pode-se alterar o parâmetro -e com opções do SSH:

-e 'ssh -oPort=2222,CompressLevel=9'


Finalizando as configurações

Finalizada a sincronização, ajuste o seu sistema editando os arquivos:

  • /mnt/vmname/etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/xvda1       /               ext3    defaults,errors=remount-ro 0       1
/dev/xvda2       none            swap    sw              0       0
  • Inclua a linha abaixo em /mnt/vmname/etc/inittab:
co:2345:respawn:/sbin/getty 38400 xvc0
  • Inclua a linha abaixo em /mnt/vmname/etc/securetty:
xvc0

Crie o arquivo de configuração da maquina virtual migrada (/etc/xen/auto/vmname):

import commands
krn_vers = commands.getoutput('uname -r')

name ='vmname'
builder = 'linux'
disk = [ 'phy:/dev/VGxen/' + name ' + ".dsk,xvda1,w', \
         'phy:/dev/VGxen/' + name ' + ".swp,xvda2,w' ]
memory = 512
vif = [ 'bridge=xenbr0' ]
kernel = '/boot/vmlinuz-' + krn_vers
ramdisk = '/boot/initrd.img-' + krn_vers
root = '/dev/xvda1 ro'
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
extra = 'xencons=xvc console=xvc0 video=tty'
vfb = [ 'type=vnc,vncdisplay=0,vnclisten=0.0.0.0,vncpasswd=passwd' ]

Copie os modulos do kernel do dom0 para o disco da nova maquina virtual:

cp -a /lib/modules/$(uname -r) /mnt/vmname/lib/modules/

Desmonte o disco do servidor virtual:

umount /mnt/vmname

Finalizando

Você pode agora derrubar o seu servidor físico, mas calma, ainda precisamos testar pra ver se tudo está ok. Lembre-se também que, o servidor virtual terá o mesmo endereço IP que o real a não ser que você altere isso em um dos dois servidores.

Após o shutdown completo do servidor físico, precione start no servidor virtual :-)

xm create /etc/xen/auto/vmname -c

Voila!

Outros howto's e ferramentas

http://et.redhat.com/~rjones/virt-p2v/ http://wiki.xensource.com/xenwiki/XenManualPtoVProcess

TODO

Migração de máquinas muito antigas para o Xen (ex: Red Hat 6.2)

Impossibilidade de usar o kernel+modulos da distro

Problemas para gravar o LILO na máquina virtualizada

Migração de devices (ex: /dev/ida/c0d0p1 -> /dev/hda1)
Ferramentas pessoais