Comme on l'a vu dans la Section 3, « Choix d'une solution de virtualisation », ces bibliothèques permettent à une instance de machine virtualisée d'utiliser des canaux de communications particuliers vers le matériel du système hôte. Parmi ces canaux, on trouve les accès mémoire, disque, horloge temps réel et réseau.
Avec la publication de la version stable de la distribution Debian GNU/Linux baptisée Lenny, ces bibliothèques sont disponibles dans les paquets de noyau. C'est donc dans l'arborescence des modules du paquet que l'on effectue la recherche.
On commence par identifier le paquet de noyau correspondant à la distribution.
$ dpkg -l linux-image* | grep ^ii ii linux-image-2.6-amd64 2.6.32+28 Linux 2.6 for 64-bit PCs (meta-package) ii linux-image-2.6.32-5-amd64 2.6.32-27 Linux 2.6.32 for 64-bit PCs
En fonction de la version identifiée, on recherche les modules dans son arborescence.
$ find /lib/modules/2.6.32-5-amd64/ -type f -name "*virtio*" /lib/modules/2.6.32-5-amd64/kernel/net/9p/9pnet_virtio.ko /lib/modules/2.6.32-5-amd64/kernel/drivers/net/virtio_net.ko /lib/modules/2.6.32-5-amd64/kernel/drivers/virtio/virtio_pci.ko /lib/modules/2.6.32-5-amd64/kernel/drivers/virtio/virtio_balloon.ko /lib/modules/2.6.32-5-amd64/kernel/drivers/virtio/virtio_ring.ko /lib/modules/2.6.32-5-amd64/kernel/drivers/virtio/virtio.ko /lib/modules/2.6.32-5-amd64/kernel/drivers/block/virtio_blk.ko /lib/modules/2.6.32-5-amd64/kernel/drivers/char/hw_random/virtio-rng.ko /lib/modules/2.6.32-5-amd64/kernel/drivers/char/virtio_console.ko
Lorsque ce noyau est exécuté sur une instance de machine virtuelle, ces modules sont utilisés et améliorent considérablement les performances.
Les informations données dans cette section anticipent les résultats présentés dans les suivantes sachant que l'on ne peut caractériser l'utilisation des modules qu'à partir d'une instance de machine virtuelle.
Comme on l'a dit précédemment, ces bibliothèques constituent des canaux de communication avec le matériel du système hôte. Elles ont donc un effet sur la représentation du matériel émulé au niveau du système virtualisé.
À titre d'exemple, voici la liste des périphériques «visibles» sur le bus PCI d'une instance de système virtuel.
$ lspci 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] 00:01.2 USB Controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01) 00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03) 00:02.0 VGA compatible controller: Cirrus Logic GD 5446 00:03.0 Ethernet controller: Red Hat, Inc Virtio network device 00:04.0 SCSI storage controller: Red Hat, Inc Virtio block device
Dans la liste ci-dessus, on reconnaît trois périphériques
référencés Virtio dont le gestionnaire
mémoire et le contrôleur réseau.
Sur le même système, on peut lister les modules chargés en mémoire relatifs aux bibliothèques.
$ lsmod | grep virtio virtio_blk 12775 3 virtio_net 17496 0 virtio_pci 13207 0 virtio_ring 12793 3 virtio_blk,virtio_net,virtio_pci virtio 13093 3 virtio_blk,virtio_net,virtio_pci
Cette liste correspond aux fonctionnalités utilisées par le système virtuel relativement au catalogue donné dans la section précédente.