WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:divers:archives:xen_tuto

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

Prérequis

  • Une machine hôte pouvant accueillir la virtual machine
  • Une ou des IPs de libre(s)
  • Un nom: c'est à dire le hostname de la machine.
  • L'entrée DNS en découle : <hostname>.minet.net
  • Configuration du port du switch sur lequel est branché la machine, notamment un accès internet s'avérera utile par la suite
  • Même pas une demi heure de votre temps !!

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

  • D'abord il faut se connecter sur la machine hôte
  • Cette méthode explique comment installer un serveur para-virtualisé

Les disques virtuels

Xen propose plusieurs techniques, à ce jour trois:

  • directe (hard disk): c'est à dire le machine virtuelle a un accès direct à une partition du système
  • via LVM: c'est un peu près similaire sauf que en dessous de notre partition il y a LVM ⇒ resize à volonté, snapshot ….
  • via un fichier: c'est la solution implémentée par MiNET. On crée un fichier qui sera notre partition.
  • Se placer dans /var/lib/xen/domains/<nom de ma machine>/
  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>
  • Ensuite nous allons partitionner ces deux fichiers:
  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.

  • attention à bien mettre la version du noyeau qui est disponible sur la machine
  • file:<ou se trouve l'image a monter>,<l'id du device sur la VM>,<le mode d'accès>
  • pour que la machine soit relancée a chaque reboot de la machine hôte:
  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)

  • D'abord on monte le /
  mount /var/lib/xen/domains/<nom de ma machine>/disk.img /mnt -o loop
  #si loop n'est pas chargé
  modprobe loop
  • on installe le système de base:
  debootstrap lenny /mnt ftp://ftp.minet.net/debian
  • on se chroot
  chroot /mnt
  • créer le MDP root: passwd
  • editer les fichiers de conf network/interfaces, apt/sources.list avec ce qu'on a dit au dessus
  • apt-get update (upgrade aussi)
  • on peut déjà installer les premiers logiciels
  apt-get install ssh vim sudo mailx snmpd psmisc
  • maintenant qu'on a sudo, on crée le premier user
  adduser <login> --ingroup staff
  • on ajoute la ligne suivante au /etc/sudoers
  %staff  ALL=(ALL) ALL
  • on édite le fichier /etc/fstab pour le montage de la swap, ajouter la ligne:
  /dev/sda2     none  swap     sw                    0     0
  • on va lancer la machine à présent
  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:

  • la création des images
  • l'installation du système de base
  • les confs des fichiers principaux
  • le ssh installé
  • la conf du pwd
  • le café (non pas encore)
  • man xen-create-image pour plus d'info
  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:

  • éteindre toutes les VM
  modprobe -r loop
  modprobe loop max_loop=32 (par exemple)
  echo "loop max_loop=32" >> /etc/modules

Confs

  • Editer /etc/ssh/sshd_config

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
  • copier rapport_quotidien.sh à partir d'une autre machine dans /root

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
  • configurer un pare-feu si besoin
  • ajout de l'entrée DNS

Plusieurs interfaces

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

  • avoir bien configuré le port en trunk avec native vlan

apt-get install vlan

  • Puis
  vconfig add [interface-name] [vlan-id]
  • bien mettre dans /etc/network/interfaces
  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é

  • les sites des constructeurs AMD ou INTEL (ADM-V ou INTEL VT-x)
  • le drapeaux (hvm ou vmx)
  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)

  • Pour agrandir (bien que xen le fait automatiquement au besoin)
  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
  • On boot la vm
  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!

wiki/divers/archives/xen_tuto.txt · Dernière modification: 2018/09/17 23:54 par shatoon