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-toolsIsso 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.sxpDescomente 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-grubEntão precisamos reiniciar:
rebootEu 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 dmesgVocê 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 listName ID Mem VCPUs State Time(s)
Domain-0 0 31089 8 r—— 8.8Esse 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 -hFilesystem 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% /home1.7TB para /home? Você está falando sério? Isso parece totalmente desnecessário.
pico /etc/fstabComente o disco problemático
#/dev/md/3 /home ext4 defaults 0 0Desmonte o disco
umount /dev/md3Certo, agora podemos criar nossa partição LVM.
pvcreate /dev/md3 Writing physical volume data to disk "/dev/md3"
Physical volume "/dev/md3" successfully createdvgcreate xen-vol /dev/md3vgdisplay --- 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-GZAfbWJusto!
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.conflvm = 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 = 15. 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=256KbGeneral 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 : MlkaIn8Isso 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.cfgUsing 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 testUse 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.comPING 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 ms6. 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/interfacesauto 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 restartifconfig br0br0 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 eth0iptables -A PREROUTING -t nat -p all -i eth0 -d 80.1.2.41 -j DNAT --to 192.168.1.99Use –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.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.