Virtualisation avec KVM
VMware et Xen sont deux systèmes de virtualisation très répendus. En terme d'inconvénients, on peut citer le fait que :
- VMware soit propriétaire ;
- Xen ait un avenir incertain depuis son rachat par Citrix ; ce dernier peut également s'avérer contraignant (kernels xenifiés, etc.)
Bon nombre de technologies alternatives existent (Hyper-V, OpenVZ, etc.) bien que se plaçant à des niveaux différents (virtualisation, para-virtualisation, simple système de conteneurs, etc.) ; KVM est actuellement en vogue dans le monde Linux et son principal intérêt est d'être pleinement intégré aux OS récents. C'est d'ailleurs sur ce dernier que s'appuie Redhat Deltacloud.
KVM (pour "Kernel Based Virtual Machine") est initialement un dérivé de Qemu (le bien connu système d'émulation) ; cependant, le monde Open Source connait de nombreux forks mais aussi des regroupements, et ses fonctionnalités ont été intégrées aux sources de Qemu ce qui simplifie les évolutions futures.
Pour les habitués de VMware ou de Xen, notons au passage que KVM n'est pas un hyperviseur ,il s'agit d'une suite d'outils permettant de créer et d'administrer des machines virtuelles indépendantes.Pour un fonctionnement de type "hyperviseur", vous pouvez utiliser des systèmes comme l'API libvirt.
Voici quelques informations minimales au sujet de cette solution.
KVM dispose d'une ensemble de services réseau intégrés au mode utilisateur (comme un serveur DHCP), notons que :
- le réseau par défaut est 10.0.2.0/8 ;
- la passerelle est en 10.0.2.2 ;
- le serveur de noms est en 10.0.2.3 ;
- le serveur SMB est en 10.0.2.4 ;
- les machines virtuelles sont adressés à partir de 10.0.2.15.
Notons également que :
- Plusieurs outils d'administration existent (voir la liste complète) ;
- Il est possible de travailler avec le switch virtuel vde dont les fonctionnalités sont pleinement supportées ;
- LVM peut représenter un bon complément dans certains cas.
Enfin, notons que la version intégrée à Debian Lenny peut poser quelques problèmes (par exemple, l'installation d'une vm peut planter lors du grub-install) et il est préférable de passer aux packages de Squeeze (le package "qemu-kvm" remplace "kvm").
Passons à l'installation sur une Dedibox :
- Connexion au serveur en SSH (X forwarding, compression, et l'utilisateur doit avoir des privilèges suffisants dans sudo) :
$ ssh -XC USER@VOTRE_SERVEUR
- Ajout dans /etc/apt/sources.list de :
# squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free# squeeze security
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
- Dans /etc/apt/preferences :
Package: qemu-kvm
Pin: release a=testing
Pin-Priority: 999Package: *
Pin: release a=stable
Pin-Priority: 500Package: *
Pin: release a=lenny-backports
Pin-Priority: 400Package: *
Pin: release a=testing
Pin-Priority: 200
- Puis :
$ sudo aptitude install bridge-utils qemu-kvm
- Vérification de la présence des modules :
$ lsmod|grep kvm
kvm_intel 37600 0
kvm 213196 1 kvm_intel
- Téléchargement d'un media d'installation de Debian Lenny 64 :
$ mkdir installs && cd installs
$ wget http://cdimage.debian.org/debian-cd/5.0.5/amd64/iso-cd/debian-505-amd64-netinst.iso
- Création d'un disque virtuel de 30Go, au format qcow2 :
$ sudo kvm-img create -f qcow2 /home/vms/srv01-vm01.qcow 30G
- Le format qcow2 est nécessaire aux fonctionnalités de type snapshot. Si vous ne choisissez pas le format qcow2, le disque virtuel sera créé au format raw. Pour convertir un tel disque ou un disque au format qcow au format qcow2, vous pouvez utiliser la commande (comptez 15 minutes pour un disque de 30 Go) :
$ qemu-img info /home/vms/srv01-vm01.qcow
image: /home/vms/srv01-vm01.qcow
file format: qcow
virtual size: 30G (32212254720 bytes)
disk size: 2.0G
cluster_size: 4096
$ kvm-img convert -O qcow2 /home/vms/srv01-vm01.qcow /home/vms/srv01-vm01.qcow2
- Lancement de l'installation :
$ sudo kvm -no-kvm -k fr -hda /home/vms/srv01-vm01.qcow2 -cdrom ~/installs/debian-504-amd64-netinst.iso -boot d
- Lancement de la vm (avec 1 vcpu, 128 Mo de RAM, un service VNC activé, et le service SSH accessible sur le port 23/tcp via l'adresse IP du serveur) :
$ sudo kvm -no-kvm -k fr -hda /home/vms/srv01-vm01.qcow2 -redir tcp:23::22 -daemonize -vnc localhost:0
- Lancement de la vm avec 2 vcpus et 256Mo de RAM :
$ sudo kvm -no-kvm -k fr -hda /home/vms/srv01-vm01.qcow2 -redir tcp:23::22 -daemonize -vnc localhost:0 -smp 2 -m 256
- Vous pouvez ensuite vous y connecter :
$ vncviewer -via VOTRE_SERVEUR localhost:0
- Il est alors possible de switcher avec control+alt+1/2/3 entre la console de la vm, le moniteur Qemu, et le port série de la vm.
- Ligne de démarrage à ajouter dans /etc/rc.local :
/usr/bin/kvm -no-kvm -k fr -hda /home/vms/srv01-vm01.qcow2 -redir tcp:23::22 -daemonize -vnc localhost:0
- Pour créer un snapshot dans le moniteur Qemu, vous pouvez exécuter :
(qemu) savevm snap1
- Pour visionner vos snapshots :
(qemu) info snapshots
- Pour le restaurer en temps réel, depuis le moniteur Qemu :
(qemu) loadvm snap1
- Si votre vm ne boot plus, vous pouvez également le restaurer depuis la ligne de commande :
$ sudo kvm -no-kvm -k fr -hda /home/vms/srv01-vm01.qcow2 -redir tcp:23::22 -daemonize -vnc localhost:0 -loadvm snap1
Itojun Service Award
À mon grand regret, je n'avais pu échanger qu'indirectement avec Itojun au sein du projet OpenBSD.

Pour rappel, Itojun a été l'un des acteurs clef du développement de IPv6 ; il a contribué à de nombreux projets comme Kame, OpenBSD, NetBSD, ou encore MagicPoint, et a réalisé un grand nombre de publications techniques sur ces sujets.
Je suis tombé récemment sur un nouveau prix de l'ISOC, le Itojun Service Award, un hommage bien mérité...
Le protocole Skype
Voici pour l'historique un très bon article sur le sujet, intitulé Silver Needle in the Skype (par Philippe BIONDI et Fabrice DESCLAUX - EADS CCR/STI/C) ; le fonctionnement du protocole y est décrypté (debugging avec Softice, etc.) et une technique de filtrage via Netfilter et u32 est également expliquée. Les utilisateurs d'OpenBSD pourront quant à eux se référer à l'article Blocking Skype Using Squid and OpenBSD (par rootn0de).
SCIgen
Si vous êtes un scientifique dans l'âme mais que vous manquez de temps pour vos publications, il y a une solution nommée SCIgen . Un amis perl-mongueur (Arhuman pour ne pas le citer) m'avais parlé il y a quelques années de ce site il y a quelques années. Ce générateur de publications est écrit en Perl, et certains de ces papiers ont même pu être acceptés dans le cadre d'évènements scientifiques... Bonne découverte.
Au programme aujourd'hui, "On the Investigation of the Internet" (PDF).
IBM adopte Firefox
IBM a décidé d'adopter plus officiellement le navigateur Mozilla Firefox, en l'activant sur les postes informatiques de leurs 400 000 employés. Il semblerait également qu'ils feront en quelque sorte la promotion du-dit navigateur auprès des fabricants et partenaires avec qui ils sont engagés. Vous pouvez retrouver le communiqué officiel sur le blog de Bob Sutor, vice-président de la division Linux et Open Source d'IBM.
