1. Instalação
- Instalar o sistema debian 6 64 bits
- Atualizar o sistema
apt-get dist-upgrade
- Instalar os pacotes necessários
apt-get install xen-hypervisor-4.0-amd64 linux-image-xen-amd64 xen-tools xen-qemu-dm vncviewer vnc4server xinetd xterm rsync
- Após instalar o xen, é necessário corrigir a inicialização do mesmo no grub2
mv -i /etc/grub.d/10_linux /etc/grub.d/50_linux && update-grub2
2. Configuração do Xen
- Criar backup do arquivo de configuração padrão do xen
cp -a /etc/xen/xend-config.sxp /etc/xen/xend-config.sxp.bkp
- Editar o arquivo /etc/xen/xend-config.sxp como exemplo entre abixo:
(logfile /var/log/xen/xend.log)
#(loglevel DEBUG)(xend-http-server yes)
(xend-port 8000)
(xend-address localhost)(xend-unix-server yes)
(network-script ‘network-bridge antispoof=yes’)
(vif-script vif-bridge)
(dom0-min-mem 196)
(enable-dom0-ballooning yes)
(total_available_memory 0)
(dom0-cpus 0)
(vnc-listen ’0.0.0.0′)
(vncpasswd ‘senha_vnc’)(keymap ‘pt-br’)
- Editar o arquivo /etc/xen-tools/xen-tools.conf e verificar se as linhas abaixo estão descomentadas, caso contrário, descomentar:
serial_device = hvc0
serial_device = tty1
disk_device = xvda
pygrub=1
3. Configuração das DomUs Para-Virtualizados (Máquinas Virtuais)
- Criar diretório onde ficarão as servidores virtualizados
mkdir -p /nome_do_diretorio/domains
3.1 Configuração de DomU de Servidor existente via rsync
- Criar diretórios de virtualização do servidor
mkdir -p /nome_do_diretorio/domains/nome_do_servidor/tmp
- Criar HD virtual do servidor
cd /nome_do_diretorio/domains/nome_do_servidor
qemu-img create -f raw hd_root.img 50G
mkfs.ext3 -F hd_root.img
qemu-img create -f raw hd_swap.img 2G
mkswap -f hd_swap.img
- Criar arquivo de configuração da servidor
- use o editor de texto de sua preferência
- cd /nome_do_diretorio/domains/nome_do_servidor
- vim nome_do_servidor.cfg
import commands
krn_vers = commands.getoutput(‘uname -r’)name = ‘nome_do_servidor’
builder = ‘linux’
ostype = ‘squeeze’ (Em distribuições debian-like, usar o nome da versão. Em distribuições centos, usar centos-{3,4,5 ou 6}, para demais, consulte tabela)
disk = [
'file:/nome_do_diretorio/domains/nome_do_servidor/hd_root.img,xvda1,w',
'file:/nome_do_diretorio/domains/nome_do_servidor/hd_swap.img,xvda2,w'
]
memory = 1024 (Quantidade de memória)
vcpus = 1 (Quantidade de processadores)
arch = ‘amd64′ (Arquiterura do servidor: i386 ou amd64)
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=X,vnclisten=0.0.0.0,vncpasswd=senha_vnc' ] (vncdisplay=X é o mesmo que: 590X, ou seja, vncdisplay=1 significa 5901)
- Liberar acesso ao servidor xen (Dom0) via rsync para o servidor que esta sendo virtualizado
- use o editor de texto de sua preferência
- vim /etc/rsyncd.conf
# arquivo de log
log file = /var/log/rsyncd.log# host
[nome_do_servidor](modulo_do_servidor)
path = /nome_do_diretorio/domains/nome_do_servidor/tmp
read only = false
uid = root
hosts allow = ip_do_servidor
transfer logging = yes
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
- Montar imagem do HD virtual no diretório tmp
cd /nome_do_diretorio/domains/nome_do_servidor
mount -o loop hd_root.img tmp
- Rsync do servidor para o HD virtual
- Logar no servidor que esta sendo virtualizado e começar o rsync
rsync -vaH –numeric-ids –stats –progress –exclude “/mnt/*” –exclude “/proc/*” –exclude “/sys/*” –exclude “/tmp/*” –exclude “/var/tmp/*” / ip_do_servidor::modulo_do_servidor
- Finalizar instalação
- cd /nome_do_diretorio/domains/nome_do_servidor/tmp
- use o editor de texto de sua preferência
- FSTAB – Debian/Ubuntu
vim etc/fstab — (NÃO COLOCAR “/” ANTES DO ETC
/dev/xvda1 / ext3 defaults,errors=remount-ro 0 1
/dev/xvda2 none swap sw 0 0
proc /proc proc nodev,noexec,nosuid 0 0
- INITTAB – Debian / CentOS
vim etc/inittab
–Incluir linha–
#Xen
co:2345:respawn:/sbin/agetty 38400 xvc0
- EVENT.D – Ubuntu
mkdir etc/event.d
vim etc/event.d/xvc0
# xvc0 Xen Console
# This service maintains a getty on xvc0 from the point the system is
# started until it is shut down again.
start on runlevel 2
start on runlevel 3
stop on runlevel 0
stop on runlevel 1
stop on runlevel 4
stop on runlevel 5
stop on runlevel 6
respawn
exec /sbin/agetty 38400 xvc0
- Configurar rede, se necessário:
vim etc/network/interfaces
- Configurar securetty
vim etc/securetty
–Incluir no final do arquivo–
# Xen console
xvc0
- Copiar arquivos do kernel
cp -a /lib/modules/$(uname -r) lib/modules
- Desmontar imagem do HD virtual
cd /nome_do_diretorio/domains/nome_do_servidor
umount tmp
- Inicializar máquina virtual
xm create -c /nome_do_diretorio/domains/nome_do_servidor
Se a rede foi configurada, o servidor pode ser acessado via ssh
Acesso via VNC, ip_do_servidor:X, onde X faz referência ao vncdisplay informado no arquivo de cfg da máquina virtual
3.2 Configuração de DomU de Servidor novo via debootstrap
- Criar diretórios de virtualização do servidor
mkdir -p /nome_do_diretorio/domains/nome_do_servidor/tmp
- Criar HD virtual do servidor
cd /nome_do_diretorio/domains/nome_do_servidor
qemu-img create -f raw hd_root.img 50G
mkfs.ext3 -F hd_root.img
qemu-img create -f raw hd_swap.img 2G
mkswap -f hd_swap.img
- Criar arquivo de configuração da servidor
- use o editor de texto de sua preferência
- cd /nome_do_diretorio/domains/nome_do_servidor
- vim nome_do_servidor.cfg
import commands
krn_vers = commands.getoutput(‘uname -r’)name = ‘nome_do_servidor’
builder = ‘linux’
ostype = ‘squeeze’ (Em distribuições debian-like, usar o nome da versão. Em distribuições centos, usar centos-{3,4,5 ou 6}, para demais, consulte tabela)
disk = [
'file:/nome_do_diretorio/domains/nome_do_servidor/hd_root.img,xvda1,w',
'file:/nome_do_diretorio/domains/nome_do_servidor/hd_swap.img,xvda2,w'
]
memory = 1024 (Quantidade de memória)
vcpus = 1 (Quantidade de processadores)
arch = ‘amd64′ (Arquiterura do servidor: i386 ou amd64)
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=X,vnclisten=0.0.0.0,vncpasswd=senha_vnc' ] (vncdisplay=X é o mesmo que: 590X, ou seja, vncdisplay=1 significa 5901)
- Inicializar instalação do sistema básico
cd /nome_do_diretorio/domains/nome_do_servidor/tmp
debootstrap –arch amd64 squeeze . http://ftp.debian.org/debian
debootstrap –arch amd64 lucid . http://archive.ubuntu.com/ubuntu
- Finalizar instalação
- cd /nome_do_diretorio/domains/nome_do_servidor/tmp
- use o editor de texto de sua preferência
- INITTAB – Debian / CentOS
vim etc/inittab
–Incluir linha–
#Xen
co:2345:respawn:/sbin/agetty 38400 xvc0
- EVENT.D – Ubuntu
mkdir etc/event.d
vim etc/event.d/xvc0
# xvc0 Xen Console
# This service maintains a getty on xvc0 from the point the system is
# started until it is shut down again.
start on runlevel 2
start on runlevel 3
stop on runlevel 0
stop on runlevel 1
stop on runlevel 4
stop on runlevel 5
stop on runlevel 6
respawn
exec /sbin/agetty 38400 xvc0
- Configurar rede, se necessário:
vim etc/network/interfaces
- Configurar securetty
vim etc/securetty
–Incluir no final do arquivo–
# Xen console
xvc0
- Copiar arquivos do kernel
cp -a /lib/modules/$(uname -r) lib/modules
- HOSTS
vim etc/hosts
127.0.0.1 localhost.localdomain localhost
ip_do_servidor nome_do_servidor.dominio_do_servidor nome_do_servidor
- HOSTNAME
vim etc/hostname
nome_do_servidor
- Configurar rede, se necessário
vim etc/network/interfaces
- Configurar securetty
vim etc/securetty
–Incluir no final do arquivo–
# Xen console
xvc0
- Copiar arquivos do kernel:
cp -a /lib/modules/$(uname -r) lib/modules
Se o sistema de destino não for 64bit, efetuar a cópia dos módulos 64bits
mkdir -p lib64/modules
cp -a /lib64/modules/$(uname -r) lib64/modules
- Desmontar imagem do HD virtual
cd /nome_do_diretorio/domains/nome_do_servidor
umount tmp
- Inicializar máquina virtual
xm create -c /nome_do_diretorio/domains/nome_do_servidor
Se a rede foi configurada, o servidor pode ser acessado via ssh
Acesso via VNC, ip_do_servidor:X, onde X faz referência ao vncdisplay informado no arquivo de cfg da máquina virtual
4. Bibliografia
- http://alex.mordue.co.uk/blog/?p=85
http://wiki.xensource.com
http://wiki.kartbuilding.net/index.php/Create_Centos5_DomU_on_Debian_Etch_Dom0#Xen-tools.2Frmpstrap_Method_-_Problematic
http://conshell.net/wiki/index.php/Centos-4_on_Xen
http://wiki.xen-br.org/P2v-howto
http://wiki.xen-br.org/P%C3%A1gina_principal
http://wiki.xen-br.org/Vm-ubuntu
http://wiki.xen-br.org/Vm-debian
http://manpages.ubuntu.com/manpages/gutsy/man1/rpmstrap.1.html
http://wiki.openvz.org/Debian_template_creation
http://groups.google.com/group/xen-br/browse_thread/thread/19db8f08b4b75ae6?pli=1
O que é modulo_do_servidor ?
Obrigado
Aurélio, a idéia é a seguinte:
Você quer acessar a partição “/” do servidor “alfa”, o arquivo rsyncd.conf vai ficar assim:
# host
[alfa_barra]
path = /
read only = false
uid = root
hosts allow = ip_do_servidor (ip do servidor que vai ter acesso a pasta /)
transfer logging = yes
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.