informatique:linux:applications:virsh

virsh

La commande virsh est une interface en ligne de commande pour la gestion des machines virtuelles et des réseaux sur des hôtes utilisant libvirt, une bibliothèque open-source pour la virtualisation.

La commande virsh est fournie par le paquet libvirt-client. Sur les distributions Linux basées sur Debian, vous pouvez l'installer en utilisant la commande suivante :

sudo apt install libvirt-clients

Sur les distributions Linux basées sur Fedora, vous pouvez l'installer en utilisant la commande suivante :

sudo dnf install libvirt-client

Une fois le paquet libvirt-client installé, vous pouvez utiliser la commande virsh pour gérer les machines virtuelles et les réseaux.

virsh permet de gérer les machines virtuelles en utilisant des commandes pour créer, supprimer, démarrer, arrêter et afficher les informations sur les machines virtuelles.

Voici quelques exemples de commandes virsh courantes pour la gestion des machines virtuelles :

  • virsh list : affiche la liste des machines virtuelles en cours d'exécution sur l'hôte.
  • virsh start <nom-vm> : démarre la machine virtuelle spécifiée.
  • virsh shutdown <nom-vm> : arrête proprement la machine virtuelle spécifiée.
  • virsh destroy <nom-vm> : arrête la machine virtuelle spécifiée de manière forcée.
  • virsh create <chemin-vers-fichier-XML> : crée une nouvelle machine virtuelle en utilisant un fichier XML décrivant sa configuration.

virsh peut également être utilisé pour gérer les réseaux, notamment pour créer et supprimer des bridges réseau.

Pour vérifier si le bridge réseau virbr0 existe sur votre système, vous pouvez exécuter la commande suivante dans un terminal :

sudo virsh net-list --all

Cela affichera la liste de tous les réseaux gérés par libvirt, y compris le bridge réseau virbr0 s'il existe. Si le bridge réseau virbr0 n'apparaît pas dans la liste, cela signifie qu'il n'a pas été créé sur votre système.

Si le bridge réseau virbr0 n'existe pas, vous pouvez le créer en utilisant la commande suivante :

sudo virsh net-create /usr/share/libvirt/networks/default.xml

Cela créera le bridge réseau virbr0 avec les paramètres par défaut sur votre système. Vous pouvez également personnaliser les paramètres du bridge en modifiant le fichier XML avant de créer le réseau.

Une fois que le bridge réseau virbr0 a été créé, vous pouvez utiliser l'option –network bridge=virbr0 avec virt-install pour spécifier que la machine virtuelle doit utiliser ce bridge réseau.

Voici à quoi ressemble le fichier XML par défaut pour le réseau virbr0 sur la plupart des systèmes basés sur libvirt, tel que Fedora et Ubuntu :

<network>
  <name>default</name>
  <uuid>...</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='...'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

Ce fichier définit un réseau nommé default avec le bridge virbr0. Le mode forward est défini sur bridge, ce qui active le mode bridge pour le réseau virtuel. Le réseau utilise également le protocole DHCP pour attribuer des adresses IP aux machines virtuelles, avec une plage d'adresses allant de 192.168.122.2 à 192.168.122.254.

Le fichier XML peut être modifié pour personnaliser les paramètres du réseau, tels que l'adresse IP du réseau, la plage d'adresses DHCP et d'autres paramètres avancés. Toutefois, il est recommandé de créer un nouveau fichier XML pour définir un réseau personnalisé plutôt que de modifier le fichier default.xml, car les modifications apportées à ce fichier peuvent être écrasées lors de mises à jour ultérieures de libvirt.

Si vous utilisez un serveur DHCP externe pour vos machines virtuelles, vous n'avez pas besoin de spécifier une adresse IP statique dans le fichier XML de définition du réseau. L'adresse IP de l'hôte libvirt qui héberge les machines virtuelles sera attribuée automatiquement par le serveur DHCP externe. Il faut utiliser un pont réseau (bridge).

La création d'un pont réseau est généralement la première étape de la mise en place d'un environnement de virtualisation.

Si la carte réseau virbr0 n'existe pas, vous pouvez créer un nouveau pont réseau nommé virbr0 dans le système hôte :

sudo ip link add virbr0 type bridge

Un pont réseau est un composant qui relie plusieurs interfaces réseau ensemble pour créer un réseau logique unique. Dans ce cas, le pont virbr0 permettra aux machines virtuelles de se connecter au réseau de l'hôte et de communiquer avec d'autres machines sur le réseau.

Lorsque la commande est exécutée, un nouveau périphérique de type pont est créé avec le nom virbr0. Ce périphérique peut être configuré avec des adresses IP, des règles de filtrage de paquets, des paramètres de QoS, etc.

Vérifier :

❯ sudo ip link show type bridge
6: virbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 0e:fd:02:17:39:65 brd ff:ff:ff:ff:ff:ff

Ajouter l'interface réseau enp2s0f0u9 en tant que membre du pont réseau virbr0 :

sudo ip link set enp2s0f0u9 master virbr0

Cela signifie que tout le trafic réseau entrant ou sortant de enp2s0f0u9 sera redirigé vers le pont virbr0. Les machines virtuelles connectées au pont virbr0 peuvent alors communiquer avec enp2s0f0u9 et d'autres machines sur le réseau.

Activer l'interface réseau virbr0 :

sudo ip link set virbr0 up

Par conséquent, le fichier XML de définition de réseau perso peut ressembler à ceci sans la section <ip> :

<network>
  <name>perso</name>
  <forward mode='bridge'/>
  <bridge name='virbr0'/>
</network>

Dans cet exemple, la section <ip> est supprimée car elle n'est pas nécessaire si vous utilisez un serveur DHCP externe pour vos machines virtuelles. L'adresse IP de l'hôte libvirt sera attribuée automatiquement par le serveur DHCP externe.

Vous pouvez lancer la création du réseau :

sudo virsh net-create /usr/share/libvirt/networks/perso.xml

Le résultat attendu est :

Réseau perso créé depuis /usr/share/libvirt/networks/perso.xml
  • informatique/linux/applications/virsh.txt
  • Dernière modification : 2023/04/01 09:51
  • de Cédric ABONNEL