Xen : Différence entre versions
M (→Xen (Dom0)) |
M (→Xen (DomU)) |
||
Ligne 141: | Ligne 141: | ||
[http://xen-tools.org/software/xen-tools/ Xen-tools]est disponible dans Debian Etch, mais nous prendrons le dépot du développeur [http://apt.steve.org.uk/ Steve Kemp] qui est plus récent: | [http://xen-tools.org/software/xen-tools/ Xen-tools]est disponible dans Debian Etch, mais nous prendrons le dépot du développeur [http://apt.steve.org.uk/ Steve Kemp] qui est plus récent: | ||
+ | {{Boite Fichier|/etc/apt/sources.list| | ||
# | # | ||
# Steve Kemp's repository: Etch | # Steve Kemp's repository: Etch | ||
Ligne 146: | Ligne 147: | ||
deb http://apt.steve.org.uk/etch etch main non-free contrib | deb http://apt.steve.org.uk/etch etch main non-free contrib | ||
deb-src http://apt.steve.org.uk/etch etch main non-free contrib | deb-src http://apt.steve.org.uk/etch etch main non-free contrib | ||
+ | }} | ||
Ajout de la clé: | Ajout de la clé: | ||
− | + | {{Boite Code|shell| wget -q -O - http://apt.steve.org.uk/apt-key.gpg | apt-key add -}} | |
On aura aussi besoin de ''debootstrap'' | On aura aussi besoin de ''debootstrap'' | ||
− | + | {{Boite Code|shell| apt-get install debootstrap xen-tools}} | |
− | Vérifier le fichier | + | Vérifier le fichier {{Fichier|/etc/xen-tools/xen-tools.conf}}; en mettant les ''bons'' paramètres par défaut, la création d'une machine virtuelle s'en trouve grandement simplifiée. |
<br />Le fichier de configuration est bien documenté et ne devrait pas poser de problèmes. | <br />Le fichier de configuration est bien documenté et ne devrait pas poser de problèmes. | ||
== Création d'une machine virtuelle (para-virtualisation) == | == Création d'une machine virtuelle (para-virtualisation) == | ||
Pour créer une machine virtuelle avec les paramètres par défaut: | Pour créer une machine virtuelle avec les paramètres par défaut: | ||
− | xen-create-image --hostname=<FQDN> | + | {{Boite Code|shell|2=<nowiki></nowiki> |
+ | xen-create-image --hostname=<FQDN>}} | ||
− | Le fichier de configuration de cette machine virtuelle est | + | Le fichier de configuration de cette machine virtuelle est {{Fichier|/etc/xen/<FQDN>.cfg}} et elle se démarre: |
− | + | {{Boite Code|shell| xm create /etc/xen/<FQDN>.cfg}} | |
Pour démarrer une machine virtuelle au boot: | Pour démarrer une machine virtuelle au boot: | ||
− | + | {{Boite Code|shell| ln -s /etc/xen/<FQDN>.cfg /etc/xen/auto}} | |
Elle sera par la même occasion ''sauvée'' au shutdown. | Elle sera par la même occasion ''sauvée'' au shutdown. | ||
Ligne 171: | Ligne 174: | ||
A titre d'exemple j'ai installé Windows XP Home Edition sur un ''logical volume''. | A titre d'exemple j'ai installé Windows XP Home Edition sur un ''logical volume''. | ||
− | <br />Nous avons une image du CD-ROM: | + | <br />Nous avons une image du CD-ROM: {{Fichier|/home/vservers/XPhome.iso}} |
Création du ''logical volume'': | Création du ''logical volume'': | ||
− | + | {{Boite Code|shell| lvcreate –L 10000 –n xphome vgXen}} | |
− | Création du fichier de configuration | + | Création du fichier de configuration {{Fichier|/etc/xen/xphome.hvm}} à partir du template {{Fichier|/etc/xen/xmexample.hvm}}. |
<br />Les seules choses à changer sont: | <br />Les seules choses à changer sont: | ||
* Le nom de la machine virtuelle | * Le nom de la machine virtuelle | ||
Ligne 184: | Ligne 187: | ||
* L'accès au serveur VNC par une machine distante | * L'accès au serveur VNC par une machine distante | ||
* Le ''mapping'' clavier | * Le ''mapping'' clavier | ||
− | + | {{Boite Code|diff xmexample.hvm xphome.hvm|2=<nowiki></nowiki> | |
28c28 | 28c28 | ||
< memory = 128 | < memory = 128 | ||
Ligne 211: | Ligne 214: | ||
--- | --- | ||
> keymap='fr-be' | > keymap='fr-be' | ||
+ | }} | ||
Il suffit alors de créer la machine virtuelle: | Il suffit alors de créer la machine virtuelle: | ||
− | + | {{Boite Code|shell| xm create /etc/xen/xphome.hvm}} | |
Et, a partir d'une machine distante: | Et, a partir d'une machine distante: | ||
− | + | {{Boite Code|shell| xvncviewer <Dom0>}} | |
(C'est bien le domaine 0 qu'il faut adresser et pas la machine virtuelle!) | (C'est bien le domaine 0 qu'il faut adresser et pas la machine virtuelle!) | ||
Version du 22 juin 2007 à 13:26
Notes sur l'installation de Xen sur une Debian Etch / Linux 2.6
En cours de rédaction
Introduction
Nous utilisons Linux VServers sans problèmes depuis un certain temps déjà, mais dans certains cas il est intéressant de faire un pas plus en avant en terme de para-virtualisation (plus grande liberté au niveau de la couche réseau, ou des noyeaux utilisés) ou tout simplement dans la cas de la virtualisation pure (OS propriétaires).
Ce petit article n'est pas un n-ième howto sur la question, mais rassemble plutôt quelques notes prises lors de mes installations et tests.
Environnement:
- Materiel: SuperMicro X7DVL-E Bi-Xeon Quad core (E5310), 12 GB Memoire, 2 TB Disque
- OS hôte (Domain 0): Debian Etch
- Xen Open Source: version 3.1
Debian Etch (DomO)
Généralités
Nous démarrerons su base d'une Debian Etch installée et à jour.
Nous désirons tourner des machines virtuelles 32 bits. Le support des machines virtuelles 32 bits sur un hôte 64 bits dans Xen est assez récent (32-on-64 PV guest support), et pour des raisons de stabilité, nous installons donc une version i386 de Debian.
Partitionnement
Nous réservons un Volume Group pour accueillir les machines virtuelles Xen. Il contiendra un file system pour les images disques sur fichier et des logical volumes pour les acces direct.
Packages
En dehors d'un install de base, nous installeraons les packages suivants
Packages utiles
Ces packages ne sont pas a proprement parler obligatoire, mais bon...
openssh-server screen
Checkinstall
Nous utilisons la dernière version de Xen, qui n'est pas disponible dans Etch.
Afin d'éviter d'installer des fichiers non controllés par dpkg, nous utiliserons aussi Checkinstall pour empaqueter Xen.
checkinstall est actuellement dans Debian Testing, mais nous le compilerons a partir des sources pour éviter un mélange de distribution.
Le version Debian de Checkinstall est encore assez récente et n'est pas parfaite, mais fonctionne suffisemment bien pour nos besoins.
Code: shell |
# Packages pré-requis: apt-get install dpkg-dev gcc file gettext # Récupération des sources cd /usr/src mkdir checkinstall cd checkinstall wget http://asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.1.tgz tar xzf checkinstall-1.6.1.tgz cd checkinstall-1.6.1 # Compilation et installation 'brute' make make install # Génération et installation du paquet Debian checkinstall -D dpkg -i checkinstall_1.6.1-1_i386.deb |
Xen (Dom0)
Dépendences Xen
Xen nécessite les paquest suivants:
iproute libc6 libncurses5 python python-central udev zlib1g libc6-xen bridge-utils libssl0.9.7 libsdl1.2debian
Les paquets suivant sont nécessaires si Xen a accès au Frame Buffer (pas testé, car peu d'intérêt pour un serveur)
libsdl1.2-dev libvncserver-dev
Noyeau
Afin de bénéficier des mises-à-jour de sécurité Debian, nous utilisons le noyeau para-virtualisé Debian au lieu du noyeau kernel.org distribué par Xen:
linux-image-2.6.18-4-xen-686
Hyperviseur
L'hyperviseur est téléchargé de XenSource (version tarball / i386 PAE)
Code: shell |
mkdir /usr/src/xen cd /usr/src/xen wget http://bits.xensource.com/oss-xen/release/3.1.0/bin.tgz/xen-3.1.0-install-x86_32p.tgz tar xzf xen-3.1.0-install-x86_32p.tgz |
Adaptations Debian:
Code: shell |
cd dist chown -R root:root . cd install/etc mv sysconfig default |
Création du script network-dummy, si on ne désire pas utiliser le bridge Xen (voir note ci-dessous):
Code: shell |
cd /usr/src/xen/dist/install/etc/xen echo -e '#!/bin/sh\n\nexit 0' > scripts/network-dummy chmod 755 scripts/network-dummy |
Scripts de startup:
Code: shell |
Nous utilisons les noyeaux Debian; nettoyage:
Code: shell |
cd /usr/src/xen/dist/install rm -rf lib rm -f boot/vmlinux-syms-2.6.18-xen boot/vmlinuz-2.6.18-xen boot/vmlinuz-2.6-xen \ boot/System.map-2.6.18-xen boot/config-2.6.18-xen |
Préparation du paquet avec checkinstall
Code: shell |
cd /usr/src/xen mv dist xen-hypervisor-and-tools-3.1.0-1-i386-pae-3.1.0 cd xen-hypervisor-and-tools-3.1.0-1-i386-pae-3.1.0 checkinstall -D ./install.sh |
Installer le package:
Code: shell |
dpkg -i xen-hypervisor-and-tools-3.1.0-1-i386-pae_3.1.0-1_i386.deb |
Mettre grub à jour
Code: shell |
update-grub |
Rebooter!
Xen (DomU)
Xen-tools
Les utilitaires xen-tools permettent de créer des machines (para-)virtuelles (DomU) très facilement.
Il supporte la création de machines virtuelles Debian, Ubuntu, CentOS et Fedora. Il permet aussi de copier des machines virtuelles, etc.
Xen-toolsest disponible dans Debian Etch, mais nous prendrons le dépot du développeur Steve Kemp qui est plus récent:
Fichier: /etc/apt/sources.list |
# # Steve Kemp's repository: Etch # deb http://apt.steve.org.uk/etch etch main non-free contrib deb-src http://apt.steve.org.uk/etch etch main non-free contrib |
Ajout de la clé:
Code: shell |
wget -q -O - http://apt.steve.org.uk/apt-key.gpg |
On aura aussi besoin de debootstrap
Code: shell |
apt-get install debootstrap xen-tools |
Vérifier le fichier /etc/xen-tools/xen-tools.conf; en mettant les bons paramètres par défaut, la création d'une machine virtuelle s'en trouve grandement simplifiée.
Le fichier de configuration est bien documenté et ne devrait pas poser de problèmes.
Création d'une machine virtuelle (para-virtualisation)
Pour créer une machine virtuelle avec les paramètres par défaut:
Code: shell |
xen-create-image --hostname=<FQDN> |
Le fichier de configuration de cette machine virtuelle est /etc/xen/<FQDN>.cfg et elle se démarre:
Code: shell |
xm create /etc/xen/<FQDN>.cfg |
Pour démarrer une machine virtuelle au boot:
Code: shell |
ln -s /etc/xen/<FQDN>.cfg /etc/xen/auto |
Elle sera par la même occasion sauvée au shutdown.
Création d'une machine virtuelle (HVM)
Le mode HVM permet de tourner des OS non para-virtualisés.
A titre d'exemple j'ai installé Windows XP Home Edition sur un logical volume.
Nous avons une image du CD-ROM: /home/vservers/XPhome.iso
Création du logical volume:
Code: shell |
lvcreate –L 10000 –n xphome vgXen |
Création du fichier de configuration /etc/xen/xphome.hvm à partir du template /etc/xen/xmexample.hvm.
Les seules choses à changer sont:
- Le nom de la machine virtuelle
- La mémoire à allouer
- Le mapping du dique et de l'image CD-ROM
- L'ordre de boot (C, D)
- L'accès au serveur VNC par une machine distante
- Le mapping clavier
Code: diff xmexample.hvm xphome.hvm |
28c28 < memory = 128 --- > memory = 512 35c35 < name = "ExampleHVMDomain" --- > name = "xphome" 64c64 < vif = [ 'type=ioemu, bridge=xenbr0' ] --- > vif = [ 'type=ioemu, mac=00:16:3e:00:00:94, bridge=xenbr0' ] 74c74 < disk = [ 'file:/var/images/min-el3-i386.img,hda,w', ',hdc:cdrom,r' ] --- > disk = [ 'phy:/dev/vgXen/xphome,ioemu:hda,w', 'file:/home/vservers/XPhome.iso,hdc:cdrom,r' ] 121a122 > boot="cd" 138c139 < #vnclisten="127.0.0.1" --- > vnclisten="0.0.0.0" 210c211 < #keymap='ja' --- > keymap='fr-be' |
Il suffit alors de créer la machine virtuelle:
Code: shell |
xm create /etc/xen/xphome.hvm |
Et, a partir d'une machine distante:
Code: shell |
xvncviewer <Dom0> |
(C'est bien le domaine 0 qu'il faut adresser et pas la machine virtuelle!)
L'installation de Windows se passe sans problème via VNC.
Notes
Bridging
Si on ne désire pas utiliser le bridge Xen (efficace mais complexe), on peut simplement modifier le fichier de configuration:
perl -pi -e 's@^\(network-script\ network-bridge\)$@\(network-script network-dummy\)@' /etc/xen/xend-config.sxp
Et créér le bridge dans /etc/network/interfaces
auto br0 iface br0 inet dhcp bridge_fd 0 bridge_maxwait 0 bridge_helo 0 bridge_stp off bridge_ports eth0
To Do
Vérifier que les paquets suivants ne sont pas nécessaires
python-twisted libcurl3-dev