Xen

From AleikoumWiki

(Difference between revisions)
Jump to: navigation, search
m (/etc/xen-tools/xen-tools.conf)
m (Liens)
Line 381: Line 381:
http://www.cl.cam.ac.uk/research/srg/netos/xen/ : site officiel du projet<br />
http://www.cl.cam.ac.uk/research/srg/netos/xen/ : site officiel du projet<br />
http://fr.wikipedia.org/wiki/Xen : presentation de xen<br />
http://fr.wikipedia.org/wiki/Xen : presentation de xen<br />
-
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502798 : lien vers le bug debian pour la console
+
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502798 : lien vers le bug debian pour la console avec ssh
 +
https://bugs.launchpad.net/ubuntu/+source/xen-tools/+bug/139046 : lien expliquant le bug (ou la feature ? :) ) de la console

Revision as of 11:23, 25 February 2009

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

/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.

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/
# mount /dev/vg0/p06 /data/forinstall/usr/lost+found/
# 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
#
kernel      = '/boot/vmlinuz-2.6.26-1-xen-686'
ramdisk     = '/boot/initrd.img-2.6.26-1-xen-686'
memory      = '1024'

#
#  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

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

Sinon a chaque tentative de connexion, il y aura l'erreur suivante : PTY allocation request failed on channel 0

Redemarrer le domU depuis le dom0 grace a :

xm shutdown le-nom-de-votre-host && xm create le-nom-de-votre-host

Et voila

Liens

http://www.cl.cam.ac.uk/research/srg/netos/xen/ : site officiel du projet
http://fr.wikipedia.org/wiki/Xen : presentation de xen
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502798 : lien vers le bug debian pour la console avec ssh https://bugs.launchpad.net/ubuntu/+source/xen-tools/+bug/139046 : lien expliquant le bug (ou la feature ? :) ) de la console

Personal tools