Xen és un programari lliure de màquines virtuals que permet executar múltiples sistemes operatius (anomenats guests o convidats) en un mateixa màquina (anomenada host o amfitrió).
Terminologia
Cal tenir en compte que hi ha kernels de Linux per a dom0 i kernels de Linux per a domU. Per exemple les últimes versions dels kernels oficials d'Ubuntu, només funcionen com a domU mentres que la última versió que suporta dom0 és Feisty.
Xen és un sistema de Paravirtualització.
NOTA: Llegiu la web: https://help.ubuntu.com/community/Xen#Ubuntu%27s%20Support%20of%20Xen El kernel dom0 s'ha d'instal·lar a mà perquè el kernel que porten versions d'Ubuntu com Intrepid o Jaunty no té les capacitats per a suportar dom0. Els kernels d'Ubuntu per defecte són kernels que es poden utilitzar directament en màquines domU.
Per instal·lar a una màquina amb Ubuntu 8.10 (Intrepid Ibex)
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 8.10 Release: 8.10 Codename: intrepid
Cal executar:
$ sudo apt-get update $ sudo apt-get install ubuntu-xen-server S'està llegint la llista de paquets... Fet S'està construint l'arbre de dependències Reading state information... Fet S'instal·laran els següents paquets extres: debootstrap gcc gcc-4.3 libbeecrypt6 libc6-dev libc6-xen libconfig-inifiles-perl libexpect-perl libgomp1 libio-pty-perl libio-stty-perl libneon27 librpm4.4 libterm-readline-gnu-perl libterm-size-perl libtext-template-perl linux-libc-dev python-dev python-xen-3.3 python2.5-dev rinse rpm vnstat xen-docs-3.3 xen-hypervisor-3.3 xen-shell xen-tools xen-utils-3.3 xfsprogs Paquets suggerits: gcc-multilib manpages-dev autoconf automake1.9 libtool flex bison gdb gcc-doc gcc-4.3-multilib libmudflap0-4.3-dev gcc-4.3-doc gcc-4.3-locales libgcc1-dbg libgomp1-dbg libmudflap0-dbg glibc-doc alien attr dvhtool quota xfsdump Paquets recomanats: xen-hypervisor-amd64 xen-hypervisor-i386 xen-hypervisor-i386-pae S'instal·laran els següents paquets NOUS: debootstrap gcc gcc-4.3 libbeecrypt6 libc6-dev libc6-xen libconfig-inifiles-perl libexpect-perl libgomp1 libio-pty-perl libio-stty-perl libneon27 librpm4.4 libterm-readline-gnu-perl libterm-size-perl libtext-template-perl linux-libc-dev python-dev python-xen-3.3 python2.5-dev rinse rpm ubuntu-xen-server vnstat xen-docs-3.3 xen-hypervisor-3.3 xen-shell xen-tools xen-utils-3.3 xfsprogs 0 actualitzats, 30 nous a instal·lar, 0 a eliminar i 0 no actualitzats.
Un cop instal·lat, activem la xarxa:
$ sudo joe /etc/xen/xend-config.sxp
I assegureu-vos que teniu la línia (a la meva versió ja hi era):
(network-script network-bridge)
...estigui sense comentar.
El següent pas només es necessari si les màquines virtuals no utilitzen LVM. Modifiqueu el fitxer /etc/modules:
$ sudo joe /etc/modules
I canvieu la línia (només si no utilitzeu el sistema LVM!!!)
loop
Per:
loop max_loop=64
Torneu a iniciar la màquina per comprovar que tot funciona correctament. Al reiniciar s'executarà el kernel de xen:
$ sudo reboot
Ara heu de crear una imatge virtual amb la comanda xen-create-image de l'eina xen-tools.
Consulteu Creant una imatge virtual LVM.
IMPORTANT: Sembla que no funciona. Consulteu http://ubuntuforums.org/showthread.php?t=947391
El kernel precompilat que proporciona la Ubuntu 0.10 és per a domU i no pas per dom0. Per tant, cal recompilar el kernel.
Podeu obtenir informació de com fer-ho a:
NOTA: tingueu en compte que si voleu que la màquina virtual sigui Ubuntu 8,10, no hi ha cap problema en que l'amfitriona sigui 8.04.
Configuració de la construcció del Kernel:
Script per obtenir el codi font:
apt-get update apt-get upgrade apt-get install linux-image-server linux-server apt-get install ubuntu-xen-server build-essential libncurses5-dev gawk mercurial mkdir -p ~/build/linux-2.6.27-xen cd /usr/src/ hg clone http://xenbits.xensource.com/ext/linux-2.6.27-xen.hg
La configuració de la construcció (builder) del programa és realitza amb:
$ cd /usr/src/linux-2.6.27-xen.hg $ make O=~/build/linux-2.6.27-xen/ menuconfig
Les opcions a escollir són:
General setup ---> Choose SLAB allocator (SLUB (Unqueued Allocator)) ---> (X) SLAB Processor type and features ---> Subarchitecture Type (PC-compatible) ---> (X) Enable Xen compatible kernel Bus options (PCI etc.) ---> [*] PCI support [*] Xen PCI Frontend [ ] Xen PCI Frontend Debugging (NEW) Change <M> 802.1d Ethernet Bridging to <*> 802.1d Ethernet Bridging: Networking support ---> Networking options ---> <*> 802.1d Ethernet Bridging Disable 10000 Mbit Ethernet (otherwise the build process will most likely fail): Device Drivers ---> [*] Network device support ---> [ ] Ethernet (10000 Mbit) ---> Make the Xen section look as follows (make sure you select Xen version compatibility (3.0.4 and later) instead of Xen version compatibility (3.0.2 and later)): Device Drivers ---> XEN ---> [*] Privileged Guest (domain 0) <*> Backend driver support (NEW) <*> Block-device backend driver (NEW) <*> Block-device tap backend driver (NEW) <*> Network-device backend driver (NEW) (8) Maximum simultaneous transmit requests (as a power of 2) (NEW) [ ] Pipelined transmitter (DANGEROUS) (NEW) < > Network-device loopback driver (NEW) <*> PCI-device backend driver (NEW) PCI Backend Mode (Virtual PCI) ---> [ ] PCI Backend Debugging (NEW) < > TPM-device backend driver (NEW) <M> SCSI backend driver (NEW) <M> Block-device frontend driver <M> Network-device frontend driver <M> Network-device frontend driver acceleration for Solarflare NICs (NEW) <M> SCSI frontend driver (NEW) <*> User-space granted page access driver (NEW) <*> Framebuffer-device frontend driver (NEW) <*> Keyboard-device frontend driver (NEW) [*] Disable serial port drivers (NEW) <*> Export Xen attributes in sysfs (NEW) (256) Number of guest devices (NEW) Xen version compatibility (3.0.4 and later) --->
Atenció, a l'apartat Xen cal posar 3.0.4!
Xen version compatibility (3.0.4 and later) --->
El fitxer .config que queda a /root/build/linux-2.6.27-xen el podeu consultar a:
http://acacha.dyndns.org/~sergi/Xen/config
Ara ja podeu construir el Kernel:
# make O=~/build/linux-2.6.27-xen
NOTA: Pot tardar molta estona (hores). Tot depèn de la velocitat del vostre ordinador.
Un cop construït, es pot instal·lar amb:
make O=~/build/linux-2.6.27-xen/ modules_install install
NOTA: A mi m'apareixen un munt d'avisos.
Abans a /boot teníeu:
# ls -l /boot/ total 24072 -rw-r--r-- 1 root root 510401 2009-04-02 01:01 abi-2.6.27-11-server -rw-r--r-- 1 root root 509681 2008-11-04 22:15 abi-2.6.27-7-server -rw-r--r-- 1 root root 91522 2009-04-02 01:01 config-2.6.27-11-server -rw-r--r-- 1 root root 91528 2008-11-04 22:15 config-2.6.27-7-server drwxr-xr-x 2 root root 4096 2009-04-16 13:59 grub -rw-r--r-- 1 root root 8048048 2009-04-16 13:56 initrd.img-2.6.27-11-server -rw-r--r-- 1 root root 8043980 2009-04-16 13:49 initrd.img-2.6.27-7-server -rw-r--r-- 1 root root 124152 2008-09-11 22:11 memtest86+.bin -rw-r--r-- 1 root root 1052790 2009-04-02 01:01 System.map-2.6.27-11-server -rw-r--r-- 1 root root 1050576 2008-11-04 22:15 System.map-2.6.27-7-server -rw-r--r-- 1 root root 1073 2009-04-02 01:02 vmcoreinfo-2.6.27-11-server -rw-r--r-- 1 root root 1072 2008-11-04 22:16 vmcoreinfo-2.6.27-7-server -rw-r--r-- 1 root root 2298064 2009-04-02 01:01 vmlinuz-2.6.27-11-server -rw-r--r-- 1 root root 2294192 2008-11-04 22:15 vmlinuz-2.6.27-7-server -rw-r--r-- 1 root root 427143 2008-10-06 20:12 xen-3.3.gz
Ara:
# ls -la /boot/ total 15368 drwxr-xr-x 3 root root 4096 2009-04-19 20:38 . drwxr-xr-x 20 root root 4096 2009-04-16 19:50 .. -rw-r--r-- 1 root root 509681 2008-11-04 22:15 abi-2.6.27-7-server -rw-r--r-- 1 root root 88820 2009-04-19 20:38 config-2.6.27.5 -rw-r--r-- 1 root root 91528 2008-11-04 22:15 config-2.6.27-7-server drwxr-xr-x 2 root root 4096 2009-04-16 20:17 grub -rw-r--r-- 1 root root 8064768 2009-04-16 19:44 initrd.img-2.6.27-7-server -rw-r--r-- 1 root root 124152 2008-09-11 22:11 memtest86+.bin -rw-r--r-- 1 root root 1004670 2009-04-19 20:38 System.map-2.6.27.5 -rw-r--r-- 1 root root 1050576 2008-11-04 22:15 System.map-2.6.27-7-server -rw-r--r-- 1 root root 1072 2008-11-04 22:16 vmcoreinfo-2.6.27-7-server -rw-r--r-- 1 root root 1991541 2009-04-19 20:38 vmlinuz-2.6.27.5 -rw-r--r-- 1 root root 2294192 2008-11-04 22:15 vmlinuz-2.6.27-7-server -rw-r--r-- 1 root root 427143 2008-10-06 20:12 xen-3.3.gz
Fixeu-vos que hi ha un kernel (vmlinuz-2.6.27.5) sense fitxer initrd. Per crear-lo executeu:
# depmod 2.6.27.5 # update-initramfs -c -k 2.6.27.5
I actualitzeu el grub:
# update-grub
S'ha afegit la entrada de menú de Grub (al fitxer /boot/grub/menu.lst):
title Xen 3.3 / Ubuntu 8.10, kernel 2.6.27.5 uuid 206bc5c8-a336-45ee-8852-2162b5ee10ae kernel /boot/xen-3.3.gz module /boot/vmlinuz-2.6.27.5 root=UUID=206bc5c8-a336-45ee-8852-2162b5ee10ae ro console=tty0 module /boot/initrd.img-2.6.27.5 quiet
Recursos:
En servidor s'escolleix una versió de 64bits (AMD64). Les passes a seguir estan força ben explicades a:
http://www.howtoforge.com/virtualization-with-xen-on-debian-lenny-amd64
Les passes extres recomanades són:
Es pot controlar el servei Xen amb:
$ sudo /etc/init.d/xend Usage: /etc/init.d/xend {start|stop|restart|force-reload}
Això executa el servidor xen (hypervisor) segons el fitxer de configuració /etc/xen/xend-config.sxp
$ dpkg -L xen-utils-3.3 | grep etc
/etc /etc/udev /etc/udev/xen-backend.rules /etc/xen /etc/xen/auto /etc/xen/scripts /etc/xen/scripts/network-bridge /etc/xen/scripts/vif-bridge /etc/xen/scripts/network-route /etc/xen/scripts/vif-route /etc/xen/scripts/network-nat /etc/xen/scripts/vif-nat /etc/xen/scripts/block /etc/xen/scripts/block-enbd /etc/xen/scripts/block-nbd /etc/xen/scripts/blktap /etc/xen/scripts/vtpm /etc/xen/scripts/vtpm-delete /etc/xen/scripts/xen-hotplug-cleanup /etc/xen/scripts/external-device-migrate /etc/xen/scripts/vscsi /etc/xen/scripts/xen-script-common.sh /etc/xen/scripts/locking.sh /etc/xen/scripts/logging.sh /etc/xen/scripts/xen-hotplug-common.sh /etc/xen/scripts/xen-network-common.sh /etc/xen/scripts/vif-common.sh /etc/xen/scripts/block-common.sh /etc/xen/scripts/vtpm-common.sh /etc/xen/scripts/vtpm-hotplug-common.sh /etc/xen/scripts/vtpm-migration.sh /etc/xen/scripts/vtpm-impl /etc/xen/xend-config.sxp /etc/xen/xend-pci-permissive.sxp /etc/xen/xend-pci-quirks.sxp /etc/xen/qemu-ifup /etc/init.d /etc/init.d/xend /etc/init.d/xendomains /etc/default /etc/default/xendomains
Es pot consultar sense comentaris i sense línies en blanc amb la comanda:
$ cat /etc/xen/xend-config.sxp | grep -v '^#\|^$\|^;' (xend-relocation-server yes) (xend-relocation-hosts-allow '^localhost$ ^localhost\\.localdomain$') '(network-script network-bridge) (vif-script vif-bridge) (dom0-min-mem 196) (dom0-cpus 0) (vncpasswd )
Permet control·lar el servei Xen:
$ sudo /etc/init.d/xend restart
Consulteu [[]]
Debian 5.0 lenny dom0:
$ dpkg -l | grep xen ii libxenstore3.0 3.2.1-2 Xenstore communications library for Xen ii linux-image-2.6.26-1-xen-amd64 2.6.26-13lenny2 Linux 2.6.26 image on AMD64, oldstyle Xen support ii linux-image-2.6.26-2-xen-amd64 2.6.26-21lenny3 Linux 2.6.26 image on AMD64, oldstyle Xen support ii linux-image-xen-amd64 2.6.26+17+lenny1 Linux image on AMD64, oldstyle Xen support ii linux-modules-2.6-xen-amd64 2.6.26+17+lenny1 Linux 2.6 modules on AMD64 ii linux-modules-2.6.26-1-xen-amd64 2.6.26-13lenny2 Linux 2.6.26 modules on AMD64 ii linux-modules-2.6.26-2-xen-amd64 2.6.26-21lenny3 Linux 2.6.26 modules on AMD64 ii xen-hypervisor-3.2-1-amd64 3.2.1-2 The Xen Hypervisor on AMD64 ii xen-linux-system-2.6.26-1-xen-amd64 2.6.26-13lenny2 XEN system with Linux 2.6.26 image on AMD64 ii xen-shell 1.8-3 Console based Xen administration utility ii xen-tools 3.9-4 Tools to manage Debian XEN virtual servers ii xen-utils-3.2-1 3.2.1-2 XEN administrative tools ii xen-utils-common 3.2.0-2 XEN administrative tools - common files ii xenstore-utils 3.2.1-2 Xenstore utilities for Xen ii xenwatch 0.5.2-1 Virtualization utilities, mostly for Xen
Ubuntu dom=:
$ dpkg -l | grep xen ii libc6-xen 2.8~20080505-0ubuntu9 GNU C Library: Shared libraries [Xen version ii libxen3 3.3.0-1ubuntu7 library interface for Xen, a Virtual Machine ii python-xen-3.3 3.3.0-1ubuntu7 python bindings for Xen, a Virtual Machine M ii ubuntu-xen-server 0.0.1-2ubuntu10 Xen software for running on servers ii xen-docs-3.3 3.3.0-1ubuntu7 documentation for XEN, a Virtual Machine Mon ii xen-hypervisor-3.3 3.3.0-1ubuntu7 The Xen Hypervisor for i386 and amd64. ii xen-shell 1.8-3 Console based Xen administration utility ii xen-tools 3.9-3 Tools to manage Debian XEN virtual servers ii xen-utils-3.3 3.3.0-1ubuntu7 XEN administrative tools
NOTA: L'última versió d'aquest script la trobareu a: https://svn.projectes.lafarga.cat/svn/projectesticdel/xen/
NAME=BravoFS XEN_VG=xen_vm SIZE=200G SWAP_SIZE=512MB DISTRO=karmic RAM=1024 MAC=00:16:3E:00:00:b0 sudo lvcreate -L ${SIZE} -n ${NAME} ${XEN_VG} || exit sudo mkfs.ext3 /dev/$XEN_VG/${NAME} sudo lvcreate -L ${SWAP_SIZE} -n ${NAME}swap ${XEN_VG} && sudo mkswap /dev/${XEN_VG}/${NAME}swap sudo mkdir /mnt/${NAME} sudo mount /dev/mapper/${XEN_VG}-${NAME} /mnt/${NAME} #sudo /usr/sbin/debootstrap --arch=amd64 --include=linux-image-server,grub --components=main,restricted,universe,multiverse $DISTRO /mnt/${NAME} http://es.archive.ubuntu.com/ubuntu/ sudo mount /dev/mapper/xen_vm-repositori_maquina_virtual /mnt/repositori_maquina_virtual sudo tar -xvpzf /mnt/repositori_maquina_virtual/karmic_ubuntu_server.tar.gz -C /mnt/${NAME}/ #Canviar el nom de màquina. Fitxers /etc/hosts i /etc/hostname sudo bash -c "cat <<EOF >/mnt/${NAME}/etc/hosts 127.0.0.1 localhost 127.0.1.1 ${NAME}.informatica.iesebre.com ${NAME} # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts EOF" sudo bash -c "cat <<EOF >/mnt/${NAME}/etc/hostname ${NAME} EOF" sudo bash -c "cat <<EOF >/mnt/${NAME}/etc/resolv.conf domain informatica.iesebre.com search informatica.iesebre.com iesebre.com nameserver 192.168.2.1 #DNS timofonica Ferreries #nameserver 80.58.61.250 #nameserver 80.58.61.254 EOF" sudo umount /mnt/${NAME} sudo bash -c "cat <<EOF >/etc/xen/${NAME} bootloader = '/usr/lib/xen-3.2-1/bin/pygrub' memory = ${RAM} name = '${NAME}' vif = [ 'mac=${MAC}, bridge=eth0' ] # replace with DomU's IP dhcp = 'dhcp' #netmask = '255.255.255.0' #gateway = 'XXX' # Dom0 disk = [ 'phy:/dev/${XEN_VG}/${NAME},xvda1,w','phy:/dev/${XEN_VG}/${NAME}swap,xvda2,w' ] EOF"
Aquest exemple el farem utilitzant LVM. Es tracta d'instal·lar un màquina virtual (domU o guest) amb una Ubuntu Server 9.04 (Jaunty) en una màquina dom0 o host Debian. Això s'ha fet en un servidor dedicat de la empresa OVH.
Primer creem els volums lògics de LVM. Anomenarem al LV acacha. Creem el volum lògic:
# lvcreate -L 250G -n acacha xenvg
El formatem amb el sistema de fitxers ext3:
# mkfs.ext3 /dev/xenvg/acacha
Hem escollit que la màquina ocupi 250G. Fixeu-vos que prèviament hauríeu de tenir un VG creat anomenat xenvg. Consulteu Xen#Xen_a_OVH.
Per crear la swap d'acacha:
# lvcreate -L1G -n acacha_swap xenvg Logical volume "acacha_swap" created # mkswap /dev/xenvg/acacha_swap
NOTA: A Xen#Xen_a_OVH hi ha el detall de com fer el mateix però per a instal·lar un Debian en comptes de una Ubuntu (més simple per que la gent de OVH proporcionen un fitxer comprimit amb la màquina virtual)
Ara muntem el LV que acabem de crear:
# mount /dev/mapper/xenvg-acacha /mnt
Ara necessitem deboostrap. Jo l'he instal·lat a mà:
# wget http://falcon.landure.fr/pool/etch/debootstrap/debootstrap_1.0.10_all.deb # dpkg -i debootstrap_1.0.10_all.deb
Però possiblement també anirà bé amb:
$ sudo apt-get install debootstrap
Consulteu Xen#Xen_a_OVH.
Primer cal afegir un hook per a Jaunty (si heu instal·lat ):
# cd /usr/share/debootstrap/scripts/ # sudo ln -s gutsy jaunty
Debootstrap uns permetrà instal·lar una Ubuntu molt bàsica. Executeu:
# debootstrap --arch=amd64 --include=linux-image-server,grub --components=main,restricted,universe,multiverse jaunty /mnt http://es.archive.ubuntu.com/ubuntu/
En els cas de OVH he utilitzat el seus mirrors d'Ubuntu:
# debootstrap --arch=amd64 --include=linux-image-server,grub --components=main,restricted,universe,multiverse jaunty /mnt http://mir1.ovh.net/ubuntu/
Si tot va bé, heu d'obtenir un missatge com:
I: Base system installed successfully.
Ara cal preparar el sistema. Entrem amb chroot:
# chroot /mnt
Establiu una paraula de pas per a root:
# passwd
Observeu els repositoris que us ha creat debootstrap:
# cat /etc/apt/sources.list deb http://mir1.ovh.net/ubuntu jaunty main restricted universe multiverse
Instal·lem l'editor de text nano (si no voleu utilitzar vi):
# apt-get install nano
NOTA: Apareixen uns missatges relacionats amb els locals... Ja ho solucionarem més endavant però de moment podeu fer:
# export LANG=C
Editeu el fitxer:
# nano /etc/apt/sources.list
Afegiu els security i els src:
deb-src http://mir1.ovh.net/ubuntu jaunty main restricted universe multiverse deb http://security.ubuntu.com/ubuntu intrepid-security main restricted universe multiverse deb-src http://security.ubuntu.com/ubuntu intrepid-security main restricted universe multiverse
Torneu a actualitzar.
# apt-get update
I feu un upgrade:
# apt-get upgrade
Instal·lem ssh:
# apt-get install ssh
Elimineu les referències al rellotge de maquinari per evitar que la domU es pengi:
# update-rc.d -f hwclockfirst remove # update-rc.d -f hwclock remove # rm /etc/udev/rules.d/85-hwclock.rules
Configureu la xarxa. Consulteu Xen#Xen_a_OVH per saber els detall de com obtenir una IP addicional (fail-over) de OVH.
Cal adaptar els fitxers:
Al fitxer /etc/network/interfaces heu de posar quelcom similar a:
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address <IP FAILOVER> # ip DomU netmask 255.255.255.255 gateway <IP PRINCIPAL> # ip Dom0 post-up /sbin/ip route add <IP PRINCIPAL>/32 dev eth0 # ip Dom0
On la:
NOTA: La última línia sembla que no va (post-up). Ho podem solucionar creant un fitxer com:
$ cat /etc/network/if-pre-up.d/gateway #!/bin/sh /sbin/ip route add 94.23.214.221/32 dev eth0
Cal fer-lo executable amb:
$ sudo chmod +x /etc/network/if-pre-up.d/gateway
I els fitxers hostname i hosts els podeu copiar del domO i adaptar-los (posar el nom que vulgueu) a la vostra màquina:
# exit # cp /etc/hosts /mnt/etc # cp /etc/hostname /mnt/etc $ sudo nano /mnt/etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost IP FAILOVER NOM_DNS_PROVEIT_PER_OVH # The following lines are desirable for IPv6 capable hosts #(added automatically by netbase upgrade) ::1 ip6-localhost ip6-loopback feo0::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
$ sudo nano /mnt/etc/hostname
I poseu el NOM_DNS_PROVEIT_PER_OVH.
També cal desactivar tls:
# mv /lib/tls /lib/tls.old
I per evitar l'error Xen#Xen_en_m.C3.A0quines_domU_es_penja_despr.C3.A9s_de_.22Running_local_boot_scripts_.28.2Fetc.2Frc.local.29.22:
$ cd /mnt/etc/event.d/ $ sudo cp tty1 xvc0 $ sudo joe xvc0
Sortim del chroot i desmuntem el sistema:
# exit # umount /mnt
Utilitzem les plantilles que es proporcionen la gent de OVH per crear el fitxer de configuració de xen que executara la domU Ubuntu Server:
# cd /etc/xen # cp domU-64bit-ovh acacha
Editeu la plantilla
# nano acacha
Per exemple pot quedar de la següent manera:
# -*- mode: python; -*- kernel="/boot/domU_64/vmlinuz-2.6.21-xxxx-xenU-ipv4-64" memory = "1024" maxmem = "1024" name = "acacha" vcpus=1 #interface=eth0 #dhcp=off # vif = [ ] vif = [ 'ip=87.98.227.105' ] # replace with DomU's IP netmask = "255.255.255.0" gateway = "94.23.214.222" # Dom0 # example for LVM or partition disk = [ 'phy:/dev/mapper/xenvg-acacha,/dev/hda1,w', 'phy:/dev/mapper/xenvg-acacha_swap,hda2,w' ] # example for image file #disk = [ 'file:xen/xenvg-node0001.img,hda1,w', 'file:/xen/xenvg-node0001-swap.img,hda2,w' ] # This uses environment variables XAUTHORITY and DISPLAY. You # can override that: # vfb = [ 'type=sdl,xauthority=/home/bozo/.Xauthority,display=:1' ] # # To create one using the VNC backend and sensible defaults: #vfb = [ 'type=vnc' ] # The backend listens on 127.0.0.1 port 5900+N by default, where N is # the domain ID. You can override both address and N: # # Or you can bind the first unused port above 5900: # vfb = [ 'type=vnc,vnclisten=0.0.0.0,vnunused=1' ] # You can override the password: # vfb = [ 'type=vnc,vncpasswd=MYPASSWD' ] # Set the hostname. #hostname= "node%d" % vmid # Set root device. root = "/dev/hda1" # Sets runlevel 2. #extra = "2" extra='console=xvc0 xencons=xvc0' #sdl=0 #vnc=0 #nographics=0
Ara ja podem provar la màquina amb:
# xm create -c /etc/xen/acacha
Un cop dins s'ha instal·lat i configurat:
$ sudo apt-get install slocate
$ sudo tasksel
I es marca Basic Ubuntu Server
Es soluciona els problemes de locales. Consulte locale
Recursos:
Consulteu l'apartat xeen-tools per tal d'obtenir més informació.
Primer cal mirar que els valors per defecte de xen-tools siguin correctes:
$ sudo joe /etc/xen-tools/xen-tools.conf
I busqueu la secció:
## # Networking setup values. ##
I indiqueu la pasarel·la (gateway), la màscara i l'adreça de difusió (broadcast) adequats per a la vostra xarxa. Per exemple:
gateway = 192.168.0.1 netmask = 255.255.255.0 broadcast = 192.168.1.255
També cal descomentar la línia:
# passwd = 1
Si volem que ens pregunti per una paraula de pas de l'usuari root diferent per a cada màquina virtual.
I canvieu també la opció mirror:
mirror = http://ftp.us.debian.org/debian/
Per els mirrors que utilitzeu al vostre fitxer /etc/apt/sources.list. Per exemple, per a Ubuntu:
mirror = http://es.archive.ubuntu.com/ubuntu/
Els fitxers del repositori seran utilitzats per insta·lar una versió bàsica de la màquina virtual. Xen utilitzar debootstrap
Ara ja podem crear una nova màquina virtual:
$ sudo xen-create-image --hostname=xen1.casa --ip=192.168.1.10 --ide --force
Abans d'executar la comanda, en un altre terminal podeu executar:
$ tail -f /var/log/xen-tools/xen1.casa.log
S'especifica la opció --lvm. Per exemple:
$ sudo xen-create-image --hostname=xen3.example.com --size=2Gb --swap=512Mb --ip=192.168.0.203 --force --memory=256Mb --arch=i386 --lvm=xen_vm
On el valor és el nom d'un grup de volum de LVM amb espai suficient:
$ sudo vgdisplay --- Volume group --- VG Name xen_vm System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 14 VG Access read/write VG Status resizable MAX LV 0 Cur LV 5 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 233,75 GB PE Size 4,00 MB Total PE 59841 Alloc PE / Size 57713 / 225,44 GB Free PE / Size 2128 / 8,31 GB VG UUID WN3a13-B1Ij-X53p-Svpl-oDty-GUh4-AVcWOB
Accés consola:
Cal afegir la línia:
extra='xencons=tty1'
Al fitxer de configuració de la màquina virtual. Això ens permetra accedir a la consola i evitar l'error:
Xen#Xen_en_m.C3.A0quines_domU_es_penja_despr.C3.A9s_de_.22Running_local_boot_scripts_.28.2Fetc.2Frc.local.29.22
Canvis a la domU
$ sudo cp -a /lib/modules/`uname -r`/ /mnt/myguest/lib/modules/
Per consultar les màquines virtuals:
$ xen-list-images Name: Sintesi2nESI_1.iescopernic.com Memory: 256 IP: 192.168.0.101 Name: Sintesi2nESI_2.iescopernic.com Memory: 256 IP: 192.168.0.102 Name: xen1.example.com Memory: 256 IP: 192.168.0.200 Name: xen3.example.com Memory: 256 IP: 192.168.0.203
S'utilitza:
$ xen-delete-image [options] [--hostname=]imageName1 [options] [--hostname=]imageName1
Per exemple:
xen-delete-image [options] [--hostname=]imageName1
Normalment les màquines virtuals s'emmagatzemen totes en una mateixa carpeta del sistema. Aquesta carpeta se la sol anomenar /home/xen:
$ ls -la /home/xen/ total 28 drwxr-xr-x 4 root root 4096 2009-04-20 21:14 . drwxr-xr-x 4 root root 4096 2009-04-20 21:02 .. drwxr-xr-x 5 root root 4096 2009-04-21 19:38 domains
La carpeta domains, conté les màquines virtual (una màquina virtual a cada carpeta). Les carpetes tenen el nom escollit per a la màquin virtual. Per exemple:
$ ls -la /home/xen/domains/ total 20 drwxr-xr-x 5 root root 4096 2009-04-21 19:38 . drwxr-xr-x 4 root root 4096 2009-04-20 21:14 .. drwxr-xr-x 2 root root 4096 2009-04-20 21:14 Sintesi2nESI_1.iescopernic.com drwxr-xr-x 2 root root 4096 2009-04-21 19:38 Sintesi2nESI_2.iescopernic.com drwxr-xr-x 2 root root 4096 2009-04-20 21:19 xen1.example.com
Dins de cada màquina virtual ens trobem:
NOTA: Si s'utilitza LVM, aquests no són els fitxers imatge. Consulteu Fitxers imatge amb LVM.
Per exemple:
$ ls -lah /home/xen/domains/Sintesi2nESI_1.iescopernic.com total 5510424 ... -rw-r--r-- 1 root root 5,0G 2009-04-21 15:16 disk.img -rw-r--r-- 1 root root 256M 2009-04-21 15:14 swap.img
A diferència d'altres sistemes com VirtualBox, la màquina virtual
Si s'utilitza la opció --lvm al crear una imatge de xen, aleshores no hi ha fitxers imatge si no que hi ha volums lògics de LVM. Per exemple, per una màquina anomenada xen3.example.com:
--- Logical volume --- LV Name /dev/xen_vm/xen3.example.com-swap VG Name xen_vm LV UUID SVLKI1-P0ly-MPm8-MxJd-urCD-pGZN-P3awiy LV Write Access read/write LV Status available # open 0 LV Size 512,00 MB Current LE 128 Segments 1 Allocation inherit Read ahead sectors 0 Block device 254:5 --- Logical volume --- LV Name /dev/xen_vm/xen3.example.com-disk VG Name xen_vm LV UUID jwXefL-4zE7-eqsb-KJux-mah1-yA0T-sOhzky LV Write Access read/write LV Status available # open 0 LV Size 2,00 GB Current LE 512 Segments 1 Allocation inherit Read ahead sectors 0 Block device 254:6
Aquesta màquina s'ha creat amb la comanda:
$ sudo xen-create-image --hostname=xen3.example.com --size=2Gb --swap=512Mb --ip=192.168.0.203 --force --memory=256Mb --arch=i386 --lvm=xen_vm
On xen_vm és el nom d'un volum lògic de LVM que tenia espai lliure:
$ sudo vgdisplay --- Volume group --- VG Name xen_vm System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 14 VG Access read/write VG Status resizable MAX LV 0 Cur LV 5 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 233,75 GB PE Size 4,00 MB Total PE 59841 Alloc PE / Size 57713 / 225,44 GB Free PE / Size 2128 / 8,31 GB VG UUID WN3a13-B1Ij-X53p-Svpl-oDty-GUh4-AVcWOB
Per cada màquina virtual hi ha un fitxer nom_maquina_virtual.cfg a la carpeta /etc/xen.
Per exemple:
$ ls -la ... r-xr-x 2 root root 4096 2009-02-20 07:56 auto -rwxr-xr-x 1 root root 896 2009-02-20 07:53 qemu-ifup drwxr-xr-x 2 root root 4096 2009-04-20 19:35 scripts -rw-r--r-- 1 root root 804 2009-04-21 15:18 Sintesi2nESI_1.iescopernic.com.cfg -rw-r--r-- 1 root root 804 2009-04-21 19:42 Sintesi2nESI_2.iescopernic.com.cfg -rw-r--r-- 1 root root 8276 2009-02-20 07:53 xend-config.sxp -rw-r--r-- 1 root root 6938 2007-12-29 18:57 xend-config-xenapi.sxp -rw-r--r-- 1 root root 1256 2007-12-29 18:57 xend-pci-permissive.sxp -rw-r--r-- 1 root root 4129 2007-12-29 18:57 xend-pci-quirks.sxp
El fitxer d'arrancada de grub, queda amb una entrada nova similar a:
title Xen 3.2 / Ubuntu 8.04.2, kernel 2.6.24-23-xen root (hd0,0) kernel /xen-3.2.gz module /vmlinuz-2.6.24-23-xen root=/dev/mapper/IescopernicXen-root ro console=tty0 module /initrd.img-2.6.24-23-xen quiet
Feu un link de la configuració de la vostra màquina virtual a la carpeta /etc/xen/auto
$ sudo ln -s /etc/xen/xen1.example.com.cfg /etc/xen/auto
NOTA: És possible que haguiu de crear la carpeta:
$ sudo mkdir /etc/xen/auto
La carpeta per defecte és /etc/xen/auto però es pot modificar a /etc/default/xendomains:
$ cat /etc/default/xendomains ... ## Type: string ## Default: /etc/xen/auto # # This variable sets the directory where domains configurations # are stored that should be started on system startup automatically. # Leave empty if you don't want to start domains automatically # (or just don't place any xen domain config files in that dir). # Note that the script tries to be clever if both RESTORE and AUTO are # set: It will first restore saved domains and then only start domains # in AUTO which are not running yet. # Note that the name matching is somewhat fuzzy. # XENDOMAINS_AUTO=/etc/xen/auto ...
Es poden aplicar els canvis sense reiniciar amb:
$ sudo /etc/init.d/xendomains restart
Comproveu-ho amb:
$ sudo xm list
Dos possibilitats:
TODO
$ sudo cat *.hvm kernel = “/usr/lib/xen/boot/hvmloader” builder = ‘hvm’ memory = 2048 name = “IntrepidHVM” vcpus = 1 vif = [ 'type=ioemu,bridge=eth1' ] disk = [ 'phy:/dev/sdb5,hda,w!','phy:/dev/loop0,hdc:cdrom,r'] device_model = ‘/usr/lib/xen/bin/qemu-dm’ vnc=1 boot=’d’
To evaluate hypervisor load Interpid PV DomU utilizing same image device :-
$ sudo joe intrepid.py name = ‘IntrepidPV’ bootloader=”/usr/bin/pygrub” memory = 2048 disk = ['phy:/dev/sdb5,hda,w'] vif = [ 'bridge=eth1' ] vfb = ['type=vnc,vncunused=1'] on_reboot = ‘restart’ on_crash = ‘restart’ $ sudo xm create intrepid.py $ vncviewer localhost:0
Recursos:
$ mkdir vm_base $ sudo mount -o loop /vserver/images/vm_base.img vm_base
L'exemple s'aplica a una màquina virtual anomenada prova.iescopernic.com i creada en una unitat lògica LVM anomenada
Consulteu la configuració de la màquina virtual:
$ cat /etc/xen/prova.iescopernic.com.cfg # Configuration file for the Xen instance prova.iescopernic.com, created # by xen-tools 3.8 on Thu May 28 17:02:40 2009. # # # Kernel + memory size # kernel = '/boot/vmlinuz-2.6.24-19-server' ramdisk = '/boot/initrd.img-2.6.24-19-server' memory = '512' # # Disk device(s). # root = '/dev/xvda2 ro' disk = [ 'phy:/dev/xen_vm/prova.iescopernic.com-swap,xvda1,w', 'phy:/dev/xen_vm/prova.iescopernic.com-disk,xvda2,w', ] ...
Ara que ja sabem on es troba el disc (/dev/xen_vm/prova.iescopernic.com-disk), el podeu muntar amb:
$ mkdir prova $ sudo mount /dev/xen_vm/prova.iescopernic.com-disk prova
Cal tenir el suport per a LVM instal·lat (se suposa que ja es té si no no es podria haver creat la màquina virtual).
Només es pot fer directament amb Xen amb màquines domU HVM. Consulteu Windows com a domU. Però es pot utilitzar qemu per aconseguir instal·lar la màquina virtual a una partició LVM o a un fitxer imatge.
Consulteu:
Qemu#Executar_una_instal.C2.B7laci.C3.B3_des_de_CD_amb_qemu_i_VNC
NOTA: Cal tenir en compte que no podem paravirtualitzar Windows, ja que paravitualitzar implica modificar el nucli del sistema domU i en el cas de Windows (al no ser Open Source) només pot fer una modificació Microsoft i no la ha fet pas. Per tant, cal utilitzar HVM, o el que és el mateix, només ho podreu fer amb certs processadors.
Cal instal·lar un Xen a Debian Lenny com ho faríeu per a qualsevol altre màquina virtual. En aquest cas però necessiteu els paquets extres Xen IO Emulation tools:
$ sudo apt-get install xen-ioemu-3.0.3-1
En aquest cas cal utilitzar un fitxer imatge (és pot fer amb LVM?, no està clar...)
$ mkdir /home/xen $ mkdir /home/xen/domains $ mkdir /home/xen/domains/win01 $ sudo dd if=/dev/zero of= /home/xen/domains/win01/disk.img bs=1M count=4096
El fitxer de configuració del domU serà:
$ sudo joe /Etc/xen/win01.cfg kernel = '/usr/lib/xen/boot/hvmloader' builder = 'hvm' memory = '256' device_model='/usr/lib/xen/bin/qemu-dm' # Disks disk = [ 'file:/home/xen/domains/win01/disk.img,ioemu:hda,w', 'file:/home/cc/iso-images/WindowsXP-SP2/image.iso,ioemu:hdc:cdrom,r' ] # Hostname name = 'win01' # Networking vif = ['type=ioemu, bridge=xenbr0'] # Behaviour boot='d' vnc=1 vncviewer=1 sdl=0
Fixeu-vos que configurem VNC per tal de poder accedir a la màquina per entorn gràfic. Per executar-la:
$ sudo xm create win01.cfg
Ara cal iniciar un client VNC i connectar-lo a:
localhost Port: 5900
Recursos:
Durant la creació de les màquines virtuals amb #xen-tools, podeu consultar elf fitxers de lo que es troben a la carpeta:
$ sudo tail -f /var/log/xen-tools/NOM_MAQUINA_VIRTUAL.log
Per exemple:
$ sudo tail -f /var/log/xen-tools/Sintesi2nESI_1.iescopernic.com.log
Si teniu qualsevol error, segurament en trobareu el detall al fitxer de log.
També podeu consultar el log amb:
$ sudo xm log
Es pot consultar el boot de Xen amb:
$ sudo xm dmesg \ \/ /___ _ __ |___ / |___ \ / | _ __ ___/ | _ __ _ __ ___ \ // _ \ '_ \ |_ \ __) | | |__| '__/ __| |__| '_ \| '__/ _ \ / \ __/ | | | ___) | / __/ _| |__| | | (__| |__| |_) | | | __/ /_/\_\___|_| |_| |____(_)_____(_)_| |_| \___|_| | .__/|_| \___| |_| (XEN) Xen version 3.2.1-rc1-pre ([email protected]) (gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu4)) Fri Feb 20 06:53:43 UTC 2009 (XEN) Latest ChangeSet: unavailable (XEN) Command line: (XEN) Video information: ...
Cal descomentar una línia al fitxer:
/etc/xen/xend-config.sxp
El fitxer de log estan a la carpeta:
/var/log/xen
El fitxer de log més important el trobareu a:
$ sudo tail -f /var/log/xen/xend.log
La memòria RAM que utilitza cada màquia es pot consultar amb xm:
$ sudo xm list Name ID Mem VCPUs State Time(s) AlfaFS 6 1024 1 -b---- 143.7 Domain-0 0 1968 1 r----- 4840.5 negrell 4 1024 1 -b---- 1607.3
En aquest cas es tracta d'un sistema de 4GB de RAM on 1968 són de la dom0 i hi ha dos màquines virtuals amb 1024 de RAM cadascuna.
NOTA: La RAM que no apareix en lloc es RAM reservada per a l'hypervisor
A les màquines virtuals (domU) se'ls hi assigna memòria mitjançant la seva configuració:
$ cat /etc/xen/AlfaFS bootloader = '/usr/lib/xen-3.2-1/bin/pygrub' memory = 1024 name = 'AlfaFS' vif = [ 'mac=00:16:3E:00:00:a0, bridge=eth0' ] # replace with DomU's IP dhcp = 'dhcp' #netmask = '255.255.255.0' #gateway = 'XXX' # Dom0 disk = [ 'phy:/dev/xen_vm/AlfaFS,xvda1,w','phy:/dev/xen_vm/AlfaFSswap,xvda2,w' ] $ cat negrell bootloader = '/usr/lib/xen-3.2-1/bin/pygrub' memory = 1024 name = "negrell" vif = [ 'mac=00:16:3E:00:00:04, bridge=eth0' ] # replace with DomU's IP dhcp = "dhcp" #netmask = "255.255.255.0" #gateway = "XXX" # Dom0 disk = ['phy:/dev/xen_vm/negrell,xvda1,w','phy:/dev/xen_vm/negrellswap,xvda2,w' ]
Un dels problemes que podem tenir és saber la memòria total de la que disposa el sistema. Amb l'ordre free:
$ free -m total used free shared buffers cached Mem: 1968 511 1456 0 40 235 -/+ buffers/cache: 234 1733 Swap: 3812 0 3812
Només podem veure la quantitat de RAM que em reservat per a la domO. Podem utilitzar l'ordre dmidecode per obtenir informació sobre el sistema:
$ dmidecode | more ... Handle 0x1100, DMI type 17, 23 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 2048 MB Form Factor: FB-DIMM Set: 1 Locator: DIMM 1A Bank Locator: Not Specified Type: DDR2 FB-DIMM Type Detail: Synchronous Speed: 667 MHz (1.5 ns) ... Handle 0x1102, DMI type 17, 23 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: No Module Installed Form Factor: FB-DIMM Set: 3 Locator: DIMM 3C Bank Locator: Not Specified Type: DDR2 FB-DIMM
Type Detail: Synchronous
Speed: Unknown
Aniran sortint les ranures que tenim de memòria i si hi ha instal·lat memòria o no.
NOTA: Amb dmidecode també podeu consultar el nombre de CPUs que té la màquina
Es pot canviar la RAM assignada a una màquina en calent. Per exemple per canviar la RAM assignada a la domO:
$ sudo xm mem-set 0 1900 $ sudo xm list Name ID Mem VCPUs State Time(s) AlfaFS 6 1024 1 -b---- 143.8 Domain-0 0 1900 1 r----- 4846.4 negrell 4 1024 1 -b---- 1608.0
Per defecte la dom0 s'assigna tota la memòria que no està assignada a les màquines virtuals. Al crear una nova màquina de 1024MB el resultat és:
$ sudo xm list Name ID Mem VCPUs State Time(s) AlfaFS 6 1024 1 -b---- 144.2 BravoFS 7 1024 1 -b---- 3.6 Domain-0 0 944 1 r----- 4877.3 negrell 4 1024 1 -b---- 1611.1
Per evitar que la dom0 es quedi sense memòria, podeu modificar el fitxer /etc/xen/xend-config.sxp:
# Dom0 will balloon out when needed to free memory for domU. # dom0-min-mem is the lowest memory level (in MB) dom0 will get down to. # If dom0-min-mem=0, dom0 will never balloon out. (dom0-min-mem 256)
La quantitat de memòria necessària per a la domO depèn del que si executi, però si només fa de servei Xen i té un servidor SSH i poca cosa més, es pot arribar a executar amb 128MB. Si voleu estar tranquils assigneu 256MB o utilitzeu les ordres top i free per saber l'ús de memòria que fa la vostra màquina.
xenman
Exemples de creació de màquines virtuals:
$ sudo mkdir /home/xen $ sudo xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --arch=amd64 --role=udev
Un altre exemple:
$ sudo xen-create-image --hostname=Sintesi2nESI_1.iescopernic.com --size=5Gb --swap=256Mb --ip=192.168.0.101 --role=udev
Un altre:
$ sudo xen-create-image --force --hostname=Sintesi2nESI_3.iescopernic.com --memory=412Mb --size=5Gb --swap=256Mb --ip=192.168.0.103 --role=udev --accounts
$ sudo xen-create-image --force --hostname=cs3.iescopernic.com --memory=412Mb --size=5Gb --swap=256Mb --ip=192.168.0.103 --role=udev --accounts --lvm
Un exemple força complet:
$ xen-create-image --hostname=xen1.example.com --size=2Gb --swap=256Mb --ide \ --ip=192.168.0.101 --netmask=255.255.255.0 --gateway=192.168.0.1 --force \ --dir=/home/xen --memory=64Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.22-14-xen \ --initrd=/boot/initrd.img-2.6.22-14-xen --debootstrap --dist=gutsy \ --mirror=http://de.archive.ubuntu.com/ubuntu/ --passwd
Podeu trobar més exemples d'aquesta eina a:
http://www.xen-tools.org/software/xen-tools/examples.html
I consultant el manual
$ man xen-create-image
Recursos:
Es pot consultar el fitxer sense comentaris amb:
# cat /etc/xen-tools/xen-tools.conf | grep -v '^#\|^$\|^;' install-method = debootstrap size = 4Gb # Disk image size. memory = 128Mb # Memory size swap = 128Mb # Swap size fs = ext3 # use the EXT3 filesystem for the disk image. dist = etch # Default distribution to install. image = sparse # Specify sparse vs. full disk images. kernel = /boot/vmlinuz-`uname -r` initrd = /boot/initrd.img-`uname -r` mirror = http://ftp.us.debian.org/debian/ ext3_options = noatime,nodiratime,errors=remount-ro ext2_options = noatime,nodiratime,errors=remount-ro xfs_options = defaults reiser_options = defaults
Atenció: Compte amb les opcions:
kernel = /boot/vmlinuz-`uname -r` initrd = /boot/initrd.img-`uname -r`
En Ubuntu el kernel de Xen no està preparat per a màquines domU i us pot donar problemes. Millor que indiqueu directament quin és el kernel i el fitxer initrd, sense utilitzar uname.
La comanda xm ens proporciona el Xen management user interface. Permet gestionar Xen.
xm create (executar)
Executa una màquina virtual:
$ sudo xm create /etc/xen/cs2.iescopernic.com.cfg Using config file "/etc/xen/cs2.iescopernic.com.cfg". Started domain cs2.iescopernic.com
També podem utilitzar la opció console (-c) per tal de que ens torni una consola de la nova màquina virtual (també és útil per veure la carrega de la màquina virtual):
$ sudo xm create -c /etc/xen/cs2.iescopernic.com.cfg ... ... * Running local boot scripts (/etc/rc.local) [ OK ] Ubuntu 8.04 cs2.iescopernic.com tty1 cs2.iescopernic.com login:
Es pot tornar a la consola de la màquina dom0 amb la combinació de tecles:
Ctrl+AltGr+] (és a dir les tecles Ctrl+Alt Gr (alt de la dreta) + la tecla de l'asterisc)
Podeu consultar totes les opcions amb:
$ sudo xm create --help_config
xm shutdown (apagar)
Atura correctament una màquina virtual.
$ sudo xm shutdown cs1.iescopernic.com
xm destroy:
És com apagar un ordinador "a la brava" (com treure l'electricitat). Útil quan la màquina no contesta:
$ sudo xm destroy cs1.iescopernic.com
Mostrar la llista de màquines en execució:
$ sudo xm list Name ID Mem VCPUs State Time(s) Domain-0 0 1588 2 r----- 467.2
Podeu obtenir més detalls amb:
$ sudo xm list --long |more
Per mostrar totes les màquines disponibles i creades amb xen-tools:
$ sudo xen-list-images ...
Al executar una màquina amb:
$ xm create /etc/xen/cs1.iescopernic.com.cfg
tenim:
$ sudo xm list Name ID Mem VCPUs State Time(s) Domain-0 0 1588 2 r----- 470.4 cs1.iescopernic.com 2 400 1 -b---- 1.4
xm console
Permet accedir a una màquina virtual (domU) des de la màquina dom0:
$ sudo xm console cs2.iescopernic.com ... cs2.iescopernic.com login:login:
Es pot tornar a la consola de la màquina dom0 amb la combinació de tecles:
Ctrl+AltGr+] (és a dir les tecles Ctrl+Alt Gr (alt de la dreta) + la tecla de l'asterisc)
Actualitzar màquines virtuals:
$ sudo xen-update-image --dir=/vserver/images vm03.example.com
xm info
Mostra informació de Xen:
$ sudo xm info host : IescopernicXen release : 2.6.24-23-xen version : #1 SMP Mon Jan 26 03:12:59 UTC 2009 machine : i686 nr_cpus : 2 nr_nodes : 1 cores_per_socket : 2 threads_per_core : 1 cpu_mhz : 1995 hw_caps : bfebfbff:20100000:00000000:00000140:0000e39d:00000000:00000001 total_memory : 2018 free_memory : 256 max_free_memory : 1654 max_para_memory : 1650 max_hvm_memory : 1638 node_to_cpu : node0:0-1 xen_major : 3 xen_minor : 2 xen_extra : .1-rc1-pre xen_caps : xen-3.0-x86_32p xen_scheduler : credit xen_pagesize : 4096 platform_params : virt_start=0xf5800000 xen_changeset : unavailable cc_compiler : gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu4) cc_compile_by : buildd cc_compile_domain : buildd cc_compile_date : Fri Feb 20 06:53:43 UTC 2009 xend_config_format : 4
xm dmesg
Mostra el boot de Xen.
$ xen dmesg
xm console
Es connecta amb una consola a la màquina virtual:
$ sudo xm console <name> - Log in on a virtual machine.
TODO: "to log in on that virtual machine (type CTRL+] if you are at the console, or CTRL+5 if you're using PuTTY to go back to dom0), or use an SSH client to connect to it (192.168.0.101). "
Recursos:
Per instal·lar xen-shell, primer cal instal·lar uns prerequisits:
$ sudo apt-get install sudo libterm-readline-gnu-perl
I ara:
$ sudo apt-get install xen-shell
Xen-shell permet als usuaris accedir a la màquina HOST (dom0) i els proporciona una consola que només els permet gestionar la seva màquina virtual.
Primer cal crear un usuari:
$ sudo adduser usuari
I canviar la shell (normalment /bin/bash) per /usr/bin/xen-login-shell
$ sudo chsh -s /usr/bin/xen-login-shell usuari
Ara cal editar el fitxer /etc/sudoers (fitxers que gestiona la comanda sudo) i permetre al nou usuari que pugui executar les comandes:
No editeu mai el fitxers sudoers directament. Si cometeu qualsevol error podeu perdre l'accés a la màquina. Cal utilitzar la comanda visudo:
$ sudo visudo
I afegiu les línies:
User_Alias XENUSERS = usuari Cmnd_Alias XEN = /usr/sbin/xm Cmnd_Alias XENIMG = /usr/bin/xen-create-image XENUSERS ALL = NOPASSWD: XEN,XENIMG
A les imatges que l'usuari tingui accés, cal afegir una línia al fitxer de configuració. Per exemple editem la imatge prova.iescopernic.com:
$ sudo joe /etc/xen/prova.iescopernic.com.cfg
I afegim:
# These users may control this instance. xen_shell = 'usuari'
Si volem que l'usuari pugui tornar a crear la imatge des de 0 cal afegir a la home del usuari un script de shell:
$ sudo joe /home/usuari/image.sh
I a dins cal posar com es torna a crear la imatge. Per exemple:
#!/bin/sh /usr/bin/sudo /usr/bin/xen-create-image --hostname=bob --ip=192.168.0.105 --netmask=255.255.255.0 --gateway=192.168.0.1 --dir=/vserver/images -dist=sarge --debootstrap --force
Cal fer l'script executable:
$ sudo chmod 755 /home/bob/image.sh
Ara l'usuari usuari és pot connectar per ssh i accedir a la shell.
Recursos:
xen-shell> help xen-shell v1.8.110 The following commands are available within this shell: boot - Boot the Xen guest. console - Gain access to a Xen guest via the serial console. exit - Exit the shell. help - Show general, or command-specific, help information. passwd - Change the password used to access this host. pause - This will pause the Xen guest. quit - Exit this shell. reboot - Reboot the Xen guest. serial - Gain access to the Xen guest via the serial console. shutdown - Shutdown the Xen guest. status - Show the status of the Xen guest. sysreq - Send a 'sysreq' keystroke to the guest. top - Show system resource usage. unpause - This will unpause the Xen guest. uptime - Show the uptime information of your guest system and this host. version - Show the version of this shell, and of Xen. whoami - Show the user you're connected to the host system as. For command-specific help run "help command".
L'script de configuració de la xarxa és /etc/xen/scripts/network-bridge:
# network-bridge (start|stop|status) {VAR=VAL}* # # Vars: # # bridge The bridge to use (default ${netdev}). # netdev The interface to add to the bridge (default gateway device). # antispoof Whether to use iptables to prevent spoofing (default no).
NOTA: Aquest script s'executa durant l'arrancada del servidor Xen i el seu objectiu es crear els bridges per poder treballar amb xarxa a les màquines virtuals
És el que s'encarrega de crear els bridges al executar Xen. Això és així per que s'indica d'aquesta manera al fitxer principal de configuració de Xen:
$ cat /etc/xen/xend-config.sxp (xend-relocation-server no) (xend-relocation-hosts-allow ) (network-script 'network-bridge') (vif-script vif-bridge) (dom0-min-mem 196) (dom0-cpus 1)
Xen crea per defecte un bridge. Si consulteu la configuració de les interfícies de xarxa amb ifconfig:
$ ifconfig eth0 Link encap:Ethernet HWaddr 00:0f:fe:de:8f:f7 inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20f:feff:fede:8ff7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:144230 errors:0 dropped:0 overruns:0 frame:0 TX packets:29449 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:46316390 (44.1 MB) TX bytes:3413438 (3.2 MB) ... peth0 Link encap:Ethernet HWaddr 00:0f:fe:de:8f:f7 inet6 addr: fe80::20f:feff:fede:8ff7/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:144401 errors:0 dropped:0 overruns:0 frame:0 TX packets:30656 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:49117571 (46.8 MB) TX bytes:3964340 (3.7 MB) Memory:f0180000-f01a0000
Hi ha una interfície virtual anomenada peth0. La eth0 i peth0 estan enllaçades com podeu veure amb:
$ brctl show bridge name bridge id STP enabled interfaces eth0 8000.000ffede8ff7 no peth0
NOTA: A partir de la versió 3.2 de xen el bridge s'anomena eth0, eth1
Cada com que s'inicia una màquina domU s'inicia una targeta de xarxa:
vifX.0
On X és el número identificador de la màquina virtual. Aquest número s'assigna de forma correlativa al crear la màquina i no es pot canviar (AFAIK), pero el podeu consultar amb:
$ sudo xm list Name ID Mem VCPUs State Time(s) Domain-0 0 3500 4 r----- 84.6 node0001 4 256 1 -b---- 7.1 ubuntuserver 6 256 1 -b---- 23.9
És la columna ID. Ara si veu ifconfig:
$ sudo ifconfig vif4.0 Link encap:Ethernet HWaddr fe:ff:ff:ff:ff:ff inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:15341 errors:0 dropped:0 overruns:0 frame:0 TX packets:25534 errors:0 dropped:38 overruns:0 carrier:0 collisions:0 txqueuelen:32 RX bytes:853442 (833.4 KiB) TX bytes:33363100 (31.8 MiB) vif6.0 Link encap:Ethernet HWaddr fe:ff:ff:ff:ff:ff inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:100 errors:0 dropped:0 overruns:0 frame:0 TX packets:109 errors:0 dropped:921 overruns:0 carrier:0 collisions:0 txqueuelen:32 RX bytes:27316 (26.6 KiB) TX bytes:14486 (14.1 KiB)
Que estan connectades al bridge:
$ sudo brctl show bridge name bridge id STP enabled interfaces eth0 8000.0022649889d0 no peth0 vif4.0 vif6.0
Esquema de la xarxa
LAN0 LAN1 | | +-----+-----------------------------------------------------+-----+ | | | | | +---+-------------------------+ +-------------------------+---+ | | | | | | | | | | | peth0 | | peth1 | | | | | | | | | | eth0 vif1.0 vif1.1 | | vif2.0 vif2.1 eth1 | | | | | | | | | | | | | +---^------------+-------+----+ +----+-------+------------^---+ | | | | | | | | | | | +------+-------+-----------+-------+------+ | | | | | | | | | | | | | | | +----+-------+----+ +----+-------+----+ | | | | | | | | | | | | | | | | | | | | | eth0 eth1 | | eth0 eth1 | | | | | | | | | | | | | | | | | | | +-+-+ | | +-+-+ +-+-+ | | +-+-+ +-+-+ | | +-+-+ | | | | | | | | | | | | | | | | | | | | | | www ssh | | www ssh ftp pop | | www ssh ftp pop | | ftp pop | | | | | | | | | | Domain0 | | Domain1 | | Domain2 | | Domain0 | +-----------+ +-----------------+ +-----------------+ +-----------+
Recursos:
Per a les màquina virtuals Xen disposa d'un prefix de fabricant per a evitar conflictes de MAC. Segons:
$ cat /usr/share/nmap/nmap-mac-prefixes | grep Xensource 00163E Xensource
El prefix és:
00:16:3E
Al iniciar màquines virtuals amb Xen a la màquina domO es generen automàticament unes normes:
$ sudo iptables -nvL Chain INPUT (policy ACCEPT 2532K packets, 228M bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 17M packets, 17G bytes) pkts bytes target prot opt in out source destination 5358K 7561M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 PHYSDEV match --physdev-in vif1.0 652K 32M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 PHYSDEV match --physdev-in vif4.0 102K 100M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 PHYSDEV match --physdev-in vif5.0 3586 211K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 PHYSDEV match --physdev-in vif7.0
Els paquets que passen pels bridges generats per al correcte funcionament de la xarxa amb Xen passen per PREROUTING, FORWARD i POSTROUTING. Les normes anteriors s'asseguren que els paquets passin sense problemes.
Consulteu iptables
A Ubuntu cal tenir en compte certs temes.
Si s'assigna sempre la mateixa MAC a la màquina virtual:
$ sudo joe /etc/xen/xen1.example.com.cfg
vif = [ 'mac=00:16:3E:00:00:01', 'ip=192.168.0.106' ]
Editar el fitxer: /etc/udev/rules.d/70-persistent-net.rules a la domU:
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:16:3E:00:00:01", NAME="eth0"
# The primary network interface auto eth0 iface eth0 inet dhcp
NOTA: les MAC que comencen per 00:16:3E estan reservades a Xen. Poseu MACs d'aquest rang per evitar conflictes:
$ cat /usr/share/nmap/nmap-mac-prefixes | grep 00163E 00163E Xensource
Un altre alternativa: es proposa als comentaris de l'article (Another aproach):
SUBSYSTEM=="net", SUBSYSTEMS=="xen", DRIVERS=="vif", ATTRS{nodename}=="device/vif/0", NAME="eth0" SUBSYSTEM=="net", SUBSYSTEMS=="xen", DRIVERS=="vif", ATTRS{nodename}=="device/vif/1", NAME="eth1
$ sudo /etc/xen/scripts/network-bridge status ============================================================ 14: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether 00:1f:29:5e:bc:c2 brd ff:ff:ff:ff:ff:ff inet 192.168.1.8/24 brd 192.168.1.255 scope global eth0 inet6 fe80::21f:29ff:fe5e:bcc2/64 scope link valid_lft forever preferred_lft forever 14: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether 00:1f:29:5e:bc:c2 brd ff:ff:ff:ff:ff:ff inet 192.168.1.8/24 brd 192.168.1.255 scope global eth0 inet6 fe80::21f:29ff:fe5e:bcc2/64 scope link valid_lft forever preferred_lft forever bridge name bridge id STP enabled interfaces eth0 8000.001f295ebcc2 no peth0 eth2 8000.0022649889d0 no peth2 80.68.86.192/29 dev dummy0 proto kernel scope link src 80.68.86.193 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.8 default via 192.168.1.1 dev eth0 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 80.68.86.192 0.0.0.0 255.255.255.248 U 0 0 0 dummy0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 ============================================================
Filtra a nivell de bridge (commutador) o nivell 2. ÉS un firewall similar a iptables per filtrar continguts a nivell de bridge.
$ grep "vmx" /proc/cpuinfo
o
$ grep "svm" /proc/cpuinfo
Compte!: S'esborrarà el directori /xen. Podeu fer copia abans dels seus continguts amb:
# cd /xen # mv DomU-* /home/lavostrahome
Creació de LVM
# umount /dev/md2 # pvcreate /dev/md2 Physical volume "/dev/md2" successfully created # vgcreate xenvg /dev/md2 Volume group "xenvg" successfully created
Ara cal afegir els LV. Per exemple
# lvcreate -L 5G -n node01 xenvg # mkfs.ext3 /dev/xenvg/node01
També cal crear les SWAP:
# lvcreate -L256M -n node01-swap xenvg # mkswap /dev/xenvg/node01-swap
Per crear acacha:
# lvcreate -L 250G -n acacha xenvg # mkfs.ext3 /dev/xenvg/acacha
Per crear la swap d'acacha:
# lvcreate -L1G -n acacha_swap xenvg Logical volume "acacha_swap" created # mkswap /dev/xenvg/acacha_swap
Para crear tota una sèrie de LVs:
# for i in `seq 1 9`; do lvcreate -L 5G -n node0$i xenvg; lvcreate -L256M -n node0$i-swap xenvg; done # for i in /dev/xenvg/node0[1-9]; do mkfs.ext3 $i; mkswap $i-swap; done
DomU Debian ofert per OVH:
# mount -t ext3 /dev/xenvg/node01 /mnt # también verifique en /etc/fstab # cd /mnt # tar xfj /xen/DomU-64Bit-Debian-Etch.tbz # para una DomU 64bit
o
# tar xfj /xen/DomU-32Bit-Debian-Etch.tbz # para una DomU 32bit
# chroot /mnt # passwd
Ara cal adaptar els fitxers:
Al fitxer /etc/network/interfaces heu de posar quelcom similar a:
auto eth0 iface eth0 inet static address <IP FAILOVER> # ip DomU netmask 255.255.255.255 gateway <IP PRINCIPAL> # ip Dom0 post-up /sbin/ip route add <IP PRINCIPAL>/32 dev eth0 # ip Dom0
On la:
I els fitxers hostname i hosts els podeu copiar del domO i adaptar-los (posar el nom que vulgueu) a la vostra màquina:
# exit # cp /etc/hosts /mnt/etc # cp /etc/hostname /mnt/etc $ sudo nano /mnt/etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost IP FAILOVER NOM_DNS_PROVEIT_PER_OVH # The following lines are desirable for IPv6 capable hosts #(added automatically by netbase upgrade) ::1 ip6-localhost ip6-loopback feo0::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
$ sudo nano /mnt/etc/hostname
I poseu el NOM_DNS_PROVEIT_PER_OVH.
I crear un fitxer de configuració a la carpeta /etc/xen/, per exemple
# joe /etc/xen/node01
# umount /mnt # xm create -c node01
Recursos:
Copia literal de la web:
http://guias.ovh.es/ManualUtilizacionXen
Por razones de seguridad, la infraestructura de red de OVH no le permite realizar "bridging", es decir, añadir las interfaces de red virtuales directamente a la interfaz de red real.
Aunque éste es el modo por defecto de funcionamiento de Xen, es necesario cambiarlo.
En la instalación de la distribución Debian/Xen de OVH todo está ya preparado para su uso. Por tanto Xen está ya configurado sin bridge, en modo routing.
Esto quiere decir, que el tráfico que viene de los servidores virtuales no se envía directamente al siguiente switch, sino se encamina mediante el host.
Se precisan operaciones en 3 niveles:
* la red exterior: Encamina las IP failover o la subred IP para las diferentes instancias virtuales en el servidor. Se gestiona desde el Manager. * el servidor: El kernel de linux debe saber donde enviar los paquetes recibidos por las direcciones adicionales. Esta parte se gestiona por Xen a partir del momento que la IP está configurada en un servidor virtual. * el servidor virtual: El kernel del servidor virtual debe saber donde enviar el tráfico (respuesta: hacia el servidor real, que hará función de pasarela) y cómo llegar.
En los servidores creados con la distribución Xen de OVH, sólo es necesario adaptar el fichero /etc/network/interfaces en cada servidor virtual:
auto eth0 iface eth0 inet static
address <IP FAILOVER> # ip DomU netmask 255.255.255.255 gateway <IP PRINCIPAL> # ip Dom0 post-up /sbin/ip route add <IP PRINCIPAL>/32 dev eth0 # ip Dom0
Consulteu Crear una Ubuntu Server Jaunty com a domU sense xen-tools (a mà i amb debootstrap)
$ cat installKarmic_sensedebootstrap.sh NAME=AlfaFS XEN_VG=xen_vm SIZE=100G SWAP_SIZE=512MB DISTRO=karmic RAM=1024 MAC=00:16:3E:00:00:a0 sudo lvcreate -L $SIZE -n $NAME $XEN_VG || exit sudo mkfs.ext3 /dev/$XEN_VG/$NAME sudo lvcreate -L $SWAP_SIZE -n ${NAME}swap $XEN_VG && sudo mkswap /dev/$XEN_VG/${NAME}swap sudo mkdir /mnt/${NAME} sudo mount /dev/mapper/$XEN_VG-$NAME /mnt/${NAME} #sudo /usr/sbin/debootstrap --arch=amd64 --include=linux-image-server,grub --components=main,restricted,universe,multiverse #$DISTRO /mnt/${NAME} http://es.archive.ubuntu.com/ubuntu/ sudo mount /dev/mapper/xen_vm-repositori_maquina_virtual /mnt/repositori_maquina_virtual sudo tar -xvpzf /mnt/repositori_maquina_virtual/karmic_ubuntu_server.tar.gz -C /mnt/${NAME}/ sudo umount /mnt/${NAME} sudo bash -c "cat <<EOF >/etc/xen/${NAME} bootloader = '/usr/lib/xen-3.2-1/bin/pygrub' memory = ${RAM} name = '${NAME}' vif = [ 'mac=${MAC}, bridge=eth0' ] # replace with DomU's IP dhcp = 'dhcp' #netmask = '255.255.255.0' #gateway = 'XXX' # Dom0 disk = [ 'phy:/dev/${XEN_VG}/${NAME},xvda1,w','phy:/dev/${XEN_VG}/${NAME}swap,xvda2,w' ] EOF"
Consulteu Linux_Kernel#Obtenir_la_configuraci.C3.B3_del_nucli_que_s.27est.C3.A0_executant
Algunes CPU contenen extensions que permeten virtualitzar sistemes per hardware. El nom de la extensió depèn del fabricant:
per comprovar si una CPU AMD suporta virtualització:
$ cat /proc/cpuinfo | grep svm
Per a Intel:
$ cat /proc/cpuinfo | grep vmx
o:
$ egrep '(vmx|svm)' --color=always /proc/cpuinfo
També podeu consultar dmesg:
$ xm dmesg | grep -i hvm
Quan es virtualitza una màquina virtual sense suport per HVM se l'anomena paravirtualització. Per entendre millor els tipus de virtualització podeu consultar:
http://www.vmware.com/files/pdf/VMware_paravirtualization.pdf
Recursos:
Primer cal crear els fitxers imatge amb [dd]]:
$ dd if=/dev/zero of=/home/xen1.example.com.img bs=1024k count=4000
Això crea una imatge de 4GB. Ara el CD:
$ dd if=/dev/cdrom of=/home/ubuntu8_10_server_amd64.iso
Ara el fitxer de configuració de Xen:
$ sudo joe /etc/xen/xen1.example.com.cfg import os, re arch = os.uname()[4] kernel = "/usr/lib/xen-default/boot/hvmloader" builder='hvm' memory = 512 shadow_memory = 8 name = "xen1.example.com" vif = [ 'type=ioemu, bridge=eth0' ] disk = [ 'file:/home/xen1.example.com.img,xvda,w', 'file:/home/ubuntu8_10_server_amd64.iso,xvdc:cdrom,r' ] #disk = [ 'file:/home/xen1.example.com.img,xvda,w', 'phy:/dev/cdrom,xvdc:cdrom,r' ] device_model = '/usr/lib/xen-default/bin/qemu-dm' # boot on floppy (a), hard disk (c) or CD-ROM (d) # default: hard disk, cd-rom, floppy boot="dc"
L'opció
boot="dc"
Fa que la màquina virtual s'executi primer el CD i després el disc dur.
sdl=0 vnc=1 vnclisten="0.0.0.0" vncconsole=1 vncpasswd='howtoforge' stdvga=0 serial='pty' usbdevice='tablet'
on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart'
Consulteu dpkg-divert.
Si us fixeu al posar console=xvco només mostra els missatges del nucli al arrancar. el grub de la màquina virtual és:
title Ubuntu 9.10, kernel 2.6.31-14-server root (hd0,0) kernel /boot/vmlinuz-2.6.31-14-server root=/dev/xvda1 ro console=xvc0 initrd /boot/initrd.img-2.6.31-14-server
Després d'executar el nucli s'inicia el ramdisk. Si durant la execució del ramdisk al intentar muntar el sistema de fitxers este té errors de fsck aleshores s'aturarà amb el missatge:
Premeu Ctrl+D per continuar o poseu paraula de pas de root per a fer el manteniment...
El problema és que amb xvc0 aquest missatge no es mostra (ni cap després del kernel excepte el login!). Al treure xvc0 ja surt el missatge i podem recuperar el sistema introduint la paraula de pas de root i:
# fsck
Cal definir el bridge al fitxer /etc/xen/xend-config.sxp:
$ sudo cp xend-config.sxp xend-config.sxp.old (xend-relocation-server no) (xend-relocation-hosts-allow ) (network-script 'network-bridge netdev=eth0') (vif-script vif-bridge) (dom0-min-mem 196) (dom0-cpus 0)
---
o
(xend-unix-server yes) (xend-relocation-server no) (xend-relocation-hosts-allow '^localhost$ ^localhost\\.localdomain$') (network-script 'network-route netdev=eth0') (vif-script vif-route) (dom0-min-mem 64) (dom0-cpus 0)
NOTA: On posa eth0 cal posar la interfície de xarxa que correspongui!!
També cal tornar a iniciar xen:
$ sudo /etc/init.d/xend start $ sudo /etc/init.d/xendomains start
Abans hi havia:
$ cat xend-config.sxp.old | grep -v '#'
(network-script network-dummy) (vif-script vif-bridge) (dom0-min-mem 196) (dom0-cpus 0) (vncpasswd )
Cal instal·lar el paquet tzdata
$ sudo apt-get install tzdata $ sudo dpkg-reconfigure tzdata
Sembla que succeïx amb els kernel domU d'Ubuntu.
Alternatives que es proposen i que no he provat:
Instal·lar el Kernel de Debian:
echo "deb http://ftp.br.debian.org/debian lenny main" >> /etc/apt/sources.list aptitude update aptitude install linux-image-2.6.26-2-xen-686
Canviar el paràmetre vcpus de 2 a 1.
Recursos:
$ sudo xm create /etc/xen/prova.iescopernic.com.cfg Using config file "/etc/xen/prova.iescopernic.com.cfg". Error: (2, 'Invalid kernel', 'xc_dom_find_loader: no loader found\n')
Aquest error indicar que el kernel no és xen-aware.
Recursos
Solució 1:
Sembla que hi ha un error a 30-disable-gettys de xen-tools i que no es crea la terminal xvc0.
La solució, afegir un fitxer xvc0 similar al tty1 a upstart (dins la màquina domU):
$ sudo mount -t ext3 /dev/xenvg/acacha /mnt $ cd /mnt/etc/event.d/ $ sudo cp tty1 xvc0 $ sudo joe xvc0
I canvieu a la última línia tty1 per xvc0
Recursos:
Solució 2:
Si quan executeu una màquina virtual, per exemple amb create i la opció -c:
$ sudo xm create -c /etc/xen/cs2.iescopernic.com.cfg
NOTA: La opció -c crea la imatge i tot seguit la mostra per la terminal en que hem executat la comanda.
La màquina es penja a:
... Running local boot scripts (/etc/rc.local)
Cal afegir la línia:
extra='xencons=tty1'
Al fitxer de configuració de la màquina virtual. Per exemple
$ sudo joe ...
# # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' extra = '2 console=xvc0' extra='xencons=tty1'
Un altre símptoma pot ser no poder accedir a la màquina amb la comanda console:
$ sudo xm console cs2.iescopernic.com
Recursos:
A Ubuntu, cal tenir en compte que no és recomanable utilitzar el kernel de xen de la màquina host (dom0) sinó que cal utilitzar un kernel (i un fitxer initrd adequats).
Per exemple, amb una Ubuntu Server com a Host (dom0) amb un kernel de Xen:
$ uname -r 2.6.24-23-xen
Si volem que aquest host (dom0) allotgi múltiples màquines virtuals (domU) Ubuntu Server, el kernel de les màquines virtuals ha de ser l'habitual de Ubuntu i no el kernel Xen.
Val la pena modificar el fitxer /etc/xen-tools/xen-tools.conf
$ sudo joe /etc/xen-tools/xen-tools.conf
I canviar les opcions:
kernel = /boot/vmlinuz-`uname -r` initrd = /boot/initrd.img-`uname -r`
Per el kernel que vulguem per a les màquines domU. Per exemple:
kernel = /boot/vmlinuz-2.6.24-19-server initrd = /boot/initrd.img-2.6.24-19-server
Assegureu-vos que els fitxers estan a la carpeta boot. Si ja heu creat màquines virtuals amb la eina xen-tools, podeu modificar els paràmetres equivalents en els fitxers de configuració. Per exemple:
$ sudo joe /etc/xen/cs1.iescopernic.com.cfg ... kernel = '/boot/vmlinuz-2.6.24-19-server' ramdisk = '/boot/initrd.img-2.6.24-19-server'
Cal assegurar-se que la màquina virtual té aquest kernels instal·lats. Primer cal localitzar on està els disc dur de la màquina virtual per tal de poder muntar-lo:
$ cat /etc/xen/prova.iescopernic.com.cfg ... root = '/dev/xvda2 ro' disk = [ 'phy:/dev/xen_vm/prova.iescopernic.com-swap,xvda1,w', 'phy:/dev/xen_vm/prova.iescopernic.com-disk,xvda2,w', ]
Ara el muntem amb:
$ cd $ mkdir prova $ sudo mount /dev/xen_vm/prova.iescopernic.com-disk prova
I copiem els kernels:
$ sudo cp /boot/vmlinuz-2.6.24-19-server /home/sergi/prova/boot $ sudo cp /boot/initrd.img-2.6.24-19-server /home/sergi/prova/boot $ sudo umount prova
Per què? Ho recomanen Aquí però no veig el per què...
$ sudo /etc/init.d/apparmor stop $ sudo update-rc.d -f apparmor remove
Si observeu errors durant el reinici de xarxa (errors relacionats amb irqpoll). No hi ha suport per a ACPI al kernel de Xen
Podeu consultar els possibles errors amb:
$ dmesg
Primer val la pena intentar desactivar les opcions ACPI i les opcions Plug'n'Play des de la BIOS.
Podeu afegir la opció acpi=off al fitxer /boot/grub/menu.list:
title Xen 3.1 / Ubuntu 7.10, kernel 2.6.22-14-xen root (hd0,0) kernel /boot/xen-3.1.gz module /boot/vmlinuz-2.6.22-14-xen root=UUID=your-uuid-here ro console=tty0 acpi=off module /boot/initrd.img-2.6.22-14-xen
Si teniu 2 cpus al vostre processador afegiu la línia:
vcpus = '2'
Al fitxer de la vostra màquina virtual (per exemple /etc/xen/xen1.example.com.cfg):
$ sudo joe /etc/xen/xen1.example.com.cfg # Configuration file for the Xen instance xen1.example.com, created # by xen-tools 3.8 on Mon May 5 16:49:32 2008. # # # Kernel + memory size # kernel = '/boot/vmlinuz-2.6.24-16-xen' ramdisk = '/boot/initrd.img-2.6.24-16-xen' memory = '64' vcpus = '2' [...]
Executeu:
# cat /proc/cpuinfo
A la màquina virtual per comprovar que utilitza les dos CPU.
Primer cal muntar la imatge.
Si la imatge no és amb LVM:
$ sudo mount -o loop /home/xen/domains/xen1.example.com/disk.img /mnt/xen1.example.com
Si és amb LVM:
$ sudo mount /dev/xen_vm/cs1.iescopernic.com-disk /mnt/cs1.iescopernic.com/
cd /mnt/lib/modules/ cp -pfr /lib/modules/2.6.27-11-server/ . cd umount /mnt
Segons:
http://www.howtoforge.com/installing-xen-3.3-with-kernel-2.6.27-on-ubuntu-8.10-x86_64
you need to use older (e.g. gcc-4.2) if it is possible dont use Ubuntu 8.10 as system where you would be compile xen kernel
Ubuntu 8.10 utilitza gcc-4.3. Per instal·lar gcc-4.2
$ sudo apt-get install gcc-4.2
$ ls -la /usr/bin/gcc $ sudo rm -rf /usr/bin/gcc $ sudo ln -s /usr/bin/gcc-4.2 /usr/bin/gcc $ ls -la /usr/bin/gcc
I ara compileu. Un cop acabat torneu a refer gcc:
$ sudo rm -rf /usr/bin/gcc $ sudo ln -s /usr/bin/gcc-4.3 /usr/bin/gcc $ ls -la /usr/bin/gcc
Si durant el boot del servidor Xen u surt un missatge com:
*************************************************************** *************************************************************** ** WARNING: Currently emulating unsupported memory accesses ** ** in /lib/tls glibc libraries. The emulation is ** ** slow. To ensure full performance you should ** ** install a 'xen-friendly' (nosegneg) version of ** ** the library, or disable tls support by executing ** ** the following as root: ** ** mv /lib/tls /lib/tls.disabled ** ** Offending process: slapd (pid=2477) ** *************************************************************** ***************************************************************
Cal executar:
$ sudo mv /lib/tls /lib/tls.disabled
Si us surt l'error (per exemple utilitzar xen-delete-images):
Please select one and only one of the installation methods: --dir --evms --lvm
Verifique que al fitxer de configuració /etc/xen-tools/xen-tools.conf no tingueu més una línia dir i una línia lvm. Les opcions dir, evms i lvm són excluients.
$ sudo ln -s /usr/lib/xen-tools/hardy.d /usr/lib/xen-tools/intrepid.d
i
$ sudo ln -s /usr/share/debootstrap/scripts/hoary /usr/share/debootstrap/scripts/intrepid
I al fitxer /etc/xen-tools/xen-tools.conf, afegim com a dist intrepid:
$ sudo joe /etc/xen-tools/xen-tools.conf dist = intrepid # Default distribution to install.
Cal tenir en compte que el temps el marca la màquina host. És a dir, per molt que utilitzem eines per a NTP a les màquines virtual Xen, la hora no es canviarà i sempre es mantindrà la hora de la màquina host. Per aquesta raó és molt important tenir la hora correctament a la màquina host.