======= 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 : .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// dd if=/dev/zero of=disk.img bs=1G count= Cela crée notre partition root de notre VM. dd if=/dev/zero of=swap.img bs=1M count= * 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/.conf '' # # Kernel + memory size # kernel = '/boot/vmlinuz-2.6.18-6-xen-amd64' ramdisk = '/boot/initrd.img-2.6.18-6-xen-amd64' memory = '' # # Disk device(s). # root = '/dev/sda1 ro' disk = [ 'file:/var/lib/xen//domains//disk.img,sda1,w', 'file:/var/lib/xen//domains//swap.img,sda2,w' ] # # Hostname # name = '' # # Networking # vif = [ '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:,, * pour que la machine soit relancée a chaque reboot de la machine hôte: ln -s /etc/xen/auto/ /etc/xen/.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//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 --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= --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/.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 127.0.0.1 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. ===== 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//disk.img resize2fs /var/lib/xen/domains//disk.img 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//disk.img resize2fs /var/lib/xen/domains//disk.img * On boot la vm xm create -c /etc/xen/.cfg (inspiré de [[http://dotbootstrap.x2q.net/howto-resize-xen-loop-disk-image/|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**!