Xen
From AleikoumWiki
Contents |
Requis
aptitude install xen-linux-system-2.6.26-1-xen-686 libc6-xen bridge-utils xen-tools
puis il faut rebooter sur le kernel patche xen
et theoriquement une fois loggue, on obtient cette information :
# uname -a Linux psrv-qg-dmz-0 2.6.26-1-xen-686 #1 SMP Sat Jan 10 22:52:47 UTC 2009 i686 GNU/Linux
Xen (ses outils et le kernel) est installe ! on peut commencer a creer notre premier DomU !
Creation avec xen-create-image
Modification des fichiers de configuration
Il faut bien distinguer les outils (les xen-tools qui permettent de creer les DomU, les modifier, etc...) du processus xend (qui va faire tourner chaque DomU que vous allez creer)... Ils possedent chacun leur propre fichier de configuration.
Nous allons les modifier comme suit :
/etc/xen-tools/xen-tools.conf
Voici le mien :
# cat /etc/xen-tools/xen-tools.conf | grep -v "^#" lvm = vg0 # le nom de mon groupe de volume qui sera utilise pour faire # les futurs disques install-method = debootstrap # la methode d'installation size = 4Gb # la taille de la partition / par defaut memory = 64Mb # la taille de la RAM par defaut swap = 128Mb # la taille de la SWAP par defaut fs = ext3 # le systeme de fichier par defaut dist = lenny # la distribution par defaut a installer image = sparse # sparse vs. full disk images. gateway = 192.168.0.1 netmask = 255.255.255.0 broadcast = 192.168.0.255 passwd = 1 # en placant cette option a 1, un password vous sera demande # lors de l'installation du DomU kernel = /boot/vmlinuz-`uname -r` initrd = /boot/initrd.img-`uname -r` mirror = http://ftp.fr.debian.org/debian/ ext3_options = noatime,nodiratime,errors=remount-ro ext2_options = noatime,nodiratime,errors=remount-ro xfs_options = defaults reiser_options = defaults serial_device = hvc0 # /!\ tres important, sans ca pas de console mais pas necessaire si on utilise tty1
Creation "auto" de l'image de notre DomU
Etape 1
Maintenant que tout semble bien configure, nous allons utilise l'assistant de creation d'image pour generer le fichier de configuration xen de notre DomU mais aussi pour installer le systeme de notre DomU !
Pour cela il suffit de lancer la commande suivante :
#xen-create-image --hostname=le-nom-de-votre-host --ip=192.168.0.42
En consultant le man de xen-create-image vous obtiendrez la liste complete des options... de plus il faut noter que les options non explicitees seront initialisees avec le fichier de conf edite plus tot : /etc/xen-tools/xen-tools.conf.
Voici ce que donne l'execution de la commande :
# xen-create-image --hostname=le-nom-de-votre-host --ip=192.168.0.42 General Information -------------------- Hostname : le-nom-de-votre-host Distribution : lenny Partitions : swap 128Mb (swap) / 4Gb (ext3) Image type : full Memory size : 64Mb Kernel path : /boot/vmlinuz-2.6.26-1-xen-686 Initrd path : /boot/initrd.img-2.6.26-1-xen-686 Networking Information ---------------------- IP Address 1 : 192.168.0.42 [MAC: 00:16:3E:8C:EB:F0] Netmask : 255.255.255.0 Broadcast : 192.168.0.255 Gateway : 192.168.0.1 Creating swap on /dev/vg0/le-nom-de-votre-host-swap Done Creating ext3 filesystem on /dev/vg0/le-nom-de-votre-host-disk Done Installation method: debootstrap Done Running hooks Done No role scripts were specified. Skipping Creating Xen configuration file Done Setting up root password Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully All done Logfile produced at: /var/log/xen-tools/le-nom-de-votre-host.log
Et suivre l'evolution de l'installation :
tail -f /var/log/xen-tools/le-nom-de-votre-host.log
Si tout se passe bien, les deux disques virtuels /dev/vg0/le-nom-de-votre-host-swap et /dev/vg0/le-nom-de-votre-host-disk ont ete crees (verification avec la commande lvdisplay) et un joli petit fichier a ete genere dans /etc/xen/le-nom-de-votre-host.cfg .
Etape 2
Voici donc le contenu de mon fichier /etc/xen/le-nom-de-votre-host.cfg genere plus tot et qui a subi de legere petite modification :
# cat le-nom-de-votre-host.cfg # # Configuration file for the Xen instance le-nom-de-votre-host, created # by xen-tools 3.9 on Tue Feb 24 11:21:52 2009. # # # Kernel + memory size # kernel = '/boot/vmlinuz-2.6.26-1-xen-686' ramdisk = '/boot/initrd.img-2.6.26-1-xen-686' memory = '64' # # Disk device(s). # root = '/dev/sda2 ro' disk = [ 'phy:/dev/vg0/le-nom-de-votre-host-swap,sda1,w', 'phy:/dev/vg0/le-nom-de-votre-host-disk,sda2,w', ] # # Hostname # name = 'le-nom-de-votre-host' # # Networking # vif = [ 'ip=192.168.0.42,mac=00:16:3E:8C:EB:F0' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'destroy' extra = "console=hvc0" # il vaut mieux mettre extra = "xenconsole=tty1"
Creation "manuelle" de l'image de notre DomU
il peut etre utile de creer et configurer soit meme from scratch un DomU : typiquement pour avoir plusieurs partitions par exemple.
voici donc la procedure que j'ai utilise pour creer un DomU "sur mesure" !
creation des partitions LVM
on veut pouvoir retrouver la situation suivante :
- / de 1Go
- /boot de 64Mo
- /usr de 5Go
- /tmp de 2Go
- /var de 50Go
- /home de 5Go
- /usr/local de 5Go
- un swap de 2Go
Pour cela voici les commandes que j'ai utilise pour creer et formater ces partitions
lvcreate -n p01 -L 64m vg0 lvcreate -n p02s -L 2g vg0 lvcreate -n p03 -L 1g vg0 lvcreate -n p04 -L 5g vg0 lvcreate -n p05 -L 2g vg0 lvcreate -n p06 -L 50g vg0 lvcreate -n p07 -L 5g vg0 mkswap /dev/vg0/p02s mke2fs -j /dev/vg0/p01 mke2fs -j /dev/vg0/p03 mke2fs -j /dev/vg0/p04 mke2fs -j /dev/vg0/p05 mke2fs -j /dev/vg0/p06 mke2fs -j /dev/vg0/p07
installation du systeme
l'installation du systeme va se faire via debootstrap mais avant il va falloir monter les partitions precedemment creees pour y installer le systeme :
# mount /dev/vg0/p03 /data/forinstall # mkdir /data/forinstall/boot /data/forinstall/usr /data/forinstall/tmp /data/forinstall/var /data/forinstall/boot # mount /dev/vg0/p01 /data/forinstall/boot/ # mount /dev/vg0/p04 /data/forinstall/usr/ # mount /dev/vg0/p05 /data/forinstall/tmp/ # mount /dev/vg0/p06 /data/forinstall/var/ # mkdir /data/forinstall/usr/local # mount /dev/vg0/p07 /data/forinstall/usr/local/ # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda5 1921156 174472 1649092 10% / tmpfs 4088320 0 4088320 0% /lib/init/rw udev 10240 380 9860 4% /dev tmpfs 4088320 0 4088320 0% /dev/shm /dev/sda1 62193 23900 35082 41% /boot /dev/sda11 415286820 203096 393988376 1% /data /dev/sda8 9614116 152736 8973008 2% /home /dev/sda7 9614116 152692 8973052 2% /tmp /dev/sda6 9614116 446612 8679132 5% /usr /dev/sda10 9614116 152772 8972972 2% /usr/local /dev/sda9 9614116 409108 8716636 5% /var /dev/mapper/vg0-p03 1032088 34108 945552 4% /data/forinstall /dev/mapper/vg0-p01 63461 5402 54783 9% /data/forinstall/boot /dev/mapper/vg0-p04 5160576 141440 4756992 3% /data/forinstall/usr /dev/mapper/vg0-p05 2064208 68676 1890676 4% /data/forinstall/tmp /dev/mapper/vg0-p06 51606140 184268 48800432 1% /data/forinstall/var /dev/mapper/vg0-p07 5160576 141436 4756996 3% /data/forinstall/usr/local # debootstrap --arch i386 lenny /data/forinstall/ http://ftp.fr.debian.org/debian # cd /data/forinstall # cp /etc/apt/sources.list etc/apt/ # cp -a /lib/modules/2.6.26-1-xen-686/ lib/modules/ # cp /etc/resolv.conf etc/ # cp /etc/network/interfaces etc/network/ # vim etc/network/interfaces # vim etc/hostname
la derniere chose a gerer est la modification de la fstab comme suit :
# cat etc/fstab proc /proc proc defaults 0 0 /dev/sda1 /boot ext3 defaults 0 2 /dev/sda2 none swap sw 0 0 /dev/sda3 / ext3 errors=remount-ro 0 1 /dev/sda4 /usr ext3 defaults 0 2 /dev/sda5 /tmp ext3 defaults 0 2 /dev/sda6 /var ext3 defaults 0 2 /dev/sda7 /usr/local ext3 defaults 0 2
creation du fichier de configuration du DomU
Voici ce que donne mon fichier /etc/xen/mon-host.cfg :
# # Kernel + memory size + cpu # kernel = '/boot/vmlinuz-2.6.26-1-xen-686' ramdisk = '/boot/initrd.img-2.6.26-1-xen-686' memory = '1024' vcpus = '2' # # Disk device(s). # root = '/dev/sda3 ro' disk = [ 'phy:/dev/vg0/p01,sda1,w', 'phy:/dev/vg0/p02s,sda2,w', 'phy:/dev/vg0/p03,sda3,w', 'phy:/dev/vg0/p04,sda4,w', 'phy:/dev/vg0/p05,sda5,w', 'phy:/dev/vg0/p06,sda6,w', 'phy:/dev/vg0/p07,sda7,w', ] # # Hostname # name = 'mon-host' # # Networking # vif = [ 'ip=192.168.0.18' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'destroy' extra = 'xencons=tty1' # /!\ sans cette ligne pas d'acces possible via xm console mon-host !
Exploitation du DomU
/etc/xen/xend-config.sxp
Voici le mien :
#cat /etc/xen/xend-config.sxp | grep -v "^#" (network-script network-bridge) (vif-script vif-bridge) (dom0-min-mem 196) (dom0-cpus 0) (vncpasswd '')
Theoriquement les lignes que vous aurez a ajouter sont :
(network-script network-bridge) (vif-script vif-bridge)
Elles permettent a vos DomU de "sortir" par le reseau et d'avoir acces a Internet par exemple.
Ne pas oublier de relance le service xend apres cette modification :
/etc/init.d/xend stop && sleep 5 && /etc/init.d/start
demarrage du DomU
Arrive le moment ou il va falloir demarrer le DomU fraichement cree !
Le processus xend doit tourner et la machine physique (donc celle qui heberge les domU) doit apparaitre en tant que dom0 :
# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 7984 4 r----- 134.7
Maintenant il faut lancer le domU puis le configurer un minimum afin de pouvoir se connecter a lui via SSH :
# cd /etc/xen && xm create le-nom-de-votre-host.cfg Using config file "./le-nom-de-votre-host.cfg". Started domain le-nom-de-votre-host
Ensuite on va se connecter a la console de ce domU :
# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 7984 4 r----- 122.1 le-nom-de-votre-host 3 64 1 r----- 9.3 # xm console le-nom-de-votre-host Debian GNU/Linux 5.0 le-nom-de-votre-host hvc0 le-nom-de-votre-host login:
Il ne reste qu'a se logger en root avec le password initialise lors de la creation de l'image, configurer les users, les acces SSH et faire les MAJs et installs souhaitees.
Tel quel il sera impossible de se connecter via SSH a votre domU (pour Debian Lenny !) ! Il faudra en plus faire les operations suivantes :
# aptitude install udev ... # echo "none /dev/pts devpts defaults 0 0" >> /etc/fstab # mount -a
Sinon a chaque tentative de connexion, il y aura l'erreur suivante : PTY allocation request failed on channel 0
Et voila
Commandes / Admin
# lister les machines referencees dans xen xm list # le resultat se presente sous la forme suivante : # name domid memory vcpus state cputime # ou # * name : nom de la machine virtuelle # * domid : id de la machine virtuelle # * memory : taille de la RAM allouee a la machine virtuelle # * vcpus : nombre de processeur virtuel alloues a la machine virtuelle # * state : # - r == running # - b == blocked # - p == paused # - s == shutdown # - c == crashed # * cputime : temps CPU consomme par la machine virtuelle # demarrer la machine virtuelle definie dans fichier.cfg xm create fichier.cfg # arreter la machine virtuelle # on peut utiliser le nom ou l'id xm shutdown nom # changer la quantite de memoire ou le nombre de cpu xm mem-set id taille xm vcpu-set id number # s'il est toujours possible de reduire la taille de la memoire ou le nombre de VCPU # il est impossible de les augmenter au dela des valeurs definies dans le fichier de # conf de la machine virtuelle # a noter la taille est definie en Mo # afficher les messages XEN au boot: xm dmesg # le log de xend : /var/log/xen/xend.log
Liens
http://www.cl.cam.ac.uk/research/srg/netos/xen/ : site officiel du projet
http://fr.wikipedia.org/wiki/Xen : presentation de xen
https://bugs.launchpad.net/ubuntu/+source/xen-tools/+bug/139046 : lien expliquant le bug (ou la feature ? :) ) de la console