Outils pour utilisateurs

Outils du site


article:gestion_a_distance_d_un_vm_qemu

Gestion des VM KVM/Libvirt à distance avec Virsh

Ce guide regroupe les commandes essentielles pour administrer nos machines virtuelles en ligne de commande (CLI) via SSH, en remplacement de virt-manager.

1. Installation de l'environnement (Serveur Headless)

Si le serveur Debian hôte est installé sans environnement de bureau (sans KDE/Gnome), voici les paquets requis pour faire fonctionner le moteur de virtualisation et les outils CLI :

sudo apt update
sudo apt install qemu-system-x86 libvirt-daemon-system libvirt-clients virtinst

* libvirt-clients : Fournit la commande virsh. * virtinst : Fournit la commande virt-install (création) et virt-clone (clonage).

2. Informations et Statut

Lister les machines virtuelles

Pour afficher toutes les VM (y compris celles qui sont éteintes), l'option –all est indispensable.

sudo virsh list --all

Obtenir les détails d'une VM

Affiche les informations générales (Statut, CPU, Mémoire allouée).

sudo virsh dominfo <nom_de_la_vm>

Connaître l'adresse IP d'une VM

Permet de trouver l'IP attribuée par le serveur DHCP interne de libvirt ou détectée sur l'hôte.

sudo virsh domifaddr <nom_de_la_vm>

3. Gestion de l'alimentation

Démarrer une VM

sudo virsh start <nom_de_la_vm>

Éteindre proprement une VM

Envoie un signal ACPI à l'OS invité pour un arrêt propre (comme un clic sur “Éteindre”).

sudo virsh shutdown <nom_de_la_vm>

Forcer l'arrêt (Urgence)

Équivalent à débrancher la prise électrique. À n'utiliser que si la VM est totalement plantée.

sudo virsh destroy <nom_de_la_vm>

Activer le démarrage automatique

Pour que la VM s'allume toute seule au boot du serveur Debian hôte.

sudo virsh autostart <nom_de_la_vm>

Pour désactiver : ajouter l'option –disable à la fin de la commande.

4. Gestion de la Configuration (XML)

Afficher la configuration XML complète

sudo virsh dumpxml <nom_de_la_vm>

Sauvegarder la configuration dans un fichier

Utile pour faire une sauvegarde textuelle avant modification.

sudo virsh dumpxml <nom_de_la_vm> > backup_<nom_de_la_vm>.xml

Modifier la configuration à la volée

Ouvre la configuration de la VM dans l'éditeur de texte par défaut du système (souvent Nano ou Vim). La VM doit être redémarrée pour appliquer les changements.

sudo virsh edit <nom_de_la_vm>

5. Ressources Matérielles (Évolution)

Type Commande Note
RAM sudo virsh setmaxmem <nom> 4194304 –config
sudo virsh setmem <nom> 4194304 –config
VM éteinte obligatoirement (Exprimé en Kibibytes, ici 4 Go)
CPU sudo virsh setvcpus <nom> 4 –maximum –config
sudo virsh setvcpus <nom> 4 –config
VM éteinte obligatoirement

Agrandir un Disque Dur

1. Trouver le chemin du fichier de disque :

sudo virsh domblklist <nom_de_la_vm>

2. Éteindre la VM, puis ajouter l'espace (ex: +20 Go) sur l'hôte :

sudo qemu-img resize /chemin/vers/image.qcow2 +20G

3. Rallumer la VM et étendre la partition à l'intérieur du système invité.

6. Réseau et Stockage

Lister les disques attachés à une VM

sudo virsh domblklist <nom_de_la_vm> --details

Lister les interfaces réseau d'une VM

sudo virsh domiflist <nom_de_la_vm>

7. Création et Duplication de VM

Créer une VM depuis un ISO (virt-install)

Cette commande instancie la VM, crée son disque dur au format QCOW2 et boot sur l'ISO.

sudo virt-install \
  --name "ma-nouvelle-vm" \
  --memory 2048 \
  --vcpus 2 \
  --os-variant debian12 \
  --disk size=20,format=qcow2,pool=default \
  --network network=default \
  --cdrom /var/lib/libvirt/images/debian-12-installer.iso \
  --graphics vnc,listen=0.0.0.0 \
  --noautoconsole

Note pour le réseau : Remplacer network=default par network=routeur_nat si vous souhaitez la lier à votre routeur virtuel.

Dupliquer / Cloner une VM (virt-clone)

Permet de créer une copie conforme d'une VM existante (comme un modèle) vers une nouvelle instance, en générant de nouvelles adresses MAC et de nouveaux disques pour éviter les conflits. La VM source doit être éteinte.

sudo virt-clone --original ynh_modèle --name nouvelle-instance.fr --auto-copy

8. Instantanés (Snapshots)

Les snapshots nécessitent que les disques des VM soient au format QCOW2. Idéal avant une mise à jour critique de YunoHost.

Créer un instantané

sudo virsh snapshot-create-as <nom_de_la_vm> nom-du-snapshot "Ma description ici"

Astuce : Ajoutez l'option –live si la VM est allumée et que vous voulez aussi figer l'état exact de la RAM.

Lister les instantanés d'une VM

sudo virsh snapshot-list <nom_de_la_vm>

Restaurer un instantané (Retour en arrière)

Il est recommandé d'éteindre la VM avant la restauration.

sudo virsh snapshot-revert <nom_de_la_vm> nom-du-snapshot

Supprimer un instantané

À faire une fois la mise à jour validée pour libérer de l'espace disque et conserver de bonnes performances.

sudo virsh snapshot-delete <nom_de_la_vm> nom-du-snapshot

9. Accès graphique à distance (Tunnel SSH + VNC)

Le port VNC de l'hôte n'étant pas accessible directement depuis l'extérieur pour des raisons de sécurité, il faut faire passer le flux graphique à l'intérieur d'un tunnel SSH chiffré.

Étape 1 : Identifier le port VNC utilisé

Sur le serveur distant, vérifiez le numéro d'affichage ou le port de la VM en cours d'exécution :

sudo virsh vncdisplay ma-nouvelle-vm

* Si le résultat est :0, le port réel est 5900. * Si le résultat est :1, le port réel est 5901, etc.

Étape 2 : Créer le tunnel depuis votre machine locale

Ouvrez un nouveau terminal sur votre PC local (pas sur le serveur distant) et exécutez la commande suivante :

ssh -L 5900:127.0.0.1:5900 utilisateur@adresse_ip_du_serveur

Note : Si à l'étape 1 la VM affichait “:1”, remplacez le port de destination par 5901 (ex: 5900:127.0.0.1:5901).

Laissez ce terminal ouvert, c'est lui qui maintient le pont sécurisé.

Étape 3 : Se connecter avec un visionneur VNC

1. Ouvrez votre logiciel VNC local (Remmina, TigerVNC, Vinagre, etc.). 2. Dans le champ d'adresse, connectez-vous sur : 127.0.0.1:5900 3. L'écran graphique de l'installateur ou du bureau Debian de la VM distante s'affiche.

article/gestion_a_distance_d_un_vm_qemu.txt · Dernière modification : de bernard.rolland