Installation initiale Éditer

À l'install, nous avons lancé:

apt-get install xen-hypervisor libc6-xen linux-image-xen-amd64 libsysfs2 xen-ioemu-3.0.3-1 

Afin d'installer la base de Xen.

libc6-xen n'est pas disponible sous amd64, par choix, selon le bug 379444.

réseau Éditer

Pour permettre au future domU d'avoir accès au réseau, on doit enlever le commentaire à la configuration suivante dans : /etc/xen/xend-config.sxp

(network-script network-bridge)

Création de domU Éditer

Prérequis Éditer

Installer xen-tools et xen-utils-common

aptitude install xen-tools xen-utils-common

Pré-configuration Éditer

Pour réduire considérablement la quantité d'option à passer lors de la création d'un domU, éditer le fichier de configuration: /etc/xen-tools/xen-tools.conf

Xen-tools place à notre disposition des "roles", ça permet de modifier les paquets installés par défaut à la création d'un domU.

On a un rôle qui installe puppet: https://lethe.koumbit.net/svn/koumbit/trunk/xen-tools/role.d/minimal-puppet

Création manuelle Éditer

Une fois qu'on a éditer /etc/xen-tools/xen-tools.conf et fait le check out du rôle de minimal-puppet, on peut créer un domU avec la commande suivante:

xen-create-image  --role=minimal-puppet --hostname=pichu.exemple.net --ip=10.11.12.50

Création avec puppet Éditer

Des recettes Puppet ont également été écrites afin de gérer automatiquement les DomUs. Elles sont présentement en voie d'être acceptées "upstream" par DavidS.

Pour les utiliser, il suffit d'ajouter un bloc du genre à nodes.pp:

    xen::domain::xenU { "alternc.koumbit.net":
        ensure => "running",
        memory => "256M",
        size => "4G",
        swapsize => "256M",
        vg => "data",
        ip => "209.44.112.86",
        netmask => "255.255.255.192",
        gateway => "209.44.112.65",
        role => "puppet",
    }

On note ici le rôle "puppet" qui va faire que le vserver, au démarrage, va s'autoconfigurer. Notez qu'il faut ajouter l'IP du vserver à la main dans le zonefile sur homere (/etc/bind/db.209.44.112).

(!) Faire attention de respecter les quotas définis dans VserverService/GrilleDePrix.

Une fois que le client puppet remarque les changements, il va créer et lancer le domU. Tant qu'une étape n'est pas terminée, puppetd ne loggue rien dans daemon.log, alors il peut être difficile de comprendre ce qui se passe. La première étape est la création de l'image et à ce moment, xen-tools écrit un log de ses activités dans /var/log/xen-tools/<host>.log. On peut donc y suivre la progression de l'install. Donc pour faire le suivi, on peut faire:

tail -f /var/log/daemon.log /var/log/xen-tools/alternc.koumbit.net.log

Il faut ensuite configurer le serveur, par puppet ou manuellement. Par exemple, il faut régler le mot de passe root, qui est vide par défaut.

Donc en résumé:

  1. éditer nodes.pp
  2. surveillez les logs sur le dom0
  3. ajouter l'ip dans le zone file de homere (PTR et A donc /etc/bind/db.209.44.112 et /var/alternc/bind/zones/koumbit.net)

  4. configurer le domU

Migration d'un vserver en domU Éditer

Pour migrer un vserver en domU, il doit avoir un kernel compatible avec Xen installé. Il y a deux façons de faire ça. La façon préférable est de mettre à jour à etch (EtchUpgrade) et la procédure ci-bas assume une plateforme sous etch pour le domU. Autrement, il est parfaitement possible de compiler un kernel xen pour sarge.

  1. install xen kernel dans la machine virtuelle:
    • virtual# aptitude install linux-image-xen-amd64
      

      <!> ceci ne marche pas dans les machines 686, on se croise les doigts et on install -686

  2. (!) Il y a un volume logique scratch de 15G pour dumper temporairement les vservers en transit.

    • dom0# mount /dev/mapper/vg00-scratch /mnt
      
  3. premier sync
    • root-vserver# cd /vservers/foo ; tar cf - . | pv -s 15G | ssh dom0 'cd /mnt ; tar xf -'
      
  4. create with the sync
    • dom0# xen-create-image --copy=/mnt --memory=256Mb --size=10Gb --swap=256Mb --gateway=209.44.112.65 --ip=209.44.112.122 --netmask=255.255.255.192 --lvm=vg00 --hostname=bedford.koumbit.net --kernel=/boot/vmlinuz-2.6.18-4-xen-amd64 --initrd=/boot/initrd.img-2.6.18-4-xen-amd64
      General Infomation
      --------------------
      Hostname       :  bedford.koumbit.net
      Distribution   :  sarge
      Fileystem Type :  ext3
      
      Size Information
      ----------------
      Image size     :  10Gb
      Swap size      :  256Mb
      Image type     :  full
      Memory size    :  256Mb
      Kernel path    :  /boot/vmlinuz-2.6.18-4-xen-amd64
      Initrd path    :  /boot/initrd.img-2.6.18-4-xen-amd64
      
      Networking Information
      ----------------------
      IP Address 1   : 209.44.112.122
      Netmask        : 255.255.255.192
      Gateway        : 209.44.112.65
      
      
      Creating ext3 filesystem on /dev/vg00/bedford.koumbit.net-disk
      Done
      
      Installing your system with copy from /home/anarcat/bedford-sync
      Done
      
      Running hooks
      Done
      
      No role script specified.  Skipping
      
      Creating Xen configuration file
      Done
      All done
      
      
      Logfile produced at:
               /var/log/xen-tools/bedford.koumbit.net.log
      
      
  5. stop and remove from boot the vserver:
    • vserver-root# vserver foo stop
      vserver-root# rm /etc/vservers/foo/apps/init/mark
      
  6. mount the new partition on /mnt:
    • mount /dev/mapper/vg00-domU-disk /mnt
      
  7. rsync --numeric-ids -a -v ./ domu:/mnt
  8. umount the partition
    • umount /mnt
      
  9. start virtual machine:
    • dom0# xm create -c foo.koumbit.net.cfg
      

I had problems with the mysql permissions, which I had to fix, after looking through the messages in /var/log/daemon.log, this took a while.

I also had to install the fix detailed in XenNotes for the MAC address of the domU so that it doesn't create new ifs at each reboot (!!).

Other things to do:

Destroying a domU Éditer

xen-delete-image --lvm=vg00 bedford2.koumbit.net

That's it.

dom0 avec 2 cartes réseau en mode bridged Éditer

Le dom0 a accès à 2 cartes (eth0 - public et eth1 - réseau privé), on veut pouvoir créer des domU qui vont être accessible seulement de l'interface privé. Par défaut, les domU ont seulement accès au pont "xenbr0" qui est lié à l'interface eth0. On doit donc créer un nouveau pont (xenbr1) et le lier a l'interface eth1.

modifié la configuration de xen Éditer

Ajouter le script suivant dans /etc/xen/scripts/my-network-script

#!/bin/sh
dir=$(dirname "$0")
"$dir/network-bridge" "$@" vifnum=0 netdev=eth0
"$dir/network-bridge" "$@" vifnum=1 netdev=eth1

Permettre l'exécution du script:

# chmod 755 /etc/xen/scripts/my-network-script

Modifier le fichier: /etc/xen/xend-config.sxp pour activer le nouveau script pour la configuration du réseau.

##(network-script network-bridge)
(network-script my-network-script)

configuration du réseau Éditer

S'assurer que l'interface privé a une gateway dans le fichier de configuration /etc/network/interface

on peut tester en ajoutant une passerelle manuellement:

route add -net 192.168.0.0/24 gw 192.168.0.1

configuration du domU Éditer

Dans le fichier de configuration du domU /etc/xen/Mon-domU.cfg indiquer le nom du pont qui doit être utilisé.

vif  = [ 'ip=192.168.0.4', 'bridge=xenbr1' ]

voilà Éditer

Maintenant, à l'intérieur du domU, on faire un ping aux autres ip dans le subnet privé.

Problèmes à résoudre Éditer

Upgrades / gestion du kernel Éditer

Afin de faciliter la gestion du kernel en domU, on utilise pygrub afin de permettre à Xen d'utiliser le kernel installé dans le domU.

Virtualisation matérielle à tester Éditer

See http://wiki.debian.org/DebianInstaller/Xen, "Using HVM (VT processors)"

xenconsole: Could not read tty from store: No such file or directory

And the domU is doing nothing.

bedford.koumbit.net                        6      256     1 ------      0.0

I think the problem is due to QUMU, in /var/log/xen/qemu...

domid: 3
qemu: the number of cpus is 1
shared page at pfn:ffff, mfn: 4c985
buffered io page at pfn:fffd, mfn: 4c987

       ---------------------- DirectFB v0.9.25 ---------------------
             (c) 2000-2002  convergence integrated media GmbH
             (c) 2002-2004  convergence GmbH
        -----------------------------------------------------------

(*) DirectFB/Core: Single Application Core. (2006-12-04 07:38)
(*) Direct/Memcpy: Using SSE optimized memcpy()
(!) Direct/Util: opening '/dev/fb0' and '/dev/fb/0' failed
    --> No such file or directory
(!) DirectFB/FBDev: Error opening framebuffer device!
(!) DirectFB/FBDev: Use 'fbdev' option or set FRAMEBUFFER environment variable.
(!) DirectFB/Core: Could not initialize 'system' core!
    --> Initialization error!
Could not initialize SDL - exiting

When using vnc=1 in the domU config, i get:

domid: 11
qemu: the number of cpus is 1
shared page at pfn:ffff, mfn: 40e8e
buffered io page at pfn:fffd, mfn: 40e90
False I/O request ... in-service already: 0, pvalid: 0, port: 0, data: 0, count: 0, size: 0

Interfaces multiples Éditer

Chaque domU a deux interfaces alors qu'il n'y a qu'une seule interface matérielle. Ceci brise les statistiques munin / réseau.

Aliases not working Éditer

I naively tried to setup an alias in the /etc/network/interfaces file in the domU, but it doesn't ping, even from marius.

Références Éditer

Voir http://wiki.debian.org/DebianInstaller/Xen pour les notes spécifiques à Debian.

None: XenSetup (last edited 2008-06-17 10:46:33 EST by SeBas)