Académique Documents
Professionnel Documents
Culture Documents
org
Description :
Comment crer rapidement un serveur paravirtualis grce Xen. Nos premiers pas ...
Page 1/15
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...
L'aspect virtualisation et migration de VM ne sera pas vu au cours de cet article. Peut-tre dans un prochain article.
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.
Xen permet de faire tourner plusieurs systmes d'exploitation (et leurs applications) de manire isole sur une mme
Page 2/15
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.
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.
En fait, Xen utilise les niveaux de privilges intermdiaires du processeur pour faire fonctionner les OS invits.
Page 3/15
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
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.
Page 4/15
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.
Je pense que cela est plus simple que bien des mots :
Page 5/15
louna:/video/xen/xen-2.0-install#
Page 6/15
[...] 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
. 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
Vous devriez voir rapidemment les traces du noyau Xen, puis le lancement du systme Linux (vmlinuz-2.6.10-xen0)
Page 7/15
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)
Page 8/15
Une fois cela fait, nous sommes en mesure de "discuter" avec Xen.
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 :
Page 9/15
Page 10/15
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
disk = [ 'file:/work/serveur1,hda6,w' ]
Le fichier
/work/serveur1
est le root_fs et
hda6
est le mode d'accs (criture). A vous de mettre les paramtres qui conviennent votre systme.
et :
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.
Page 11/15
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.
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
Page 12/15
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
7. Commandes utiles
Voyons voir maintenant les commandes utiles pour grer les domainU :
Page 13/15
Page 14/15
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
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
Page 15/15