Table des matières

Comment on mettait en place une Xen à MiNET...

Prérequis

Création de la Virtual Machine (méthode détaillée)

Les disques virtuels

Xen propose plusieurs techniques, à ce jour trois:

  dd if=/dev/zero of=disk.img bs=1G count=<size>

Cela crée notre partition root de notre VM.

  dd if=/dev/zero of=swap.img bs=1M count=<size>
  mkfs.ext3 disk.img
  mkswap swap.img

Le fichier de configuration de la VM

Voici un template d'un fichier de configuration: /etc/xen/<nom de la machine>.conf

#
#  Kernel + memory size
#
kernel  = '/boot/vmlinuz-2.6.18-6-xen-amd64'
ramdisk = '/boot/initrd.img-2.6.18-6-xen-amd64'

memory  = '<memory-size>'


#
#  Disk device(s).
#
root    = '/dev/sda1 ro'

disk    = [ 'file:/var/lib/xen//domains/<nom de ma machine>/disk.img,sda1,w', 'file:/var/lib/xen//domains/<nom de ma machine>/swap.img,sda2,w' ]

#
#  Hostname
#
name    = '<nom de ma machine>'


#
#  Networking
#
vif  = [ 'ip=<IP>' ]

#
#  Behaviour
#
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

# Pour une console en état de marche
extra='xencons=tty'

Vous remarquerez que c'est assez simple.

  ln -s /etc/xen/auto/<nom de la machine> /etc/xen/<nom de la machine>.conf

Configuration préalable

Il est bon de faire quelques confs avant de lancer la machine (xen-create-image fait dèja une bonne partie du boulot aussi, cf man xen-create-image)

  mount /var/lib/xen/domains/<nom de ma machine>/disk.img /mnt -o loop
  #si loop n'est pas chargé
  modprobe loop
  debootstrap lenny /mnt ftp://ftp.minet.net/debian
  chroot /mnt
  apt-get install ssh vim sudo mailx snmpd psmisc
  adduser <login> --ingroup staff
  %staff  ALL=(ALL) ALL
  /dev/sda2     none  swap     sw                    0     0
  Ctrl-D (pour sortir du chroot)
  cd /
  umount /mnt

Création de la Virtual Machine (méthode éclair)

Voici une méthode très rapide pour faire tout ce qu'on a fait au-dessus:

  xen-create-image --hostname=<nom de la machine> --ip=<IP>

à condition d'avoir installé xen-tools et d'avoir configuré comme il faut /etc/xen-tools/xen-tools.conf Mais il est intéressant de savoir comment cela fonctionne, notamment quand ça marche pas…

Lancement et configurations

Lancement

  xm create -c /etc/xen/<nom de la machine>.conf

le -c vous directement dans une console de la VM

EDIT : sur les machines lenny, rajouter “extra = “xencons=tty” ” dans le fichier de conf de la VM et dans le fichier de conf xen-tool.cfg, il y a une section pour lenny vers la fin, décommenter les deux lignes qui ne sont pas par défaut

Un mot sur le module loop

Ce module ne permet pas plus de 8 montages simultanés. Donc la 5e machine virtuelle ne se lancera pas. Mais il y a une solution: Augmenter ce nombre:

  modprobe -r loop
  modprobe loop max_loop=32 (par exemple)
  echo "loop max_loop=32" >> /etc/modules

Confs

Empêcher la connexion en root sur la machine :

  PermitRootLogin no

Empêcher la connexion sur les IPs publiques:

  ListenAddress 192.168.1.xxx

Puis redémarrer le serveur ssh :

  /etc/init.d/ssh restart

conf de exim4 pour le mail quotidien

  dpkg-reconfigure exim4-config
  mail sent by smarthost; no local mail
  <nom de la mach>
  127.0.0.1
  <DNS>
  minet.net
  mx.minet.net

Plusieurs interfaces

Si vous voulez plusieurs interfaces dans des vlan différents, il faut

apt-get install vlan

  vconfig add [interface-name] [vlan-id]
  auto eth0.<vlanId>

Création de la Virtual Machine full-virtualization

D'abord il est bon de s'assurer que son processeur gère bien cette fonctionnalité

  grep flags /proc/cpuinfo

ou

  cat /sys/hypervisor/properties/capabilities

Puis on installe xen-utils-commmon. Voici un fichier de conf pour booter un XP

kernel = "/usr/lib64/xen-default/boot/hvmloader"
builder = 'hvm'
memory = 512
name = "win-cdrom"
vcpus = 1
pae=0
acpi=0
apic=0
vif = [ 'type=ioemu, bridge=xenbr0' ]
disk = [ 'file:/var/lib/xen/domains/win-cdrom/winxp.iso,ioemu:hdc:cdrom,r' ]
#disk = [ 'phy:/dev/sdb,ioemu:hda,w'  ]
device_model = '/usr/lib64/xen-default/bin/qemu-dm'
#cdrom='/dev/scd0'
boot='d'
sdl=1
vnc=0
vncviewer=0
stdvga=0
serial='pty'
ne2000=0
on_poweroff = 'destroy'
on_reboot   = 'destroy'
on_crash    = 'destroy'

( Edit guest configuration file and add “serial = pty”

Then edit guest grub.conf file and add console=ttyS0 to kernel line and add “co:2345:respawn:/sbin/agetty ttyS0 9600 vt100-nav” to your /etc/inittab. )

Retailler des images disques

Cette partie va expliquer comment on retaille des images utilisées par Xen.

La première chose à faire est de sauvegarder les fichiers de conf (/etc) en utilisant SVK, ainsi que tous autres fichiers au besoin. Ceci car le resize2fs peut planter.

Ensuite on éteint la machine:

  halt 
  (ou xm shutdown)

un “xm destroy” n'est jamais bon !!

Puis depuis le dom0. On lance un screee. On vérifie le FS et on le retaille.

  screen
  e2fsck -f /var/lib/xen/domains/<server_name>/disk.img
  resize2fs /var/lib/xen/domains/<server_name>/disk.img <taille>G

Cette dernière opération peut être longue (pour le proxy une heure pour passer de 60 à 50G)

  dd if=/dev/zero bs=1G count=1 of=/var/lib/xen/domains/<server_name>/disk.img
  resize2fs /var/lib/xen/domains/<server_name>/disk.img
  xm create -c /etc/xen/<server_name>.cfg

(inspiré de ceci)

PTY et noyau 2.6.26

Au cours des mises à jour en noyau 2.6.26, on a vu apparaître des soucis à la connexion SSH au niveau de l'allocation PTY.

La solution : installer udev!