libvirt

À propos de Libvirt

À propos de Libvirt
Libvirt est l'un des outils de gestion de virtualisation les plus populaires. Il est composé d'une API de gestion et d'un démon avec lequel vous pouvez interagir avec votre pile de virtualisation. Libvirt s'efforce d'unifier le processus de gestion pour toutes les différentes technologies de virtualisation de KVM à VMWare ESX et même BHyve. Il peut également gérer les conteneurs LXC et même certaines technologies de paravirtualisation comme Xen.

Ce n'est pas parce qu'il prend en charge un large éventail de technologies que vous devez les connaître toutes. Vous pouvez vous concentrer sur une technologie comme KVM et construire votre expérience libvirt autour de cela. Cet article essaiera de donner une critique complète de la technologie à partir de l'expérience personnelle de l'auteur avec elle.

Arrière-plan

Pour avoir une idée de ce dont Libvirt est capable et comment vous pouvez l'utiliser sur votre propre système, vous pouvez suivre les guides suivants :

  1. Installer KVM et Libvirt sur Debian
  2. Libvirt avec Python

Si vous connaissez déjà des outils tels que virsh, virt-install, virt-manager, oVirt, etc., vous utilisez déjà libvirt sans même le savoir. Les outils susmentionnés utilisent libvirt dans le backend et fournissent une interface conviviale, qu'il s'agisse d'une ligne de commande ou d'une interface graphique.

Architecture

Libvirt est conçu pour fonctionner avec n'importe quel hyperviseur et s'est développé au fil des ans pour fonctionner avec un large éventail d'hyperviseurs. Le démon libvirt expose une API qui peut être utilisée par des applications comme virt-manager ou virsh (et même vos scripts Python personnalisés). Les demandes des utilisateurs sont reçues par l'API. Ces demandes peuvent être n'importe quoi comme créer un invité KVM, ou me montrer la mémoire utilisée par un conteneur LX donné, etc.

Le démon libvirt délègue ensuite la requête au pilote d'hyperviseur libvirt approprié. Ce pilote comprend et met en œuvre toutes les spécificités d'une technologie de virtualisation donnée et exécute les instructions en conséquence.

Il existe une classe différente de pilotes pour gérer le stockage et même les réseaux de machines virtuelles.

Pools et volumes

Les machines virtuelles ont besoin de beaucoup de stockage. La technologie de stockage elle-même est très variable d'un hyperviseur à l'autre. VMWare utilise son propre format vmdk, QEMU aime utiliser qcow2, il y a aussi des images de disque brutes et les images LXC sont également une autre histoire. De plus, vous souhaitez regrouper toutes les images de disque VM et leur fournir un support de stockage différent comme un serveur NFS, un jeu de données ZFS ou simplement un répertoire. Cela vous permet d'utiliser libvirt dans une variété de cas d'utilisation différents, d'un seul serveur domestique à une solution de virtualisation évolutive de niveau entreprise.

Dans la langue vernaculaire de libvirt, un seul périphérique de stockage virtuel associé à n'importe quelle machine virtuelle, comme le fichier image qcow2, raw ou vmdk d'une machine virtuelle ou une ISO montable est connu comme un le volume. Le support de stockage utilisé sur l'hôte pour stocker un groupe de volumes associés est appelé bassin. Vous pouvez utiliser un serveur NFS en tant que pool ou un ensemble de données ZFS, comme mentionné précédemment. Si vous n'avez pas de solution de stockage sophistiquée, vous pouvez simplement utiliser un répertoire.

Par défaut, libvirt a deux pools différents. Le premier est /var/lib/libvirt/images et /var/lib/libvirt/boot. Les volumes d'une seule machine virtuelle peuvent être répartis sur plusieurs pools. Par exemple, je stocke toutes les images cloud propres et les ISO du programme d'installation du système d'exploitation dans le pool /var/lib/libvirt/boot et pour les machines virtuelles individuelles, rootfs est installé dans les fichiers image stockés dans /var/lib/libvirt/images.

Vous pouvez même avoir un seul pool pour une seule VM, ou vous pouvez diviser davantage les pools pour les instantanés de VM, les sauvegardes, etc. Tout est très flexible et vous permet d'organiser vos données selon votre convenance.

Configurations

Virsh est un outil populaire pour tout configurer depuis votre machine virtuelle, la mise en réseau de la machine virtuelle et même le stockage. Les fichiers de configuration eux-mêmes vivent au format XML. Vous vous retrouverez à émettre des commandes telles que :

$ virsh dumpxml VM1
$ virsh modifier VM1

Et de même, il existe des sous-commandes comme net-dumpxml et pool-edit pour afficher ou configurer la configuration des pools, des réseaux, etc. Si vous êtes curieux de savoir où se trouvent ces fichiers de configuration, vous pouvez aller dans /etc/libvirt/ et trouver le répertoire concerné de vos hyperviseurs.  Le répertoire parent /etc/libvirt/ lui-même contient beaucoup de configurations globales comme les pilotes (e.g qemu.conf et lxc.conf ) et leur configuration et le comportement par défaut de libvirt.

Pour examiner la configuration spécifique de composants individuels tels que les machines virtuelles, les pools et les volumes, vous devez accéder aux répertoires correspondants. Pour les invités qemu c'est /etc/libvirt/qemu

root@deb:/etc/libvirt/qemu# ls -al
total 24
drwxr-xr-x 4 racine racine 4096 21 avril 10:39 .
drwxr-xr-x 6 racine racine 4096 28 avril 17:19…
drwxr-xr-x 2 root root 4096 21 avril 10:39 démarrage automatique
drwxr-xr-x 3 root root 4096 14 avril 13:49 réseaux
-rw -------- 1 racine racine 3527 20 avr 19:10 VM1.xml
-rw -------- 1 racine racine 3527 20 avr 19:09 VM2.xml

Le répertoire de démarrage automatique contiendra des liens symboliques vers VM1.xml et VM2.xml si vous avez configuré les VM pour qu'elles démarrent automatiquement au démarrage du système hôte ( $ virsh autostart VM1 ).

De même, le /etc/libvirt/qemu/network contient une configuration pour le réseau par défaut un invité qemu. Le fichier /etc/libvirt/storage contient des XML définissant les pools de stockage.

Conclusion

Si vous êtes intéressé par la configuration de votre propre hôte de virtualisation, un bon point de départ sera cet article où je montre comment installer des invités QEMU-KVM sur un hôte Debian à l'aide de libvirt et des outils associés.

Après cela, vous pouvez commencer à jouer avec virsh CLI et voir et gérer des entités comme le domaine (libvirt appelle les machines virtuelles invitées un domaine) réseaux, pools de stockage et volumes. Cela vous mettra suffisamment à l'aise avec la technologie pour que vous puissiez passer à d'autres concepts tels que les instantanés et le filtre réseau. J'espère que cet article s'avérera être un bon point de départ pour vous.

Meilleurs émulateurs de console de jeu pour Linux
Cet article répertorie les logiciels d'émulation de console de jeu populaires disponibles pour Linux. L'émulation est une couche de compatibilité logi...
Meilleures distributions Linux pour les jeux en 2021
Le système d'exploitation Linux a parcouru un long chemin depuis son apparence originale, simple et basée sur le serveur. Ce système d'exploitation s'...
Comment capturer et diffuser votre session de jeu sur Linux
Dans le passé, jouer à des jeux n'était considéré qu'un passe-temps, mais avec le temps, l'industrie du jeu a connu une croissance énorme en termes de...