Vous êtes sur la page 1sur 15

Premiers pas avec Xen Extrait du RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen http://rotomalug.

org

Premiers pas avec Xen


- Documentation -

Date de mise en ligne : mercredi 20 avril 2005

Description :

Comment crer rapidement un serveur paravirtualis grce Xen. Nos premiers pas ...

RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen -

Copyleft RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen -

Page 1/15

Premiers pas avec Xen

0. Pr-requis

Savoir compiler, installer un noyau Linux Comprendre et modifier le comportement de grub Bonne connaissances de l'envirronement GNU/Linux

1. Introduction

On entend beaucoup parler en ce moment de Xen, de sa possible inclusion dans le noyau officiel, de ses possibilits et performances face des outils tels que le propritaire vmware...

Mais qu'est-ce que Xen ?

L'aspect virtualisation et migration de VM ne sera pas vu au cours de cet article. Peut-tre dans un prochain article.

2. Description succinte de Xen

2.1 Dfinitions

Xen : Xen est un moniteur/hyperviseur de machine vituelle (VMM) pour les ordinateurs compatibles x86. Xen peut ainsi excuter, en toute scurit, plusieurs machines virtuels (VM), chaque machine virtuelle fait tourner son propre OS, sur un seul systme physique avec des performances proche d'un OS natif.

moniteur/hyperviseur : Le moniteur/hyperviseur est l'OS principal(domaine0) qui gre les autres VM(domaineU).

Domaine0 : Le domaine0 est l'OS qui fait tourner l'hyperviseur (VMM). C'est l'OS principal, le premier que vous installez.

DomaineU : Le domaineU est une machine virtuelle (VM). Cette VM a un kernel particulier.

Domaine et OS invit : La diffrence entre un domaine et un OS invit peut tre vu comme une analogie la diffrence entre un programme et un processus.

Description 2.2 Prsentation

Xen permet de faire tourner plusieurs systmes d'exploitation (et leurs applications) de manire isole sur une mme

Copyleft RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen -

Page 2/15

Premiers pas avec Xen


machine physique sur plateforme x86. Les OS invits partagent ainsi les ressources de la machine physique.

Xen est un des outils de virtualisation libre les plus avancs et trs prometteur : stable et performant, de plus en plus de systmes d'exploitation sont adapts, des partenaires industriels et acteurs majeurs de l'informatique sont impliqus dans son dveloppement et sa promotion.

Xen est un "paravirtualiseur" ou un "hyperviseur" de machines virtuelles. Les OS invits ont "conscience" du Xen sous-jacent, ils ont besoin d'tre "ports" (adapts) pour fonctionner sur Xen. Linux peut d'ors-et-dj fonctionner sur Xen (patch bientt intgr dans le noyau vanilla de Linus Torvalds). Xen peut galement faire tourner NetBSD, FreeBSD (portage Xen en cours) et Plan9.

Pour le moment, seule l'architecture x86 est supporte. Le multiprocesseur (SMP) et partiellement l'hyperthreading sont supports. Le portage de Xen est en cours vers les plateformes x86_64 (AMD64/EM64T) et ia64 (Itanium2). Le portage vers PPC et ARM sera peut-tre fait plus tard.

Maintenant, que vous savez ce qu'est Xen et quoi cela peut bien servir, voyons plus dans le dtails le coeur de Xen. Pour ceux qui veulent aller plus vite et voir sa mise en place, vous pouvez passer la section 5.

3. Comparatifs avec d'autres outils de virtualisation

Gnralement, la virtualisation ncessite un OS hte install sur le matriel, optionnellement une couche intermdiaire. Un ou plusieurs OS invits peuvent alors tre installs en parallle.

Les logiciels de virtualisation de type QEMU (ou VMWare ou VirtualPC) sont des machines virtuelles compltes pour les OS invits, incluant mme un BIOS logiciel. L'OS invit "croit" tourner sur le matriel virtuel (simul par le logiciel de virtualisation), il n'a pas "conscience" d'tre virtualis. L'overhead introduit par l'empilage de l'OS hte et de la machine virtuelle en font des solutions peu satisfaisantes pour des besoin en performance.

Les logiciels de type chroot, Linux VServer ou BSD Jail ne font qu'isoler certains aspects ou ressources de l'OS hte comme les filesystem, ou les espaces mmoire. Ces solutions sont trs performantes, du fait du peu d'overhead mais les environnemens virtualiss (on ne peut pas parler de machine ou OS virtuels) sont peu ou pas compltement isols.

User Mode Linux (aka UML) est un noyau Linux compil pour fonctionner en user-space (espace mmoire utilisateur, en dehors de l'espace noyau privilgi). Il se lance donc comme une application dans l'OS hte. UML peut lancer et grer ses applications de manires isole des autres UML qui tournent sur la mme machine. Solution trs peu performante, car deux noyaux sont empils, elle sert surtout au dveloppement du noyau.

Du fait de cette "paravirtualisation" (adaptation de l'OS invit) et de sa lgret, Xen est un outil de virtualisation des plus performants.

4. Point de vue technique

4.1 Pourquoi Xen fonctionne t-il sur x86 ?

En fait, Xen utilise les niveaux de privilges intermdiaires du processeur pour faire fonctionner les OS invits.

Copyleft RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen -

Page 3/15

Premiers pas avec Xen


l'architecture x86 fournit ces niveaux. D'autres architectures utilisent uniquement un niveau o tout est permis et un niveau pour les applications utilisateurs avec des droits restreints.

niveaux de privilges 4.2 Dtails plus techniques

Pour ceux qui s'intressent aux systmes d'exploitation de plus prs, je vous encourage lire ces documentations, elles sont fort enrichissantes :-) http://www.cl.cam.ac.uk/Research/SRG/netos/xen/readmes/interface/interface.html http://www.cl.cam.ac.uk/netos/papers/2003-xensosp.pdf

5. Mise en place

5.1 Logiciels ncessaires

Tout d'abord il faut bien sr Xen par lui mme. Nous utiliserons la version binaires de Xen. Vous pourrez bien sr utiliser sa version sources et compiler le tout :) Vous trouverez l'archive cette adresse : http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/xen-2.0.5-install.tgz

Maintenant, il faut que votre systme hte possde les logiciels suivants : iproute bridge-utils twisted

Pour les dbianistes : apt-get est votre ami :) Les autres, yum, urpmi devraient faire le travail facilement aussi, d'autant plus que Xen devrait tre inclus dans FC4 test2... Enfin bref.

Une fois tout ceci install, passons l'installation mme.

Copyleft RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen -

Page 4/15

Premiers pas avec Xen


5.2 Installation

Maintenant, allons-y, c'est tout simple :

louna:/video/xen/# tar -xzvf xen-2.0.5-install.tgz [...] louna:/video/xen/# cd xen-2.0-install louna:/video/xen/xen-2.0-install# ls -lh total 36K drwxr-xr-x -rw-r--r-drwxrwxr-x -rwxr-xr-x -rw-r--r-2 94 1332 4,0K 2005-04-18 19:26 check 1 94 1332 19K 2005-03-10 20:37 COPYING

7 94 1332 4,0K 2005-03-10 20:29 install 1 94 1332 1,1K 2005-03-10 20:37 install.sh 1 94 1332 3,3K 2005-03-10 20:37 README

louna:/video/xen/xen-2.0-install# ./install.sh

Si tous les composants ncessaires Xen sont installs, alors tout est install du premier coup. Sinon le script vous signalera ce qui manque.

5.3 Finalisons l'installation

Je pense que cela est plus simple que bien des mots :

Copyleft RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen -

Page 5/15

Premiers pas avec Xen


louna:/video/xen/xen-2.0-install# ls -l / total 146 drwxr-xr-x drwxr-xr-x lrwxrwxrwx drwxr-xr-x drwxr-xr-x drwxrwsr-x drwxr-xr-x lrwxrwxrwx drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x dr-xr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxrwxrwt drwxr-xr-x drwxr-xr-x drwxrwxrwx lrwxrwxrwx lrwxrwxrwx drwxr-xr-x lrwxrwxrwx 2 root root 4 root root 1 root root 12 root root 81 root root 4 root staff 2 root root 1 root root 8 root root 2 root root 3 root root 3 root root 3 root root 99 root root 10 root root 2 root root 2 root root 9 root root 4 root root 13 root root 15 root root 11 root root 1 root root 1 root root 4 root root 1 root root 4096 2005-04-19 20:08 bin 1024 2005-04-18 19:31 boot 11 2004-12-09 21:03 cdrom -> media/cdrom 24576 2005-04-19 20:11 dev 4096 2005-04-19 20:11 etc 4096 2005-01-20 12:06 home 4096 2004-12-09 21:04 initrd 27 2004-12-09 21:08 initrd.img -> boot/initrd.img-2.6.8-1-386 4096 2005-04-19 20:08 lib 49152 2004-12-09 21:03 lost+found 4096 2004-12-09 21:11 media 4096 2005-03-18 18:42 mnt 4096 2005-01-25 12:35 opt 0 2005-04-19 20:10 proc 4096 2005-04-19 20:01 root 4096 2005-04-19 20:08 sbin 4096 2004-12-09 21:04 srv 0 2005-04-19 20:10 sys 16384 2005-04-20 09:02 tmp 4096 2005-04-18 19:26 usr 1024 2004-12-09 21:42 var 4096 2005-04-18 19:22 video 24 2004-12-09 21:08 vmlinuz -> boot/vmlinuz-2.6.8-1-386 25 2005-04-18 20:10 vmlinuz-2.6.10-xen0 -> /boot/vmlinuz-2.6.10-xen0 4096 2005-04-18 21:26 work 12 2005-04-18 20:10 xen.gz -> /boot/xen.gz

louna:/video/xen/xen-2.0-install#

Copyleft RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen -

Page 6/15

Premiers pas avec Xen


Et finalement :

louna:/video/xen/xen-2.0-install# cat /boot/grub/menu.lst

[...] title root kernel module boot [...] Xen 2.0 / XenLinux 2.6.10 (hd0,1) /xen.gz dom0_mem=131072 noacpi /vmlinuz-2.6-xen0 root=/dev/hda5 ro console=tty0

Vous pouvez remarquer sur la ligne "kernel" qu'il y a le paramtre


noacpi

. En effet, sur la machine que j'ai utilis, j'ai t oblig de rajouter ce paramtre afin de ne pas avoir de kernel panic de la part de Xen.

Il reste quelques choses faire. Tout d'abord, vous devrez renommer le rpertoire :
/lib/tls

en
/lib/tls.disabled

. Cette opration est bien sr rversible. TLS(Thread Local Storage) utilise la segmentation de telle manire qu'elle est incompatible avec Xen. Si TLS est utilis, un mode d'mulation serait utilis par Xen, qui dgraderait les performances de votre systme Xen.

Une fois cela fait, vous pouvez rebooter et choisir et tester votre systme Xen :)

6. Tests

6.1 Premier boot

Vous devriez voir rapidemment les traces du noyau Xen, puis le lancement du systme Linux (vmlinuz-2.6.10-xen0)

Copyleft RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen -

Page 7/15

Premiers pas avec Xen


__ __ ____ |___ \ ___ ____ \ \/ /___ _ __ \ / // _ \ '_ \ \ __/ | | | / _ \ | ___|

__) || | | ||___ \ / __/ | |_| | ___) |

/_/\_\___|_| |_| |_____(_)___(_)____/

http://www.cl.cam.ac.uk/netos/xen University of Cambridge Computer Laboratory

Xen version 2.0.5 (xenod@cl.cam.ac.uk) (gcc version 3.3.3 20040412 (Red Hat Linux 3.3.3-7)) Thu Mar 10 19:25:59 GMT 2005 Latest ChangeSet: 2005/03/10 18:12:52 1.1717 42308e24_-Xsew-lCWFgg_8_L8c9xQ

(XEN) Physical RAM map: (XEN) (XEN) (XEN) [...] (XEN) PCI: Found IRQ 12 for device 00:09.0 (XEN) PCI: Sharing IRQ 12 with 00:04.2 0000000000000000 - 00000000000a0000 (usable) 00000000000f0000 - 0000000000100000 (reserved) 0000000000100000 - 000000000bffd000 (usable)

Copyleft RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen -

Page 8/15

Premiers pas avec Xen


Puis votre noyau du domaine0 booter son tour. Vous vous retrouver sur votre systme XenoLinux de domain0.

Une fois cela fait, il nous faut lancer le dmon xend.


xend start

Une fois cela fait, nous sommes en mesure de "discuter" avec Xen.

Par exemple, nous pouvons voir :

louna:~/rotomalug/xen# xm info system host release version machine cores hyperthreads_per_core cpu_mhz memory free_memory : Linux : louna : 2.6.10-xen0 : #1 Thu Mar 10 19:33:45 GMT 2005 : i686 : 1 : 1 : 300 : 191 : 19

Maintenant, voyons comment mettre en place un XenoLinux de domaineU. C'est dire un OS invit.

Pour cela, nous nous appuyerons sur un root_fs. Un root_fs est en fait un systme de fichier qui se trouve sur un fichier dans un systme de fichier bien rel sur votre disque dur. Ce root_fs peut tre mont au travers des interface de loopback (
mount -o loop votre_root_fs empty_target_dir/

).

Bien sr, pour rellement utiliser Xen, nous devrions mettre en place les XenoLinux sur un systme de fichiers rels sur disque. Mais, commenons avec un root_fs, ce qui permet de ne pas utiliser de systme de fichier uniquement pour xen, si c'est juste pour tester.

Vous pouvez faire votre propre root_fs, comme indiqu dans l'article : http://www.rotomalug.org/article.php3?id_article=78 la section 2. A la diffrence prs d'UML, vous devrez diter le fichier
/etc/inittab

et mettre :

Copyleft RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen -

Page 9/15

Premiers pas avec Xen


1:2345:respawn:/sbin/getty 38400 tty1 # Pour UML : #1:2345:respawn:/sbin/getty 38400 vc/0

Copyleft RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen -

Page 10/15

Premiers pas avec Xen


Nanmoins, si vous ne voulez pas faire cela, vous pourrez utiliser un root_fs tout fait fournis avec cet article. Merci Alain, Cyrille, RotomaLUG :)

Vous pourrez trouver ce root_fs cette adresse : http://rotomalug.org/data/xen/serveur1.bz2

Ce root_fs est en fait une debian sarge dont les services suivant sont installs : Apache 1.3.33 sshd

Pour mettre en place ce XenoLinux, il est ncessaire d'crire un fichier de configuration. Vous pouvez trouver des fichiers examples dans le rpertoire :
/etc/xen

Vous pourrez trouver le fichier de configuration de notre XenoLinux l'adresse : http://rotomalug.org/data/xen/xm-serveur1

Il vous faudra diter ce fichier et changer quelques paramtres, tels que :

disk = [ 'file:/work/serveur1,hda6,w' ]

Le fichier
/work/serveur1

est le root_fs et
hda6

est le disque sur lequel se trouve ce fichier, et


w

est le mode d'accs (criture). A vous de mettre les paramtres qui conviennent votre systme.

et :

root = "/dev/hda6 ro"

Ce paramtre est dans le mme style que le prcdent et parle de lui mme, si vous avez dj compil et install un noyau Linux.

Copyleft RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen -

Page 11/15

Premiers pas avec Xen


Une fois cela prt, nous sommes en mesure de booter notre XenoLinux de domainU :)

Ceci est ralis par (dans mon cas) :

louna:~# xm create /work/xm-serveur1 -c Using config file "/work/xm-serveur1". Started domain serveur1, console on port 9602 ************ REMOTE CONSOLE: CTRL-] TO QUIT ******** Linux version 2.6.10-xenU (xenod@freefall.cl.cam.ac.uk) (gcc version 3.3.3 20040 412 (Red Hat Linux 3.3.3-7)) #1 Thu Mar 10 19:37:47 GMT 2005 BIOS-provided physical RAM map: Xen: 0000000000000000 - 0000000002000000 (usable) 32MB LOWMEM available. DMI not present. IRQ lockup detection disabled Built 1 zonelists Kernel command line: Initializing CPU#0 PID hash table entries: 256 (order: 8, 4096 bytes) Xen reported: 300.689 MHz processor. Using tsc for high-res timesource [...] Setting the System Clock using the Hardware Clock as reference... hwclock is unable to get I/O port access: the iopl(3) call failed. ip=:1.2.3.4::::eth0:dhcp root=/dev/hda6 ro 4

System Clock set. Local time: Wed Apr 20 09:59:10 UTC 2005

Initializing random number generator...done. Recovering nvi editor sessions... done. INIT: Entering runlevel: 4 Starting system log daemon: syslogd. Starting kernel log daemon: klogd. Starting MTA: exim4. Starting internet superserver: inetd. Starting OpenBSD Secure Shell server: sshd. Starting deferred execution scheduler: atd. Starting periodic command scheduler: cron. Starting web server: apache.

Debian GNU/Linux 3.1 rhum tty1

rhum login:

Vous devriez voir votre XenoLinux booter, et donc pouvoir accder finalement au serveur Apache HTTPD et SSHD de votre XenoLinux l'adresse IP :
192.168.0.9

. Celle-ci est fixe par le systme prsent dans le root_fs.

Copyleft RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen -

Page 12/15

Premiers pas avec Xen


Le mot de passe root de ce systme est :
mypass

clucas@louna:~$ date mer avr 20 12:02:31 CEST 2005 clucas@louna:~$ uname -a Linux louna 2.6.10-xen0 #1 Thu Mar 10 19:33:45 GMT 2005 i686 GNU/Linux clucas@louna:~$ ssh -l root 192.168.0.9 Password: Last login: Wed Apr 20 10:01:52 2005 rhum:~# uname -a Linux rhum 2.6.10-xenU #1 Thu Mar 10 19:37:47 GMT 2005 i686 GNU/Linux rhum:~# exit logout Connection to 192.168.0.9 closed. clucas@louna:~$ telnet 192.168.0.9 80 Trying 192.168.0.9... Connected to 192.168.0.9. Escape character is '^]'. GET / <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

Placeholder page

Hey, Welcome on Apache server of Xen serveur1 :-)

clucas@rotomalug.org -- Tue Apr 19 17:42:41 UTC 2005

Connection closed by foreign host. clucas@louna:~$

7. Commandes utiles

Voyons voir maintenant les commandes utiles pour grer les domainU :

Copyleft RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen -

Page 13/15

Premiers pas avec Xen


- xm help : l'aide - xm list : liste tous les domaines prsents - xm create config.file -c : crer un domaine - xm shutdown votre_domaine : arrte un domaine - xm destroy votre_domaine : dtruit un domaine - xm dmesg : dmesg du domain0 - xm info : informations sur le domain0 - xm consoles : les consoles vers les domainU - xm console votre_domaine : ouvrir une console vers le domaine "votre_domaine"

Copyleft RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen -

Page 14/15

Premiers pas avec Xen


Par exemple :

louna:/work# xm list Name Domain-0 serveur1 louna:/work# Id 0 1 Mem(MB) 123 31 CPU 0 0 State r----b--Time(s) 4294.5 38.2 9601 Console

Pour plus d'informations : Le manuel :-)

8. Conclusions

Cette premire exprience de Xen vous permettra de vous familiariser avec celui-ci. Maintenant, ce n'est qu'un premier pas. En effet, un reboot de la machine hte et tout est refaire. L'automatisation des lancements est bien sr possible (Cf ici).

De plus, tout ceci fonctionne sur des root_fs. Nanmoins, je pense que cette approche est rapide pour prendre en main cet outils de virtualisation.

Nous verrons dans un prochain article, comment modifier la mmoire utiliser par un domaine, la migration de VMM...

9. Remerciements

Une bonne partie de cet article est tir de :

http://fr.wikipedia.org/wiki/Xen http://www.xenfr.org/ http://www.cl.cam.ac.uk/Research/SRG/netos/xen/readmes/user/user.html RotomaLUG pour hoster le root_fs et le fichier de configuration

Copyleft RotomaLUG - Groupe des Utilisateurs de Linux et de Logiciels Libres de Rouen -

Page 15/15

Vous aimerez peut-être aussi