GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwalten Sie virtuelle KVM-Maschinen mit dem Virsh-Programm

Virsh , kurz für Vir tual Sch ell, ist eine Befehlszeilen-Benutzeroberfläche zum Verwalten virtueller Gastmaschinen. Mit Virsh können Sie VMs erstellen, auflisten, bearbeiten, starten, neu starten, stoppen, aussetzen, fortsetzen, herunterfahren und löschen. Es unterstützt derzeit KVM, LXC, Xen, QEMU, OpenVZ, VirtualBox und VMware ESX. In diesem Leitfaden besprechen wir die Verwaltung von KVM Virtuelle Maschinen mit Virsh-Verwaltungsbenutzeroberfläche unter Linux.

Stellen Sie sicher, dass Sie KVM und das Virsh-Dienstprogramm auf Ihrem Linux-Computer installiert haben. Die folgenden Anleitungen erläutern die Installation von KVM auf DEB- und RPM-basierten Systemen.

  • KVM in Ubuntu 20.04 Headless Server installieren und konfigurieren
  • KVM in CentOS 8 Server installieren und konfigurieren
  • KVM in OpenSUSE Tumbleweed installieren und konfigurieren

1. Verwalten Sie virtuelle KVM-Maschinen mit dem Virsh-Befehl

Wenn Sie neu bei Virsh und KVM sind, ist es besser, mit dem Lesen der Hilfeanleitung zu beginnen. Es wird eine grundlegende Vorstellung davon geben, wie man Virsh benutzt.

1.1. Hilfe bekommen

Geben Sie den folgenden Befehl ein, um die Liste der verfügbaren Befehle zusammen mit einer kurzen Beschreibung anzuzeigen:

$ virsh help

Sie sehen eine umfangreiche Liste verfügbarer virsh-Befehle zum Verwalten virtueller KVM-Maschinen über die Befehlszeile.

Sie müssen sich nicht alles merken. Lesen Sie einfach die Beschreibung eines Befehls, den Sie ausführen möchten, und verwenden Sie ihn.

Die Befehle sind in die folgenden Abschnitte gruppiert:

  • Domainverwaltung,
  • Domänenüberwachung,
  • Host und Hypervisor,
  • Kontrollpunkt,
  • Schnittstelle,
  • Netzwerkfilter,
  • Vernetzung,
  • Knotengerät,
  • Geheim,
  • Schnappschuss,
  • Sicherung,
  • Speicherpool,
  • Speichervolumen,
  • Virsh selbst.

Jeder Abschnitt enthält die Befehle für bestimmte Aufgaben. Sie können den Hilfebereich einer Gruppe anzeigen, zum Beispiel Networking , wie unten:

$ virsh help Networking

Sie werden Befehle sehen, die sich auf Netzwerkaufgaben beziehen:

 Networking (help keyword 'network'):
    net-autostart                  autostart a network
    net-create                     create a network from an XML file
    net-define                     define an inactive persistent virtual network or modify an existing persistent one from an XML file
    net-destroy                    destroy (stop) a network
    net-dhcp-leases                print lease info for a given network
    net-dumpxml                    network information in XML
    net-edit                       edit XML configuration for a network
    net-event                      Network Events
    net-info                       network information
    net-list                       list networks
    net-name                       convert a network UUID to network name
    net-start                      start a (previously defined) inactive network
    net-undefine                   undefine a persistent network
    net-update                     update parts of an existing network's configuration
    net-uuid                       convert a network name to network UUID
    net-port-list                  list network ports
    net-port-create                create a network port from an XML file
    net-port-dumpxml               network port information in XML
    net-port-delete                delete the specified network port

Sie können auch den Hilfeabschnitt eines bestimmten Befehls anzeigen. Zum Beispiel werde ich den Hilfeabschnitt von "net-name" anzeigen Befehl:

$ virsh help net-name
  NAME
    net-name - convert a network UUID to network name

  SYNOPSIS
    net-name <network>

  OPTIONS
    [--network] <string>  network uuid

1.2. Virtuelle Maschinen auflisten

Führen Sie den folgenden Befehl aus, um eine Liste der virtuellen Gastmaschinen im Run- oder Suspend-Modus anzuzeigen:

$ virsh list
Id Name State
--------------------

Wie Sie sehen, befinden sich keine Gäste im Run- oder Suspend-Modus.

Sie können --inactive verwenden Option zum Auflisten inaktiver Gäste.

Führen Sie zum Anzeigen aller Gastcomputer Folgendes aus:

$ virsh list --all
 Id   Name            State
--------------------------------
 -    centos8-uefi    shut off
 -    nginx_centos8   shut off

Wie Sie in der obigen Ausgabe sehen, habe ich zwei virtuelle Maschinen, nämlich „centos8-uefi“ und „nginx_centos8“. Beide sind ausgeschaltet.

1.3. Virtuelle Maschinen starten

Um eine virtuelle Maschine zu starten, zum Beispiel "centos8-uefi", führen Sie Folgendes aus:

$ virsh start centos8-uefi

Sie sehen eine Ausgabe wie unten:

Domain centos8-uefi started

Um zu überprüfen, ob die VM ausgeführt wird, verwenden Sie "list" Befehl:

$ virsh list
 Id   Name           State
------------------------------
 1    centos8-uefi   running

1.4. Virtuelle Maschinen speichern

Um den aktuellen Status einer laufenden VM zu speichern, führen Sie Folgendes aus:

$ virsh save centos8-uefi centos8-save

Domain centos8-uefi saved to centos8-save

Dieser Befehl stoppt den Gast namens „centos8-uefi“ und speichert die Daten in einer Datei namens „centos8-save“. Dies wird einige Augenblicke dauern, je nachdem, wie viel Arbeitsspeicher von Ihrem Gastcomputer verwendet wird.

1.5. Virtuelle Maschinen wiederherstellen

Um den zuvor gespeicherten Zustand einer VM wiederherzustellen, geben Sie einfach den Dateinamen wie folgt an:

$ virsh restore centos8-save 
Domain restored from centos8-save

Überprüfen Sie mit dem Befehl „list“, ob die VM wiederhergestellt wurde:

$ virsh list
 Id   Name           State
------------------------------
 4    centos8-uefi   running

1.6. Starten Sie virtuelle Maschinen neu

Um eine laufende VM neu zu starten, führen Sie Folgendes aus:

$ virsh reboot centos8-uefi
Domain centos8-uefi is being rebooted

1.7. Virtuelle Maschinen anhalten/pausieren

Gehen Sie wie folgt vor, um eine laufende VM anzuhalten:

$ virsh suspend centos8-uefi 
Domain centos8-uefi suspended

Bestätigen Sie es mit dem "list"-Befehl:

$ virsh list
 Id   Name           State
-----------------------------
 1    centos8-uefi   paused

1.8. Virtuelle Maschinen fortsetzen

Um die angehaltene VM fortzusetzen, führen Sie Folgendes aus:

$ virsh resume centos8-uefi 
Domain centos8-uefi resumed

1.9. Stoppen Sie aktive virtuelle Maschinen

Führen Sie Folgendes aus, um eine aktive VM zwangsweise anzuhalten und im inaktiven Zustand zu belassen:

$ virsh destroy centos8-uefi
Domain centos8-uefi destroyed

Sie können die VM auch ordnungsgemäß beenden, anstatt sie wie folgt zu erzwingen:

$ virsh destroy centos8-uefi --graceful
Domain centos8-uefi destroyed

1.10. Virtuelle Maschinen herunterfahren

Gehen Sie wie folgt vor, um eine laufende VM auszuschalten:

$ virsh shutdown centos8-uefi
Domain centos8-uefi is being shutdown

1.11. Rufen Sie den XML-Dump der virtuellen Maschinen ab

Um die XML-Konfigurationsdatei einer VM in der Standardausgabe anzuzeigen, führen Sie Folgendes aus:

$ virsh dumpxml centos8-uefi

Dieser Befehl zeigt die vollständigen Konfigurationsdetails (Software und Hardware) der virtuellen Maschine an:

Sie können den XML-Dump auch in eine Datei exportieren, anstatt ihn nur in der Standardausgabe wie unten anzuzeigen:

$ virsh dumpxml centos8-uefi > centos8.xml

Dieser Befehl erstellt die XML-Datei „centos8-uefi“ in einer Datei namens „centos8.xml“ und speichert sie im aktuellen Arbeitsverzeichnis.

1.12. Virtuelle Maschinen mit XML-Dump erstellen

Sie können eine neue virtuelle Gastmaschine erstellen, indem Sie das vorhandene XML von zuvor erstellten Gästen verwenden. Erstellen Sie zuerst einen XML-Dump wie oben gezeigt und erstellen Sie dann eine neue VM mit der XML-Datei wie unten:

$ virsh create centos8.xml 
Domain centos8-uefi created from centos8.xml

Dieser Befehl erstellt eine neue VM und startet sie sofort. Sie können es mit folgendem Befehl überprüfen:

1.13. XML-Konfigurationsdatei für virtuelle Maschinen bearbeiten

Wenn Sie Änderungen an einem Gastcomputer vornehmen möchten, können Sie einfach seine Konfigurationsdatei bearbeiten und die Änderungen nach Belieben vornehmen. Die Gäste können entweder während der Ausführung oder offline bearbeitet werden.

$ virsh edit centos8-uefi

Dieser Befehl öffnet die Datei in Ihrem Standardeditor, den Sie mit der Variablen $EDITOR festgelegt haben.

1.14. Konsolenzugriff für virtuelle Maschinen aktivieren

Nachdem Sie KVM-Gastmaschinen erstellt haben, können Sie über SSH, VNC-Client, Virt-Viewer, Virt-Manager und Cockpit-Webkonsole usw. darauf zugreifen. Sie können jedoch nicht mit dem Befehl „virsh console“ darauf zugreifen. Der Befehl console wird verwendet, um die virtuelle serielle Konsole für den Gast zu verbinden. Um mit dem Befehl „virsh console“ auf KVM-Gäste zuzugreifen, müssen Sie den Zugriff auf die serielle Konsole auf dem Gastcomputer aktivieren. Lesen Sie die folgende Anleitung, um den Zugriff auf die virsh-Konsole zu aktivieren:

  • So aktivieren Sie den Zugriff auf die Virsh-Konsole für KVM-Gäste

1.15. Virtuelle Maschinen umbenennen

Wenn Sie jemals eine virtuelle Maschine umbenennen wollten, lesen Sie die folgende Anleitung.

  • So benennen Sie eine virtuelle KVM-Gastmaschine um

1.16. Domänen-ID der virtuellen Maschinen anzeigen

Um die Domänen-ID einer laufenden virtuellen Gastmaschine zu finden, führen Sie Folgendes aus:

$ virsh domid centos8-uefi
2

Bitte beachten Sie, dass der Gast ausgeführt werden sollte, um seine Domänen-ID abzurufen.

1.17. Domänennamen der virtuellen Maschinen anzeigen

Um den Domänennamen einer laufenden VM abzurufen, führen Sie Folgendes aus:

$ virsh domname <domain-id or domain-uuid>

Beispiel:

$ virsh domname 2
centos8-uefi

Hier, 2 ist die Domain-ID.

1.18. UUID von virtuellen Maschinen anzeigen

Um die UUID des Gastcomputers zu finden, führen Sie Folgendes aus:

$ virsh domuuid <domain-name or domain-id>

Beispiel:

$ virsh domuuid centos8-uefi

Oder,

$  virsh domuuid 2

Beispielausgabe:

de4100c4-632e-4c09-8dcf-bbde29170268

1.19. Details zu virtuellen Maschinen anzeigen

Um die Informationen eines Gastcomputers anzuzeigen, verwenden Sie den Domänennamen, die Domänen-ID oder die Domänen-UUID wie unten:

$ virsh dominfo centos8-uefi

Oder,

$ virsh dominfo 2

Oder,

$ virsh dominfo de4100c4-632e-4c09-8dcf-bbde29170268

Beispielausgabe:

Id:             -
Name:           centos8-uefi
UUID:           de4100c4-632e-4c09-8dcf-bbde29170268
OS Type:        hvm
State:          shut off
CPU(s):         2
Max memory:     2097152 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: apparmor
Security DOI:   0

1.20. KVM-Hostinformationen anzeigen

Führen Sie Folgendes aus, um die Informationen Ihres Hostsystems abzurufen:

$ virsh nodeinfo

Beispielausgabe:

CPU model:           x86_64
CPU(s):              4
CPU frequency:       1167 MHz
CPU socket(s):       1
Core(s) per socket:  2
Thread(s) per core:  2
NUMA cell(s):        1
Memory size:         8058840 KiB

1.21. Informationen zur virtuellen CPU anzeigen

Um die Informationen zur virtuellen CPU anzuzeigen, führen Sie Folgendes aus:

$ virsh vcpuinfo <domain-id or domain-name or domain-uuid>

Beispiel:

$ virsh vcpuinfo centos8-uefi
VCPU: 0
CPU: 3
State: running
CPU time: 5.6s
CPU Affinity: yyyy

VCPU: 1
CPU: 1
State: running
CPU time: 0.0s
CPU Affinity: yyyy

1.22. Finden Sie die IP-Adresse der virtuellen Maschinen

Die IP-Adresse einer virtuellen Maschine zu finden, ist keine große Sache. Wenn Sie Konsolenzugriff auf die virtuelle Maschine haben, können Sie ihre IP-Adresse einfach mit dem Befehl „ip“ finden. Es ist jedoch auch möglich, die IP-Adresse einer KVM-VM zu identifizieren, ohne auf ihre Konsole zugreifen zu müssen. Die folgende Anleitung erläutert, wie Sie die IP-Adresse einer virtuellen KVM-Maschine finden.

  • So finden Sie die IP-Adresse einer virtuellen KVM-Maschine

1.23. Virtuelle Maschinen löschen

Wenn Sie eine VM nicht mehr benötigen, löschen Sie sie einfach wie folgt:

$ virsh destroy centos8-uefi
$ virsh undefine centos8-uefi

Der erste Befehl stoppt die VM zwangsweise, wenn sie bereits ausgeführt wird. Und der zweite Befehl wird die Definition aufheben und vollständig löschen.

Sie können auch die folgenden Optionen verwenden, um die Speichervolumes und Snapshots zu löschen.

--managed-save remove domain managed state file
--storage remove associated storage volumes (comma separated list of targets or source paths) (see domblklist)
--remove-all-storage remove all associated storage volumes (use with caution)
--delete-storage-volume-snapshots delete snapshots associated with volume(s)
--wipe-storage wipe data on the removed volumes
--snapshots-metadata remove all domain snapshot metadata (vm must be inactive)

2. Virtuelle Netzwerke verwalten

Ich hoffe, Sie haben gelernt, wie Sie virtuelle KVM-Maschinen mit dem Befehl Virsh unter Linux verwalten. Dieser Abschnitt listet die wichtigen Befehle zum Verwalten virtueller KVM-Netzwerke unter Linux mit dem Befehlszeilendienstprogramm virsh auf.

2.1. Virtuelle Netzwerke auflisten

Um die verfügbaren virtuellen Netzwerke aufzulisten, führen Sie Folgendes aus:

$ virsh net-list 
 Name      State    Autostart   Persistent
--------------------------------------------
 default   active   yes         yes

Wie Sie sehen können, habe ich nur ein virtuelles Netzwerk, das das Standardnetzwerk ist.

2.2. Details des virtuellen Netzwerks anzeigen

Um die Details eines virtuellen Netzwerks anzuzeigen, führen Sie Folgendes aus:

$ virsh net-dumpxml default

Ersetzen Sie im obigen Befehl „default“ durch Ihren Netzwerknamen.

Beispielausgabe:

<network connections='1'>
  <name>default</name>
  <uuid>ce25d978-e455-47a6-b545-51d01bcb9e6f</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:ee:35:49'/>
  <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>

2.3. Virtuelle Netzwerke starten

Um ein inaktives Netzwerk zu starten, führen Sie Folgendes aus:

$ virsh net-start <Name-Of-Inactive-Network>

So starten Sie ein Netzwerk automatisch:

$ virsh net-autostart <network-name>

2.4. XML-Dump für virtuelle Netzwerke erstellen

Führen Sie zum Erstellen der XML-Konfigurationsdatei eines vorhandenen virtuellen Netzwerks Folgendes aus:

$ virsh net-dumpxml default > default.xml

Der obige Befehl erstellt eine XML-Konfiguration des „Standard“-Netzwerks und speichert sie in einer Datei namens „default.xml“ im aktuellen Verzeichnis.

Sie können die XML-Datei mit dem cat-Befehl anzeigen:

$ cat default.xml 
<network connections='1'>
  <name>default</name>
  <uuid>ce25d978-e455-47a6-b545-51d01bcb9e6f</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:ee:35:49'/>
  <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>

2.5. Erstellen Sie neue virtuelle Netzwerke aus einer XML-Datei

Um ein neues virtuelles Netzwerk mit einer vorhandenen XML-Datei zu erstellen und es sofort zu starten, führen Sie Folgendes aus:

$ virsh net-create <Name-of-XMLfile>

Wenn Sie ein Netzwerk aus einer XML-Datei erstellen möchten, es aber nicht automatisch starten möchten, führen Sie Folgendes aus:

$ virsh net-define <Name-of-XMLfile>

2.6. Virtuelle Netzwerke deaktivieren

Um ein aktives Netzwerk zu deaktivieren, führen Sie Folgendes aus:

$ virsh net-destroy <network-name>

2.7. Virtuelle Netzwerke löschen

Um ein virtuelles Netzwerk zu löschen, deaktivieren Sie es zunächst wie oben gezeigt und führen Sie dann Folgendes aus:

$ virsh net-undefine <Name-Of-Inactive-Network>

Virsh hat viele Befehle und Optionen. Das gründliche Erlernen der Verwendung des Virsh-Befehlszeilentools reicht gerade aus, um eine vollständige virtuelle Umgebung unter Linux einzurichten. Sie benötigen keine GUI-Anwendungen.

Weitere Einzelheiten finden Sie auf den Virsh-Manpages.

$ man virsh

3. KVM-Gäste grafisch verwalten

Es ist fast unmöglich und auch unnötig, sich alle virsh-Befehle zu merken. Wenn Sie Schwierigkeiten haben, alle KVM-Verwaltungsaufgaben über die Befehlszeile auszuführen, können Sie grafische KVM-Verwaltungstools wie Virt-Manager und Cockpit ausprobieren.

  • Verwalten Sie virtuelle KVM-Maschinen mit der Cockpit-Webkonsole
  • So verwalten Sie virtuelle KVM-Maschinen mit Virt-Manager

Schlussfolgerung

Wenn Sie wissen, wie man virtuelle KVM-Maschinen mit der Virsh-Verwaltungsbenutzeroberfläche unter Linux verwaltet, haben Sie die Hälfte des Weges zur Verwaltung einer Virtualisierungsumgebung der Enterprise-Klasse geschafft. Das Einrichten von KVM und das Verwalten virtueller KVM-Maschinen mit dem Befehl virsh ist für alle Linux-Administratoren sehr wichtig.

Vorgestelltes Bild von Elias Sch. von Pixabay.


Linux
  1. So erstellen Sie einen Snapshot einer virtuellen KVM-Maschine mit dem Virsh-Befehl

  2. Verwalten Sie KVM (QEMU) mit Kimchi (Webinterface)

  3. Wöchentliche virtuelle Maschinen mit Build-Skripts

  4. So benennen Sie eine KVM-VM mit virsh um

  5. Wie verwaltet man das Unternehmensnetzwerk von Linux-Rechnern?

So benennen Sie die virtuelle KVM-Gastmaschine um

So exportieren und importieren Sie virtuelle KVM-Maschinen unter Linux

So installieren Sie KVM und verwalten virtuelle Maschinen in Ubuntu 20.04

So verwalten Sie virtuelle Maschinen in KVM mit Virt-Manager

Verwalten von virtuellen KVM-Maschinen mit der Cockpit-Webkonsole unter Linux

So erstellen und verwalten Sie virtuelle Maschinen in KVM