User Tools

Site Tools


xen

xen et les xen-tools

Régler ce qui se passe au boot de bixen

  • Pour que la machine bios démarre automatiquement lors du boot de bixen:
    cd /etc/xen/auto
    ln -s ../bios
  • Faire un lien symbolique vers le fichier de configuration de chaque machine que vous voulez voir démarrer automatiquement
  • xen peut suspendre (et sauver), ou encore arrêter brutalement les machines lors de l'arrêt. Ce comportement se règle en éditant le fichier /etc/default/xendomains
  • Personnellement, j'ai désactivé le SAVE_RESTORE des machines, qui était très long. Je préfère que les machines s'arrêtent proprement et redémarrent à zéro lors du reboot. Cela se fait par
    XENDOMAINS_SAVE=""
    XENDOMAINS_RESTORE=false

Démarrer une machine virtuelle

Pour démarrer la machine bios tout en se connectant à la console (switch -c):

xm create -c bios

Voir les machines virtuelles démarrées

xm list
xm top

Arrêter une machine virtuelle

Se connecter en tant que root sur bixen puis:

xm shutdown bios
xm destroy bios

Rebooter une machine virtuelle

Se connecter en tant que root sur bixen puis:

xm shutdown bios
xm destroy bios
xm create bios

ATTENTION La commande reboot envoyée à partir de la machine virtuelle ne fonctionne pas: elle arrête effectivement le FS, mais pas la machine virtuelle en elle-même.

Se connecter sur la console d'une machine virtuelle déjà démarrée

 xm console bios

Attention, pressez un ou deux fois la touche Retrun avant de voit apparaître l'invite de commande du système.

Changer la configuration d'une machine

  • Pour changer la configuration de la machine virtuelle bios, aller voir le fichier /etc/xen/bios et redémarrer le domaine par xm destroy suivi de xm create
  • Le fichier /etc/xen/sample donne quelques indications sur les possibilités

Faire grossir un disque

Il est simple de faire grossir un disque, ainsi que son système de fichiers:

Arrêter la machine invitée

xm shutdown bios
xm destroy bios

Agrandir la partition lvm

lvresize -L500T /dev/xdt/bios-data

Agrandir le système de fichiers

NOTE: Dans les commandes suivantes on ne spécifie pas de taille pour le système de fichier, celui-ci prendra toute la place disponible dans la partition.

Pour ext2,3,4:

resize2fs /dev/xdt/bios-data

Pour reiserfs:

resize_reiserfs /dev/xdt/bios-data

Faire maigrir un disque

Il est tout aussi simple de faire maigrir un disque, ainsi que son système de fichiers (il est ainsi possible de redistribuer l'espace disque en jouant aux vases communiquants).

Arrêter la machine invitée

xm shutdown bios
xm destroy bios

Diminuer le système de fichiers

Pour ext2,3,4:

resize2fs /dev/xdt/bios-data 50G

Pour reiserfs:

resize_reiserfs -s 50G /dev/xdt/bios-data

Diminuer la partition lvm

lvresize -L50G /dev/xdt/bios-data

Redémarrer la machine invitée

xm create bios

Installer une nouvelle machine virtuelle:

Debian stable

xen-create-image --hostname NOM --role udev --ip XX.XX.XX.XX --passwd --extension ''

Debian wheezy (testing)

xen-create-image --hostname NOM --role udev --ip XX.XX.XX.XX --passwd --extension '' --dist wheezy

NOTE - Pour que xen-create-image fonctionne avec wheezy vous devez la première fois seulement faire la manip suivante:

cd /usr/lib/xen-tools
ln -s debian.d wheezy.d
cd /usr/share/debootstrap/
ln -s sid wheezy

Ubuntu hardy heron (noyau commun)

xen-create-image --hostname NOM --role udev --ip XX.XX.XX.XX --passwd  --extension '' --dist hardy --install-method rinse

fedora 8 (noyau commun)

xen-create-image --hostname NOM --role udev --ip XX.XX.XX.XX --passwd  --extension '' --dist fedora-core-8 --install-method rinse
  • De manière générale, un coup d'oeil dans /usr/lib/xen-tools donne la liste des distributions qu'il est possible d'installer aisément.
  • La méthode rinse est utilisée pour installer des distributions à base de rpm (redhat et dérivées)
  • La méthode debootstrap (valeur par défaut) permet d'installer des distributions à base de dpkg (Debian et dérivées)
  • On peut encore utiliser une méthode à base de copy

Windows

Il est possible de faire tourner une version de windows (a priori n'importe laquelle) dans une machine virtuelle. Toutefois, il ne s'agit plus de paravirtualisation, mais cette fois de véritable virtualisation. Cela marche à condition que les instructions de virtualisation du processeur soient actives (et à condition que le processeur soit assez récent pour avoir ces instructions).

Vérifier que la virutalisation est possible

  • Sur un processeur intel
    # xm dmesg | grep -i hvm
    (XEN) HVM: VMX enabled
  • Sur un processeur amd
    # xm dmesg | grep -i hvm
    (XEN) HVM: SVM enabled
  • Si aucune de ces deux instructions ne fournit de sortie, vous êtes bons pour changer de machine

Installer gvncviewer

  • Installer gvncviewer par
    apt-get install gvncviewer

Le fichier de configuration

  • Un fichier de configuration possible serait:
    kernel = "/usr/lib/xen-default/boot/hvmloader"
    builder='hvm'
    
    memory = 512
    shadow_memory = 8
    
    name = "win"
    
    vif = [ 'type=ioemu' ]
    disk = [ 'phy:/dev/xdt/windows-sys,xvda,w', 'file:/xen/cdrom-winxp.iso,xvdc:cdrom,r' ]
    device_model = '/usr/lib/xen-default/bin/qemu-dm'
    
    # boot on floppy (a), hard disk (c) or CD-ROM (d)
    # default: hard disk, cd-rom, floppy
    boot="d"
    
    sdl=0
    vnc=1
    #vnclisten="0.0.0.0"
    vncconsole=1
    vncpasswd='azerty'
    stdvga=0
    serial='pty'
    usbdevice='tablet'
    keymap='fr'
    
    on_poweroff = 'destroy'
    on_reboot   = 'restart'
    on_crash    = 'restart'
  • La ligne disk indique que nous déclarons deux disques:
    1. Le disque système, sous forme d'une partition lvm, comme d'habitude
    2. Le cdrom (en readonly), sous forme d'une copie iso du cdrom de windows xp
  • La ligne vif donne le type d'interface réseau (ioemu). On peut aussi spécifier l'adresse mac, et il peut être nécessaire de spécifier le modèle de carte (obligatoirement ne2k_pci, ne me demandez pas pourquoi), d'où la ligne:
    vif = [ 'type=ioemu, mac=00:16:3e:12:34:56, model=ne2k_pci' ]
  • Démarrez la machine par
    xm create win
  • Connectez-vous à la console par
    gvncviewer localhost
  • Lors du premier reboot de windows, “retirez” le cdrom de la manière suivante:
    1. Arrêtez la machine par
      xm destroy win
    2. Editez le fichier de configuration et remplacez la ligne boot=“d” par boot=“c”
    3. Redémarrez par
      xm create win
      gvncviewer localhost

N'importe quelle distribution linux avec son noyau

FIXME (TODO)

Refaire l'installation en écrasant l'installation précédente:

Il suffit d'ajouter le switch –force à la commande xen-create-image

Changer la quantité de mémoire vive:

Pour changer la quantité de mémoire vive utilisée par une machine virtuelle:

  1. Arrêter la machine
  2. Editer le fichier de configuration /etc/xen/bios et changer la ligne:
    memory=
  3. Agrandir le swap:
    lvresize -L1G /dev/xdt/bix44-swap
    mkswap /dev/xdt/bix44-swap
  4. Redémarrer la machine

La taille de swap recommandée est 1,5 fois la taille mémoire.

ATTENTION: La somme de toutes les lignes memory doit être inférieure à la quantité de mémoire vive se trouvant dans la machine physique !

Agrandir un disque:

Pour agrandir un disque de la machine virtuelle bios44, voici la procédure la plus simple:

  1. Vérifier l'état des sauvegardes (question de prudence)
  2. Arrêter la machine
  3. Agrandir le “logical volume” lvm:
    lvresize -L 10G /dev/xdt/bios44-disk
  4. Faire le fsck:
    e2fsck -f /dev/xdt/bios44-disk
  5. Agrandir le système de fichiers:
    resize2fs /dev/xdt/bios44-disk
  6. Redémarrer la machine

Ajouter un disque:

Pour ajouter un disque à la machine virtuelle bios44:

  1. Créer un logical volume par
    lvcreate -n bios44-data -L100G xdt
  2. Formatter:
    mkfs /dev/xdt/bios44-data
  3. Editer le fichier de configuration de /etc/xen/bios44:
    disk = [ 'phy:xdt/bios44-disk,sdb1,w','phy:xdt/bios44-swap,sda2,w'] 
    devient
    disk = [ 'phy:xdt/bios44-disk,sdb1,w','phy:xdt/bios44-swap,sda2,w','phy:xdt/bios44-data,sda3,w']
  4. Rebooter la machine virtuelle
  5. Monter le nouveau disque par
    mkdir /mnt/data
    mount /dev/sda3 /mnt/data
  6. Mettre à jour le fichier /etc/fstab

Mettre une machine virtuelle à la poubelle:

Pour jeter une vieille machine, il suffit d'arrêter la machine, de supprimer son fichier de configuration ainsi que les partitions lvm associées:

xm destroy vieille_machine
rm /etc/xen/vieille_machine /etc/xen/auto/vieille_machine
lvremove /dev/xdt/vieille_machine-sys /dev/xdt/vieille_machine-swap

Mettre à jour votre machine debian

  • La mise à jour sous debian revient à utiliser deux commandes:
    apt-get update
    apt-get dist-upgrade
  • La première ligne permet de télécharger la liste des paquets
  • La seconde ligne les installe

Sauvegarde de bixen/bios en utilisant Networker

  • bixen et ses machines virutelles peuvent être sauvegardés en utilisant le client de Legato/Networker.
  • La méthode décrite ici suppose que vous avez une licence pour bixen et une pour chaque machine virtuelle.
    • Il semble raisonnable d'installer un client pour bixen et un client pour bios
    • Pour les autres machines virtuelles, la méthode indiquée plus loin peut éventuellement être suffisante
  • ATTENTION j'ai dû utiliser la version 7.4.4, qui fonctionne très bien avec notre serveur, pourtant en 7.2. Mais je n'ai pas réussi à installer la version 7.2

Installation du client sur Debian

  1. Installer alien (nécessaire pour l'installation) ainsi que la bibliothèque libxp6 (nécessaire pour nwrecover à, partir de 7.4) par
    apt-get update
    apt-get install alien libxp6

    alien est un utilitaire qui permet de convertir des fichiers au format .rpm (pour redhat) au formet .deb (pour debian)

  2. Récupérer le fichier par
    # wget ftp://www.stordata.fr/pub/networker/7.4.4/nw74sp4_linux_x86_64.tar.gz
  3. Extraire le rpm du client par
    tar xvzf nw74sp4_linux_x86_64.tar.gz lgtoclnt-7.4.4-1.x86_64.rpm
  4. Installer ce rpm par
    alien -i lgtoclnt-7.4.4-1.x86_64.rpm

    c'est un peu long, il y a quelques messages qu'on peut ignorer, mais ça marche

  5. Décompresser puis copier le fichier de démarrage: networker.gz dans /etc/init.d, puis exécuter la commande
    update-rc.d networker start 98 2 . stop 02 0 6 .

    il ne s'installe pas automatiquement car alien n'a pas converti les scripts de postinstallation

  6. Dire le nom des serveurs de sauvegarde par
    mkdir -p /nsr/res/; echo 'votre_serveur' > /nsr/res/servers

    Attention également les fichiers /etc/host doivent être correctement renseignés

  7. Démarrer le service par
    /etc/init.d/networker start
  8. Vérifier que tout est OK par
    cat /nsr/logs/daemon.raw
    0 1250514586 2 0 0 3798447856 4101 0 bios nsrexecd 2 %s 1 0 28 @(#) Product:      NetWorker
    0 1250514586 2 0 0 3798447856 4101 0 bios nsrexecd 2 %s 1 0 34 @(#) Release:      7.4.4.Build.634
    0 1250514586 2 0 0 3798447856 4101 0 bios nsrexecd 2 %s 1 0 22 @(#) Build number: 634
    0 1250514586 2 0 0 3798447856 4101 0 bios nsrexecd 2 %s 1 0 47 @(#) Build date:   Thu Dec 11 17:33:29 PST 2008
    0 1250514586 2 0 0 3798447856 4101 0 bios nsrexecd 2 %s 1 0 27 @(#) Build arch.:  linux86w
    0 1250514586 2 0 0 3798447856 4101 0 bios nsrexecd 2 %s 1 0 53 @(#) Build info:   DBG=0,OPT=-O2 -fno-strict-aliasing
  9. Après avoir lancé la sauvegarde, n'oubliez pas de vérifier que tout va bien à l'aide de nwrecover
  10. Maintenant, vous pouvez dormir sur vos quatre oreilles

Restitution des fichiers sauvegardés

  • N'importe quel utilisateur de la machine sauvegardée peut récupérer ses fichiers par
    nwrecover

    ou

    recover

Sauvegarde de plusieurs machines virtuelles à partir de bixen

  • Cette méthode présente un gros avantage: tout étant sauvegardé à partir de bixen, il n'est pas nécessaire d'installer le client de sauvegarde sur toutes les machines virtuelles…. et donc il n'est pas nécessaire d'avoir une licence par machine virtuelle. On peut donc multiplier les machines virtuelles sans se ruiner. Quelques inconvénients cependant:
    1. Pour chaque volume sauvegardé nous allons créer un volume “snapshot” dont la taille sera de 20% du volume original. Donc il faut qu'il reste de la place sur le “groupe de volumes” xdt.
    2. La restauration des fichiers manque de souplesse, en pratique c'est l'administrateur système qui devra l'effectuer. Donc à éviter pour des serveurs ayant un grand nombre d'utilisateurs.
    3. Ne marche (probablement) pas pour des machines virtuelles windows.
  • Prérequis: Le client networker doit être installé sur bixen, comme expliqué ci-dessus

Configuration de Networker

  • Si votre groupe de sauvegarde s'appelle BIXEN ( à voir avec votre eic), vous devrez créer (copier-coller) le script suivant:
    # vi /nsr/res/BIXEN.res
    type: savepnpc;
    precmd: "/etc/xen/nsr/nsr_precmd";
    pstcmd: "/etc/xen/nsr/nsr_pstcmd","echo bye", "/bin/sleep 5";
    abort precmd with group: No;
  • Côté serveur de sauvegarde, Networker doit être configuré pour utiliser le programme savepnp comme 'remote command' (et non pas le programme par défaut save) lors de chaque sauvegarde: ce programme permet d'appeler un script AVANT et APRES l'opération de sauvegarde proprement dite.

Scripts de sauvegarde

  • Récupérer et mettre dans /etc/xen le fichier nsr_savepnp.tgz, puis
    cd /etc/xen/nsr
    tar xvzf nsr_savepnp.tgz
  • Pour sauvegarder la machine bix2:
    cd /etc/xen/nsr
    cp pre/bixN.pl.dist pre/bix2.pl
    cp pst/bixN.pl.dist pst/bix2.pl
  • Peut-être devrez-vous adapter les scripts pre/bix2.pl et pst/bix2.pl à vos besoins (taille et nombre des volumes à sauvegarder). Editez ces scripts et modifiez-les si besoin
  • Vérifiez que tout se passe bien par les commandes:
    cd /tmp
    /etc/xen/nsr/nsr_precmd
    lvscan
    mount
    /etc/xen/nsr/nsr_pstcmd
    lvscan
    mount
  • Demandez à votre EIC de sauvegarder les volumes montés par le script pre/bix2.pl, c'est-à-dire au moins /mnt/bix2/disk (cf. le script pre/bix2.pl).

Restitution des fichiers sauvegardés

  • Pour récupérer des fichiers ou des répertoires perdus, il vous faudra vous connecter sur bixen, puis:
    cd /mnt/bix2/disk
    nwrecover
  • Les fichiers seront alors relus, il vous faudra les copier manuellement (avec scp par exemple) sur la machine bix2 pour terminer la restitution.
xen.txt · Last modified: 2012/03/15 14:05 by manu