Files
varlog/_cache/articles/01521905-2d02-4b7d-8aff-7029cb10bfcb.json
T
2026-05-15 10:37:48 +02:00

1 line
7.0 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"uuid":"01521905-2d02-4b7d-8aff-7029cb10bfcb","slug":"virsh","title":"virsh","author":"cedric@abonnel.fr","published":true,"published_at":"2023-04-01 07:51:05","created_at":"2023-04-01 07:51:05","updated_at":"2023-04-01 07:51:05","revisions":[],"cover":"","files_meta":[],"external_links":[],"seo_title":"","seo_description":"","og_image":"","category":"Informatique","content":"# virsh\n\n![](dummy.png)\n\nLa 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. \n\n## Installation\nLa 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 :\n\n```\nsudo apt install libvirt-clients\n```\n\nSur les distributions Linux basées sur Fedora, vous pouvez l'installer en utilisant la commande suivante :\n\n```\nsudo dnf install libvirt-client\n```\n\nUne fois le paquet **libvirt-client** installé, vous pouvez utiliser la commande **virsh** pour gérer les machines virtuelles et les réseaux.\n\n## Description\n**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.\n\nVoici quelques exemples de commandes **virsh** courantes pour la gestion des machines virtuelles :\n\n- `virsh list` : affiche la liste des machines virtuelles en cours d'exécution sur l'hôte.\n- `virsh start <nom-vm>` : démarre la machine virtuelle spécifiée.\n- `virsh shutdown <nom-vm>` : arrête proprement la machine virtuelle spécifiée.\n- `virsh destroy <nom-vm>` : arrête la machine virtuelle spécifiée de manière forcée.\n- `virsh create <chemin-vers-fichier-XML>` : crée une nouvelle machine virtuelle en utilisant un fichier XML décrivant sa configuration.\n\n**virsh** peut également être utilisé pour gérer les réseaux, notamment pour créer et supprimer des bridges réseau.\n\n## Exemples d'utilisation\n### Vérification / Création de virbr0\nPour vérifier si le bridge réseau **virbr0** existe sur votre système, vous pouvez exécuter la commande suivante dans un terminal :\n\n```\nsudo virsh net-list --all\n```\n\nCela 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.\n\nSi le bridge réseau **virbr0** n'existe pas, vous pouvez le créer en utilisant la commande suivante :\n\n```\nsudo virsh net-create /usr/share/libvirt/networks/default.xml\n```\n\nCela 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.\n\nUne fois que le bridge réseau **virbr0** a été créé, vous pouvez utiliser l'option `--network bridge=virbr0` avec pour spécifier que la machine virtuelle doit utiliser ce bridge réseau.\n\n### Fichier /usr/share/libvirt/networks/default.xml\nVoici à 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 :\n\n```XML\n<network>\n <name>default</name>\n <uuid>...</uuid>\n <forward mode='nat'/>\n <bridge name='virbr0' stp='on' delay='0'/>\n <mac address='...'/>\n <ip address='192.168.122.1' netmask='255.255.255.0'>\n <dhcp>\n <range start='192.168.122.2' end='192.168.122.254'/>\n </dhcp>\n </ip>\n</network>\n```\n\nCe 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.\n\nLe 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**.\n\n--\n\nSi 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).\n\nLa 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.\n\nSi 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 :\n\n```\nsudo ip link add virbr0 type bridge\n```\n\nUn 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.\n\nLorsque 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.\n\nVérifier :\n\n```\n sudo ip link show type bridge\n6: virbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000\n link/ether 0e:fd:02:17:39:65 brd ff:ff:ff:ff:ff:ff\n```\n\nAjouter l'interface réseau **enp2s0f0u9** en tant que membre du pont réseau **virbr0** :\n\n```\nsudo ip link set enp2s0f0u9 master virbr0\n```\n\nCela 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.\n\nActiver l'interface réseau **virbr0** :\n\n```\nsudo ip link set virbr0 up\n```\n\nPar conséquent, le fichier XML de définition de réseau **perso** peut ressembler à ceci sans la section <ip> :\n\n```XML\n<network>\n <name>perso</name>\n <forward mode='bridge'/>\n <bridge name='virbr0'/>\n</network>\n```\n\nDans 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.\n\nVous pouvez lancer la création du réseau :\n\n```\nsudo virsh net-create /usr/share/libvirt/networks/perso.xml\n```\n\nLe résultat attendu est :\n```\nRéseau perso créé depuis /usr/share/libvirt/networks/perso.xml\n```","featured":false,"tags":[]}