GNU/Linux >> Tutoriels Linux >  >> Linux

8 sous-commandes Linux virsh pour la gestion des machines virtuelles sur la ligne de commande

Le shell virtuel, ou virsh, est un utilitaire de ligne de commande flexible pour la gestion des machines virtuelles (VM) contrôlées par libvirt, qui est une boîte à outils et une API pour gérer les plates-formes de virtualisation. Il s'agit de l'outil de gestion par défaut pour les machines virtuelles basées sur le noyau Linux (KVM), et il prend également en charge Xen, VMware et d'autres plates-formes.

Le virsh La commande vous permet de gérer les machines virtuelles de manière interactive ou par lots. Il est également utile pour contrôler les VM à partir du shell Linux et s'intègre aux scripts ou aux outils d'automatisation. En utilisant virsh , vous pouvez vous connecter rapidement à un serveur à l'aide d'un shell sécurisé (SSH) et effectuer des opérations sur vos VM sans avoir accès à une interface graphique.

Lorsque vous exécutez virsh sans aucune option, il essaie de se connecter à un hyperviseur local. Pour Linux, la connexion par défaut pointe vers un système QEMU local pour gérer les machines KVM locales. Vous pouvez également vous connecter à un hyperviseur distant en utilisant l'option -c ou --connect et en spécifiant l'URI (Uniform Resource Identifier) ​​de l'hyperviseur distant à l'aide de la syntaxe de libvirt. Pour plus d'informations, consultez la spécification URI de libvirt.

Par défaut, virsh fournit des centaines de sous-commandes et d'options qui vous permettent de gérer chaque aspect de votre plate-forme de virtualisation ou de vos machines virtuelles. Dans cet article, je vais partager les huit virsh  sous-commandes que j'utilise le plus souvent. En raison de la nature du travail quotidien, la plupart de ces sous-commandes s'appliquent directement aux VM (ou domaines dans la terminologie libvirt) mais virsh dispose également de commandes pour gérer la plate-forme elle-même, telles que l'ajout de pools de stockage, de réseaux, etc.

liste virsh

virsh list est une commande de base qui répertorie tous les domaines en cours d'exécution (VM). Vous pouvez également lister toutes les VM configurées en ajoutant le --all option. Ceci est utile si vous souhaitez voir toutes les machines virtuelles configurées dans l'hyperviseur cible que vous pouvez utiliser sur les commandes suivantes. Par exemple, pour répertorier toutes les machines virtuelles disponibles sur un hyperviseur KVM Linux local :

# virsh list --all
 Id   Name          State
------------------------------
 3    rh8-vm01      running
 -    crc           shut off
 -    rh8-tower01   shut off

Vous pouvez utiliser l'ID ou le nom de domaine comme entrée pour les commandes suivantes.

virsh démarrer/redémarrer/arrêter

Bien qu'ils soient différents, j'ai regroupé les start , reboot , et shutdown sous-commandes, car elles effectuent la même opération de base de gestion de l'état d'alimentation de la machine virtuelle.

Pour arrêter la VM rh8-vm01 (de la list commande ci-dessus) :

# virsh shutdown rh8-vm01 
Domain 'rh8-vm01' is being shutdown

# virsh list
 Id   Name   State
--------------------

Vous pouvez le redémarrer en utilisant le start sous-commande :

# virsh start rh8-vm01 
Domain 'rh8-vm01' started

# virsh list
 Id   Name       State
--------------------------
 4    rh8-vm01   running

En utilisant ces sous-commandes, vous pouvez rapidement démarrer, redémarrer ou arrêter une machine virtuelle sans avoir à lancer une application graphique lourde.

[ Vous pourriez également être intéressé par la modification de sshd_config à l'aide d'un script Bash. ]

virsh dumpxml

Le dumpxml la sous-commande vide la configuration XML pour un domaine donné. Vous pouvez l'utiliser pour exporter la configuration vers un fichier afin d'apporter des modifications à une machine virtuelle existante ou l'utiliser comme modèle pour créer une autre machine virtuelle avec une configuration similaire. Par défaut, il vide la configuration vers STDOUT , donc redirigez-le vers un fichier en utilisant les opérateurs de redirection du shell > pour enregistrer dans un fichier :

# virsh dumpxml rh8-vm01                                                   
<domain type='kvm' id='4'>                                                                    
  <name>rh8-vm01</name>                                                                       
  <uuid>53b92c48-fce3-4464-95bf-6f442e988c94</uuid>
  <metadata>                                                                                  
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">     
      <libosinfo:os id="http://redhat.com/rhel/8.4"/>                                         
    </libosinfo:libosinfo>                                                                    
  </metadata>                                                                                 
  <memory unit='KiB'>4194304</memory>                                                         
  <currentMemory unit='KiB'>4194304</currentMemory>    
  <vcpu placement='static'>2</vcpu>

... TRUNCATED OUTPUT ...
</domain>

Vous pouvez utiliser la sortie XML dans des scripts et des outils d'automatisation pour automatiser la création de machines virtuelles.

virsh domifaddr

Le domifaddr La sous-commande répertorie toutes les adresses IP configurées pour toutes les interfaces virtuelles d'une machine virtuelle donnée. C'est utile si la VM utilise des adresses IP dynamiques, car cela vous permet de voir l'adresse IP attribuée et de vous connecter à la VM :

# virsh domifaddr rh8-vm01 
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet6      52:54:00:c8:17:6e    ipv4         192.168.122.19/24
 vnet7      52:54:00:04:4d:ac    ipv4         192.168.64.210/24

Par défaut, il répertorie l'adresse IP louée par un serveur DHCP. Si l'hyperviseur ne fournit pas ces informations, vous pouvez également utiliser l'option --source agent pour interroger le système d'exploitation (OS) invité directement via l'agent de virtualisation. Cela nécessite un agent de virtualisation installé dans le système d'exploitation invité.

édition virsh

Le edit la sous-commande ouvre la configuration XML actuelle dans votre $EDITOR par défaut , vous permettant d'apporter des modifications en direct dans une VM :

# virsh edit rh8-vm01
<domain type='kvm'>
  <name>rh8-vm01</name>
  <uuid>53b92c48-fce3-4464-95bf-6f442e988c94</uuid>
  <metadata>

... TRUNCATED OUTPUT ...
</domain>

Après avoir effectué vos modifications, enregistrez le fichier pour les appliquer. Certaines modifications peuvent n'entrer en vigueur qu'après un redémarrage.

virsh net-edit

Le net-edit La sous-commande vous permet d'apporter des modifications en direct à une configuration de réseau virtuel. C'est utile pour modifier les options d'un réseau virtuel, comme associer une adresse MAC donnée à une adresse IP à l'aide de la norme libvirt Paramétrage DHCP. C'est une commande plus avancée que j'utilise régulièrement. Comme le edit sous-commande, elle ouvre le fichier de configuration dans votre $EDITOR par défaut pour faire des changements. Enregistrez le fichier pour appliquer les modifications :

# virsh net-edit --network hostonly
<network>
  <name>hostonly</name>
  <uuid>eddd03ff-5825-42ef-bc99-968bddf773c2</uuid>
  <bridge name='virbr1' stp='on' delay='0'/>
  <mac address='52:54:00:67:75:b1'/>
  <domain name='hostonly'/>
  <ip address='192.168.64.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.64.128' end='192.168.64.254'/>
    </dhcp>
  </ip>
</network>

Vous pouvez également utiliser d'autres sous-commandes liées au réseau commençant par net- pour gérer différents aspects des réseaux virtuels de l'hyperviseur.

[ Télécharger maintenant :un guide de l'administrateur système sur les scripts Bash. ]

Quelle est la prochaine ?

virsh est un utilitaire puissant et flexible qui vous permet de gérer tous les aspects de la virtualisation Linux et d'autres plates-formes. Pour plus d'informations à ce sujet, consultez les pages de manuel ou consultez sa documentation en ligne.


Linux
  1. Un guide du terminal Linux pour les débutants

  2. Générer des mots de passe sur la ligne de commande Linux

  3. 8 conseils pour la ligne de commande Linux

  4. Utilisation de la force sur la ligne de commande Linux

  5. Apprivoiser la commande tar :conseils pour gérer les sauvegardes sous Linux

Conseils pour utiliser la commande top sous Linux

3 gestionnaires de mots de passe pour la ligne de commande Linux

Maîtrisez la ligne de commande Linux

Comment rechercher des fichiers à partir de la ligne de commande Linux

Ripgrep - L'outil de recherche de ligne de commande le plus rapide pour Linux

Quatre navigateurs Web pour la ligne de commande Linux