Virtualização · 8 min read · Dec 07, 2025

Xen No Debian Wheezy Com LVM

Xen No Debian Wheezy Com LVM

Autor: Jason Norwood-Young jason [at] freespeechpub dot co dot za

Então você tem algumas necessidades sérias de servidor. Você quer um monte de servidores, com alguns sistemas operacionais, rodando seus próprios sites malucos fazendo coisas justas, servindo o mundo e tornando-o um lugar melhor. Há apenas um problema - você é pobre. Muito pobre para iniciar servidores AWS e servidores Rackspace sem contar as horas que eles estão ativos, e chorando toda vez que você recebe a conta.

Não se preocupe - você pode ter o que está procurando, por muito menos do que aqueles servidores em nuvem custam, especialmente se você precisar deles ativos 24/7/365. Com a virtualização, você pode usar um servidor grande para hospedar muitos pequenos servidores. É quase como ter sua própria nuvem!

Este tutorial cobre a instalação do Xen e sua primeira máquina virtual em cima do Debian Wheezy. Se você estiver usando o Squeeze, confira o tutorial de Falko Timme, que eu usei como inspiração para o meu (mesmo que façamos as coisas de maneira um pouco diferente).

0. Escolhendo um servidor para rodar isso

Então eu uso a Hetzner na Alemanha. Por quê? Porque eles são incrivelmente baratos. Com um ambiente virtualizado, o que você realmente procura é muita memória. Quanto mais memória, mais sistemas virtuais você pode colocar lá, e maiores eles podem ser. Eu tenho dois servidores de 32GB, o que me permite rodar cerca de 8 servidores entre 1GB e 4GB cada um sem problemas. Isso não é uma recomendação de qualquer tipo e eu não tenho relacionamento com a Hetzner além de desembolsar meu dinheiro suado para eles todo mês.

O que você está procurando é um provedor que lhe dê um servidor root bem barato, com muita e muita memória, e a capacidade de reiniciar e resgatar remotamente caso você realmente estrague tudo.

1. Instalando o Xen

Eu assumo que você instalou o Wheezy, está logado como root, e fez todas as atualizações e upgrades do apt-get que você precisa fazer. Então vamos começar!

apt-get install xen-linux-system xen-tools

Isso instala o Xen, algumas coisas de alta memória, e as muito úteis xen-tools que usaremos para criar nossas imagens virtuais mais tarde.

Em seguida, queremos dizer ao Xen como lidar com a rede. Eu tenho uma pequena confissão a fazer: eu não sou um cara de redes. Na verdade, eu detesto redes. É a tubulação da internet, e eu me recuso a me curvar e mostrar minha rachadura de encanador. E a rede do Xen é complicada, com rotas estranhas e pontes e Deus sabe o que mais. Então eu apenas faço a solução mais fácil, rápida e suja - eu coloco em modo NAT. (Não, eu realmente não sei o que é NAT, mas funciona, ok? Pare de fazer perguntas.)

pico /etc/xen/xend-config.sxp

Descomente as seguintes duas linhas:

    (network-script network-nat)
    (vif-script     vif-nat)

Embora tenhamos instalado o Xen, ele na verdade não está rodando. O Xen roda no nível do kernel, o que significa que você realmente precisa inicializar no Xen.

Primeiro, precisamos dizer ao Debian para inicializar o Xen em vez de seu kernel habitual:

dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen update-grub

Então precisamos reiniciar:

reboot

Eu sei que você não pode esperar para ssh em seu novo e incrível sistema Xen, mas dê um segundo para reiniciar.

Ok, tente agora.

E agora?

Você entrou? Estamos bem? Bom. Vamos continuar.

2. Controlando o Xen

Então agora você quer ter certeza de que o Xen está realmente rodando. No Squeeze, você poderia apenas rodar uname -r, e você veria algo como: 2.6.32-5-xen-amd64. Por alguma razão misteriosa desconhecida pela humanidade, isso não funciona no Wheezy, então em vez disso faça isso:

xen dmesg

Você deve ver algo como:

(XEN) Xen version 4.1.4 (Debian 4.1.4-3+deb7u1) ([email protected]) (gcc version 4.7.2 (Debian 4.7.2-5) ) Sun May  5 14:44:49 UTC 2013
(XEN) Bootloader: GRUB 1.99-27+deb7u2
(XEN) Command line: placeholder
(XEN) Video information:
(XEN)  VGA is text mode 80x25, font 8x16
(XEN)  VBE/DDC methods: V2; EDID transfer time: 1 seconds
(XEN) Disc information:
(XEN)  Found 2 MBR signatures
(XEN)  Found 2 EDD information structures
...

Se você não ver isso, você fez algo errado. Volte e tente novamente. Para todos os outros, SUCESSO! Parabéns! Você agora tem uma incrível instância Dom0!

Dom-o quê? Quem você está chamando de dom?

Relaxe, amigo. Dom0, ou Domínio 0, é seu servidor host, a coisa em que você está agora, a base da pilha. Os servidores convidados são referidos como DomU, possivelmente porque também soa um pouco insultante.

xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0 31089     8     r——      8.8

Esse comando lista todos os nossos servidores virtuais, incluindo o Dom0. No momento, esse é o único servidor que temos rodando.

Podemos fazer muito com xm, incluindo xm create que traz um servidor para cima, xm destroy que mata um servidor, xm reboot que reinicia um servidor, e xm top que monitora todos os servidores em execução.

3. Configurando LVM

Você pode criar servidores Xen tanto como dispositivos de bloco quanto como instâncias LVM. Eu gosto de LVM, porque é mais robusto, e também torna muito mais fácil redimensionar as partições depois.

Primeiro precisamos de um disco vazio e não montado para colocar o LVM. Eu não tenho um disco vazio e não montado, então vou apenas roubar um do meu servidor.

df -h
Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                 1008G  915M  956G   1% /
udev                                                     10M     0   10M   0% /dev
tmpfs                                                   3.0G  292K  3.0G   1% /run
/dev/disk/by-uuid/5642a4c4-1bcb-49e2-b89c-7d754e6a521a 1008G  915M  956G   1% /
tmpfs                                                   5.0M     0  5.0M   0% /run/lock
tmpfs                                                   9.2G     0  9.2G   0% /run/shm
/dev/md1                                                496M   34M  437M   8% /boot
/dev/md3                                                1.7T  196M  1.7T   1% /home

1.7TB para /home? Você está falando sério? Isso parece totalmente desnecessário.

pico /etc/fstab

Comente o disco problemático

#/dev/md/3 /home ext4 defaults 0 0

Desmonte o disco

umount /dev/md3

Certo, agora podemos criar nossa partição LVM.

pvcreate /dev/md3
  Writing physical volume data to disk "/dev/md3"
  Physical volume "/dev/md3" successfully created
vgcreate xen-vol /dev/md3
vgdisplay
  --- Volume group ---
  VG Name               xen-vol
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               1.71 TiB
  PE Size               4.00 MiB
  Total PE              448996
  Alloc PE / Size       0 / 0
  Free  PE / Size       448996 / 1.71 TiB
  VG UUID               wa0QCN-lBc1-545B-zMwf-vIuS-VXXI-GZAfbW

Justo!

4. Configurando Xen Tools

Xen Tools torna nossa vida com Xen muito mais fácil, especialmente quando se trata de criar novos servidores. Mas primeiro precisamos configurá-lo um pouco.

pico /etc/xen-tools/xen-tools.conf
lvm = xen-vol
size   = 20Gb      # Tamanho da imagem do disco.
memory = 4Gb    # Tamanho da memória
swap   = 512Mb    # Tamanho do swap
gateway    = 192.168.1.2
netmask    = 255.255.0.0
broadcast  = 192.168.1.255
mirror = http://ftp.de.debian.org/debian/
mirror_precise = http://archive.ubuntu.com/ubuntu # (e quaisquer outros que você quiser)
serial_device = hvc0
disk_device = xvda #default
copyhosts = 1

5. Criando um servidor convidado

Hora do evento principal! Este é o processo que você repetirá toda vez que quiser criar um novo servidor convidado Xen.

Para nosso primeiro servidor de teste, eu vou fazer algo um pouco menor do que os padrões que configuramos em xen-tools.conf. Você pode substituir qualquer um dos padrões na linha de comando, dependendo do que você quiser. Como não estamos usando um servidor dhcp, você precisará definir “hostname” e “ip” toda vez. Todo o resto é opcional.

xen-create-image --hostname=test --ip=192.168.1.99 --memory=512Mb --size=5G --swap=256Kb
General Information
--------------------
Hostname       :  test
Distribution   :  wheezy
Mirror         :  http://ftp.de.debian.org/debian/
Partitions     :  swap            256Kb (swap)
                  /               5G    (ext3)
Image type     :  full
Memory size    :  512Mb
Kernel path    :  /boot/vmlinuz-3.2.0-4-amd64
Initrd path    :  /boot/initrd.img-3.2.0-4-amd64
Networking Information
----------------------
IP Address 1   : 192.168.1.99 [MAC: 00:16:3E:27:33:2D]
Netmask        : 255.255.0.0
Broadcast      : 192.168.1.255
Gateway        : 192.168.1.2

Creating swap on /dev/xen-vol/test-swap
Done
Creating ext3 filesystem on /dev/xen-vol/test-disk
Done
Installation method: debootstrap
Running hooks
Done
No role scripts were specified.  Skipping
Creating Xen configuration file
Done
No role scripts were specified.  Skipping
Setting up root password
Generating a password for the new guest.
All done

Logfile produced at:
     /var/log/xen-tools/test.log
Installation Summary
---------------------
Hostname        :  test
Distribution    :  wheezy
IP-Address(es)  :  192.168.1.99
RSA Fingerprint :  de:92:b7:63:55:20:74:46:d3:de:cc:ff:55:22:69:24
Root Password   :  MlkaIn8

Isso cria o arquivo de configuração e a partição para nós, mas não inicializa o servidor para nós. O arquivo de configuração está localizado em /etc/xen/hostname.cfg. Você pode editar este arquivo diretamente se precisar mudar coisas como memória depois.

Vamos em frente e iniciar o servidor

xm create /etc/xen/test.cfg
Using config file "/etc/xen/test.cfg".
Started domain test (id=1)

O que é bem legal é que “test” será adicionado ao nosso arquivo /etc/hosts, o que significa que podemos simplesmente fazer isso:

ssh test

Use a senha que você recebeu no final da saída do xen-create-image, e você está dentro!

Certifique-se de que você pode ver a internet:

ping google.com
PING google.com (173.194.70.113) 56(84) bytes of data.
64 bytes from fa-in-f113.1e100.net (173.194.70.113): icmp_req=1 ttl=48 time=6.05 ms
64 bytes from fa-in-f113.1e100.net (173.194.70.113): icmp_req=2 ttl=48 time=6.03 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 6.030/6.044/6.058/0.014 ms

6. Tome uma cerveja

Você merece!

7. Apontando endereços IP para seus servidores virtuais

Você precisará de um monte de endereços IP do seu ISP (chamado de sub-rede). Eu pago um pouco mais por mês por oito endereços IP extras. Mas fazer com que eles passem diretamente para seu servidor virtual requer um pouco de trabalho.

pico /etc/network/interfaces
auto br0
iface br0 inet static
  address 192.168.1.2
  netmask 255.255.0.0
  pre-up brctl addbr $IFACE
  post-down brctl delbr $IFACE
/etc/init.d/networking restart
ifconfig br0
br0       Link encap:Ethernet  HWaddr 82:18:d1:b8:37:c9
          inet addr:192.168.1.2  Bcast:192.168.255.255  Mask:255.255.0.0
          inet6 addr: fe80::9118:d1ff:feb8:37c9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:172 (172.0 B)
ip addr add 80.1.2.41 dev eth0
iptables -A PREROUTING -t nat -p all -i eth0 -d 80.1.2.41 -j DNAT --to 192.168.1.99

Use –bridge=br0 ao usar xen-create. Para arquivos existentes /etc/xen/*.cfg, edite esta linha:

    vif         = [ 'ip=192.168.1.99,mac=00:15:3F:B4:AC:34' ]

para ficar assim:

    vif         = [ 'ip=192.168.1.99,mac=00:15:3F:B4:AC:34','bridge=br0' ]

Destrua e crie o servidor virtual se necessário.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.