Virtio
VIRTIO est une abréviation pour Virtual Input-Output, que l'on pourrait traduire en français par Entrées-Sorties Virtuelles.
Virtio est une interface de programmation du Noyau Linux utile aux machines virtuelles.
Problème
Les machines virtuelles, pour des raisons de performance, tendent de plus en plus à devenir des hyperviseurs afin d'accélérer le transit des données entre l'hôte et les invités en présentant au système d'exploitation invité un matériel virtuel nécessitant un pilote spécifique. Ceci contrairement aux machines virtuelles classiques qui simulent la présence d'un matériel existant réellement, généralement répandu, pour lequel le système invité a déjà un pilote.
La multiplication des hyperviseurs a entraîné une multiplication dans les mêmes proportions des pilotes nécessaires, des pilotes qui, sous Linux, devaient être adaptés à chaque version du noyau. Virtio tente de répondre à ce problème en mettant en œuvre directement dans la branche officielle du noyau Linux une interface de programmation dédiée aux pilotes de périphériques de machines virtuelles.
Fonctionnement
L'interface de programmation de virtio est très minimaliste, toutes les communications entre l'hyperviseur et le noyau invité se font au travers d'une file d'attente FIFO[1]. Des pilotes, eux aussi présents dans le noyau, se basent sur cette interface : il existe à l'heure actuelle des pilotes pour une carte réseau et un contrôleur de disques, utilisés par KVM[2]. Les développeurs de KVM ont également écrit un pilote réseau pour Microsoft Windows XP et 2000 mettant en œuvre virtio[3].
Références
- (en) « An API for virtual I/O: virtio », Eklektix, Inc.,
- (en) « virtio », Qumranet,
- (en) « kvm-guest-drivers-windows », Qumranet,