Vive la virtualisation libre ...
Publié il y a 7 mois, 4 semaines
Étiquettes: ArchLinux,  logiciel libre,  virtualisation

Étant donné la puissance actuelle des ordinateurs personnels, il est tout à fait possible d'utiliser plusieurs OS en même temps. Cela permet par exemple de jouer avec des livecd, tester des systèmes, utiliser des programme n'existant que sur un OS donné, sans avoir à se prendre la tête avec une solution comme le dual-boot.

Il existe depuis longtemps des solutions d'émulation permettant de faire fonctionner plusieurs OS en même temps (bochs). Cependant l'émulation complète du matériel entraine une perte de performances très importante. Pourtant si l'OS hôte et l'OS invité sont destiné tout les 2 à la même architecture matérielle, il est envisageable d'exécuter directement (ou quasiment) un certain nombre des instructions de l'OS invité sur la machine hôte ... c'est un des principe reprit par la plupart des logiciels de virtualisation existants.

Il existe des solutions qui ont le vent en poupe à l'heure actuelle. Sous Linux on retrouve notamment VMware Workstation, VMware Server Parallels Workstation et SUN xVM VirtualBox ... cependant, je préfère utiliser 2 autres solutions qemu et kvm.

qemu, kvm ... qui sont ces 2 gus ?

qemu et kqemu

qemu ne fait pas de la virtualisation à proprement parler, mais utilise une technique de traduction de code pour atteindre une vitesse d'émulation raisonnable. l'auteur de qemu (aka Fabrice Bellard) a cependant créer un module d'accélération nommé kqemu permettant d'exécuter directement le code des applications fonctionnant en espace utilisateur de l'OS émulè sur le processeur. Ce module transforme donc qemu en une solution de virtualisation.

kvm

kvm est une solution tirant partie des instructions de virtualisation ajoutées aux processeurs x86 par Intel® et AMD®. kvm se présente comme une module noyau utilisé par une version modifiée de qemu.

Pourquoi pas Virtual Box, VMWare, Parrallels ?

Avantages

Selon moi, les avantages de qemu + kqemu et/ou kvm vis à vis des solutions concurrentes sont:

  • Simplicité d'installation: ce n'est pas du cliquodrome, mais paradoxalement, je trouve son utilisation en ligne de commande d'une très grande simplicité, et aussi d'une grande souplesse.
  • Installation non intrusive: (pas de modules inconnu ou de services supplémentaires à lancer au démarrage). Je me souviens d'une époque où j'utilisais VMWare Workstation, et où tout passage à un noyau d'une version supérieure cassait les modules et services nécessaires à son fonctionnement, en attendant l'arrivée de patchs non supportés par VMWare (qui a parlé de vmware-any-any-update ??). Au moins avec kvm (intégré au noyau à partir de la version 2.6.20) et kqemu je n'ai pas ces soucis.
  • LIBRES: contrairement à Parrallels Workstation et VMWare (Server ou Workstation).
  • qemu-img : la commande permettant de créer les images de disque dur pour les machines virtuelle, qui est un véritable couteau suisse des formats de disques utilisés par les différentes solutions existantes.

Inconvénients

Les avantages que je trouve dans qemu et kvm ne doivent pas éclipser certains inconvénients (pour certains en tout cas).

  • Ligne de commande: les 2 programmes fonctionnent en CLI et sont de ce fait, pour certains moins accessibles que les GUI proposées par les concurrents.
  • Mise en œuvre du réseau: bien qu'il soit simple de donner accès au réseau à une machine virtuelle, accèder à cette même machine virtuelle par le réseau à partir de son LAN (machine hôte ou autres machines physiques ou virtuelles), est une autre paire de manche, et nécessite quelques bidouillages.

Installation et utilisation sur ArchLinux

Pré-requis

Pour peu que ce ne soit pas le cas (je ne vois pas trop comment ce serait possible):

pacman -S kernel26

Le noyau vient avec les modules nécessaires pour l'utilisation de kvm si le processeur le supporte.

Les 2 autres pré-requis sont tout aussi simples à satisfaire:

pacman -S kqemu, qemu

Le paquet qemu, est fourni avec le binaire permettant de tirer parti de kvm (binaire nommé qemu-kvm). Quant à l'utilisation de kqemu, elle nécessite l'installation du paquet sus-nommé. Pour utiliser kqemu sur un système 64bits, il faudra bien prendre la précaution d'appeler qemu-system-x86_64.

Le cas de kvm

L'utilisation de kvm nécessite un processeur Intel® ou AMD® supportant la virtualisation. Pour vérifier que c'est le cas de votre processeur, il suffit d'entrer la commande suivante dans un terminal:

egrep '^flags.*(vmx|svm)' /proc/cpuinfo

Si cette commande retourne un affichage à l'écran, vous pouvez utilisez kvm, sinon, vous devez vous contentez de qemu et kqemu.

Il va falloir aussi charger les modules au démarrage. On modifie donc notre /etc/rc.conf. Les modules à charger diffèrent selon que le processeur est de marque Intel® ou Amd®.

  • Pour les processeurs Intel®, on charge le module:

    kvm-intel
    
  • Pour les processeurs AMD® on charge le module:

    kvm-amd
    

Utilisation basique

Je vais décrire une utilisation basique d'une machine virtuelle dans laquelle je souhaite installer la dernière version (à la date de la rédaction) de fedora (en).

La première chose à faire lorsque l'on souhaite utiliser une machine virtuelle est de créer un disque dur virtuel (sauf si l'on test un livecd ou si on utilise une partition physique). La création de cette image disque se fait avec la commande qemu-img:

qemu-img create -f qcow2 ~/vm/fedora-00.img 20G

Une fois le disque créer il faut lancer la machine virtuelle. Dans cet exemple il s'agit d'une machine virtuelle connecté au net disposant de 512Mo de RAM.

Lors du premier lancement il peut être intéressant de procéder à l'installation d'un OS. On lance donc la machine avec l'image ISO du disque d'installation de l'OS en question, et on exige un boot de la machine virtuelle sur le cdrom:

  • qemu avec kqemu (sur arch64)

    qemu-system-x86_64 -kernel-kqemu -boot d -m 512 -net nic -net user -cdrom ~/isos/Fedora-9-Beta-i386-DVD.iso ~/vm/fedora-00.img
    
  • kvm

    qemu-kvm -boot d -m 512 -net nic -net user -cdrom ~/isos/Fedora-9-Beta-i386-DVD.iso ~/vm/fedora-00.img
    

Une fois l'installation du système d'exploitation sur la machine virtuelle achevée, il n'est plus nécessaire de monter l'image du cdrom dans la machine virtuelle, ni de préciser le boot sur cd, on pourra donc se contenter de démarrer la machine virtuelle par la commande:

  • qemu avec kqemu (sur arch64)

    qemu-system-x86_64 -kernel-kqemu -m 512 -net nic -net user ~/vm/fedora-00.img
    
  • kvm

    qemu-kvm -m 512 -net nic -net user ~/vm/fedora-00.img
    

Pour aller plus loin

Documentation

Quelques liens concernant qemu et kvm:

Interface graphique

Il existe un certain nombre de GUI pour qemu, mais si je ne devais en retenir qu'une ce serait : Qemulator dont voici quelques captures d'écran (lachement copiées du site web):
Gestionnaire de machines virtuelles Avec des machines virtuelles lancées

Réseau

Pour une mise en réseau plus sophistiquée, on pourra regarder du coté de ces 2 projets:

À suivre ...

S'en est fini de ce (long) billet. La suite dans un article à suivre ou je présenterais plus en détails la façon dont j'utilise qemu, à savoir :

  • Lancement des machines virtuelles au démarrage.
  • Indépendance vis à vis d'un serveur X sur l'hôte.
  • Visualisation distante.

Auteur: slubman -  Categorie: GNU Linux Commentaires: 2Permalinkdel.icio.us del.ico.us
Un retour à la raison
Publié il y a 1 année, 5 mois
Étiquettes: ArchLinux,  virtualisation

Dans un précédent billet, je m'inquiétais du sort réservé à kvm dans la version i686 de ArchLinux. Avec la sortie du noyau 2.6.22, les développeurs ont revus leur choix et intègrent à nouveau kvm dans la version i686:

[root@melody : ~]
# pacman -Q kernel26
kernel26 2.6.22.1-3

[root@melody : ~]
# zgrep KVM /proc/config.gz
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m

Et cerise sur la gateau, le paquet qemu contient un exécutable (/usr/bin/qemu-kvm) avec le support de kvm.

C'est donc une bonne nouvelle, même si, j'aurais (finalement) préféré la solution d'avoir les modules fournis dans un paquet séparé afin de suivre au plus prêt les versions de kvm.


Auteur: slubman -  Categorie: GNU Linux -  -  Permalinkdel.icio.us del.ico.us
Comment occuper une soirée à cause des conneries des mainteneurs !!!
Publié il y a 1 année, 6 mois (Édité il y a 1 année, 5 mois)
Étiquettes: ArchLinux,  Windows,  coup de gueule,  fedora,  virtualisation

NOTE: une mise à jour sur l'évolution de la situation de kvm avec la sortie du noyau 2.6.22 est disponible ici.

Le problème.

En mettant à jour ma distribution, j'ai eu la mauvaise surprise de constater la désactivation du support de kvm dans le noyau par défaut.

[root@melody : ~]
# pacman -Q kernel26
kernel26 2.6.21.5-1

[root@melody : ~]
# zcat /proc/config.gz | grep KVM
# CONFIG_KVM is not set

Je ne m'attarderais pas sur les raisons qui ont poussé les développeurs à faire ce choix (cf ce fil de discussion et ma réponse).

La solution: on package

Si comme moi vous souhaitez tout de même utiliser kvm sur votre ArchLinux (i686), il faut reconstruire les paquets nécessaires en se basant entre autre sur les travaux effectués par l'équipe de ArchLinux (x86_64). Les paquets à reconstruire sont au nombre de 3:

  1. kvm-modules: Dans le PKGBUILD, n'hésitez pas à changer la ligne définissant la variable _kver afin que cette variable corresponde au noyau sur lequel vous souhaitez utiliser kvm.
  2. gcc3: La compilation des dernières versions de l'exécutable qemu utilisé par kvm nécessite gcc 3.4.x, or ArchLinux fourni un gcc 3.3.x.
  3. qemu-kvm: Pour finir il faut compiler le qemu fourni avec kvm.

Il faut noter que l'exécutable qemu produit est compatible avec le module kqemu présent dans le dépot extra.

Une capture d'écran pour la route.

Comme d'habitude, je ne pouvait pas faire un ticket sans une capture d'écran
Système invité Fedora 7 tournant dans qemu+kvm sur un hôte ArchLinux
Vous y voyez une fedora tournant dans ce qemu+kvm fraichement (ré)installé.

Un mal pour un bien ?

Bien que je ne sois pas d'accord avec cette suppression, elle a au moins le mérite de permettre d'utiliser des versions de kvm plus récentes que celles présentes dans les releases du noyau. Ainsi la version empaquetée ci dessus est la version kvm-28 qui supporte entre autre comme système invité (guest) Windows Vista, ce qui n'est pas possible avec la version kvm-17 fournie dans le noyau 2.6.21 .

J'ai soumis tout ces résultats sur le bugtracker d'ArchLinux en espérant qu'ils soient utiles.


Auteur: slubman -  Categorie: GNU Linux Commentaires: 0Permalinkdel.icio.us del.ico.us