Virtualisierung mit kvm & virsh


© September 2020, Letzte Änd. 09.04.21

Themen

Während auf meinen alten PCs Windows immer unter VirtualBox läuft
(wg. USB Unterstützung, shared Folder, etc.),
habe ich mich nun entschieden bei DEB 10 auf die open Source Software
linux-kvm.org – Kernel-based Virtual Machine umzusteigen.
Anbei noch eine linux-kvm.org   FAQ - frequently asked questions - Liste.

Installation von kvm

Bei gleicher CPU (z.B. keinen ARM-Prozessor simulieren) reicht es qemu-kvm zu installieren und den eigenen Benutzer (hier a1) der Gruppe kvm hinzu zufügen.

su
apt install qemu-kvm                             Minimal-Installation

apt install qemu                                 Emulator für andere CPUs                                  

whereis adduser                                  DEB 10 kennt den Befehl nicht mehr direkt
adduser: /usr/sbin/adduser...

/usr/sbin/adduser a1 kvm                         a1 der Gruppe kvm hinzufügen
Adding user `a1' to group `kvm' ...
Adding user a1 to group kvm
Done.

id a1                                            Überprüfung
uid=1001(a1) gid=1001(a) groups=1001(a),106(kvm)

kvm in der Minimalkonfiguration

Bereits jetzt in der Minimal-Konfiguration kann man kvm via Command line interface - CLI nutzen.
Diese Möglichkeit möchte ich aber wegen des geringen Komforts nicht nutzen.

Siehe z.B.
ubuntuusers.de   KVM & VM Installation (Management-Tools als weiterführende Verknüpfung)
funtoo.org   with KVM/QEMU & SPICE usage of VM Win10 with VirtIO driver; Samba for file access; ...

Zum Start, Beenden, Konfigurieren, etc. des Client-Systems gibt es div. Manager
bedienbar z.B. über command-shell, Web-Interface oder einem graphischen Desktop.

Siehe:
linux-kvm.org   unvollständige Übersicht an Management Tools.
Auf dieser Seite beschreibe ich lediglich Virsh.

Zum Anfang

Vorbereitungen für Virsh

Ebenso wie kvm direkt über ein CLI benutzbar ist, kann man KVM (und andere Virtualisierer) über virsh - Virtual Shell geringfügig komfortabler bedienen. Wenn auch nicht so einfach, so ist virsh die leistungsfähigste Schnittstelle. Dafür ist die Werkzeug-Bibliothek libvirt.org nötig.

Wer gleich eine graphische Oberfläche benutzen möchte, kann z.B. den Virtual Machine Manger oder Virt-Manger benutzen, deren Beschreibung ich wegen des Umfanges, ausgelagert habe.

su
apt install virsh                                gibt es nicht
...
E: Unable to locate package virsh

apt-file search "/virsh "
libvirt-clients: /usr/bin/virsh           
libvirt-daemon: /usr/share/bash-completion/completions/virsh

apt install libvirt-clients
apt install libvirt-daemon                       ist dann bereits enthalten
...
libvirt-daemon is already the newest version (5.0.0-4+deb10u1).

apt install libvirt-daemon-system                enth. Konfig. für den libvirt-daemon

virsh version                                    Überprüfung
error: failed to connect to the hypervisor
error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory

systemctl start libvirtd                         Daemon Start-Versuch
Failed to start libvirtd.service: Unit libvirtd.service is masked.

Nach der Installation läuft aber noch kein Daemon, daher gibt es zunächst eine Fehlermeldung.
In diesem Fall steht dort der 3. Off-Level masked (nach stop & disabled).
Also libvirtd.service is masked.
Nach einem Neustart sieht es ein wenig besser aus.

su
systemctl reboot 

virsh version
Compiled against library: libvirt 5.0.0
Using library: libvirt 5.0.0
Using API: QEMU 5.0.0
Running hypervisor: QEMU 3.1.0

systemctl status libvirtd                        nach wie vor 'masked'
● libvirtd.service
   Loaded: masked (Reason: Unit libvirtd.service is masked.)
   Active: inactive (dead)

Was man mit einem masked Service macht,
fand ich auf folgender Seite ruanbekker.com recht gut beschrieben.

su
systemctl enable libvirtd
Synchronizing state of libvirtd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable libvirtd
Failed to enable unit: Unit file /etc/systemd/system/libvirtd.service is masked.

file /etc/systemd/system/libvirtd.service        Datei-Typ heraus bekommen
/etc/systemd/system/libvirtd.service: symbolic link to /dev/null

mv /etc/systemd/system/libvirtd.service /etc/systemd/system/libvirtd.service_

rm /etc/systemd/system/libvirtd.service_         später gelöscht

Zum Löschen fehlte mir zunächst der Mut ;-)
Daher habe ich die Verküpfung nach /dev/null zunächst nur umbenannt.
Nach Neustart des Daemons, dem Start von libvirt-Daemon und dem Enable (beim Booten), ist zumindest ein Teilerfolg zu verbuchen.
D.h. der Daemon libvirt ist aktiv (running), aber in der Loaded: Zeile noch nicht enabled.

Im Nachhinein betrachtet, wäre es wahrscheinlich eleganter
mit systemctl list-unit-files | grep libvirt zu überprüfen ob der Dienst "masked" ist,
um ihn dann mit systemctl unmask libvirtd verwendbar zu machen (noch nicht ausprobiert).
Siehe digitalocean.com how to use systemctl.

su
systemctl daemon-reload                          Daemon Neustart

systemctl start libvirtd

systemctl enable libvirtd                        Service beim nächsten Booten wieder starten

systemctl status libvirtd
● libvirtd.service - LSB: libvirt management daemon
   Loaded: loaded (/etc/init.d/libvirtd; generated)
   Active: active (running) since Wed 2020-09-30 22:25:39 BST; 24min ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 17 (limit: 4915)
   Memory: 20.7M
   CGroup: /system.slice/libvirtd.service
           └─2831 /usr/sbin/libvirtd -d

Sep 30 22:25:39 b41 systemd[1]: Starting LSB: libvirt management daemon...
Sep 30 22:25:39 b41 libvirtd[2823]: Starting libvirt management daemon: libvirtd
Sep 30 22:25:39 b41 systemd[1]: Started LSB: libvirt management daemon.

Um nicht immer als Admin eingeloggt zu sein,
sollte der Benuzter (hier a1) libvirt und libvirt-qemu hinzugefügt werden.

su
/usr/sbin/adduser a1 libvirt                     User a1 der Gruppe libvirt hinzufügen
/usr/sbin/adduser a1 libvirt-qemu
Adding user `a1' to group `libvirt-qemu' ...
Adding user a1 to group libvirt-qemu
Done.

newgrp libvirt                                   reload der Gruppe, statt aus- & einloggen
newgrp libvirt-qemu

Um sich ein Aus- und Einloggen zu ersparen, kann man die geänderten Gruppen neu laden.
Kontrollieren kann man es wieder über id.

id a1
uid=1001(a1) gid=1001(a) groups=1001(a),106(kvm),126(libvirt),64055(libvirt-qemu)

Eine Verbindung zum Hypervisor sollte nun möglich sein,
aber da ist noch ein Bug... linux.debian.bugs.dist.narkive.com *argh*

virsh connect qemu:///system
error: failed to connect to the hypervisor
error: error from service: CheckAuthorization: Action org.libvirt.unix.manage is not registered

Nun zumindest, nachdem ich den Dienst ntp zum Laufen bekommen habe, ist die Meldung verschwunden.

Zunächst sollte man sich erst einmal orientieren…
Beispielsweise mit virsh help bekommt man eine riesen Liste der möglichen Befehle.
Interessiert mich z.B. die Speicherverwaltung, kann ich virsh help pool eingeben.

virsh pool-list
 Name      State    Autostart
-------------------------------
 ISO       active   yes                          2 Quellen sind bereits etabliert
 libvirt   active   yes

virsh pool-info ISO
Name:           ISO
UUID:           c252178a-e9dc-4990-8be2-8d6d009c6fa9
...
Available:      1.41 TiB

Mit pool-info <...> bekomme ich leider keine Pfade heraus.
Unübersichtlicher, aber detaillierter ist da der Parameter pool-dumpxml.

virsh pool-dumpxml libvirt
<pool type='dir'>
  <name>libvirt</name>
  ...
    <path>/var/lib/libvirt</path>
</pool>

Um leichter die virtuellen Images wieder zu finden,
bzw. dort abzulegen wo mehr Platz ist,
empfehle ich den Standard Pfad /var/lib/libvirt (18 GB Platz via df -h ermittelt) zu ändern.

Also kopiere ich den Ordner libvirt auf die SSD
in das /home-Verzeichnis (203 GB Platz; evtl. HD) und erstelle eine neue Verknüpfung.

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p1   28G  8.8G   18G  34% /          18 GB reicht meist für einen Gast nicht aus...
/dev/nvme0n1p6  396G  203G  174G  54% /home
...
su
cd /var/lib/
ls -la 
...
drwxr-xr-x  7 root          root          4096 Oct 13 10:02 libvirt

cp -a libvirt/ /home/                            -a archivieren = -dR 
                                                 -d keinen symbolischen Verknüpfungen folgen
                                                 -R rekursiv
mv libvirt/ libvirt_alt

ln -s /home/libvirt/ libvirt                     -s symbolische Verknüpfung

Zum Anfang

MX-Linux Gast anlegen mit virt-install

Angenommen, MX-Linux Image MX-19.2_x64.iso ist bereits von einem Spiegel-Server runter geladen worden.
Im meinen Fall liegen dann die Images in einem speziellen Ordner auf der HD - Festplatte.

Hier: /mnt/sda3/ISO/MX-19.2_x64.iso

su
virt-install
bash: virt-install: command not found            unter DEB 10 versteckt (früher qemu-img)

apt-file search "/virt-install "                 entspr. Paket suchen
virtinst: /usr/bin/virt-install           
virtinst: /usr/share/virt-manager/virt-install

apt install virtinst                             enth. virt-install virt-clone virt-xml virt-convert

apt install libosinfo-bin                        enth. osinfo-query
                                                 evtl. noch interessant; enth. laut Synaptic folgendes: 
                                                 guestfish, virt-cat, virt-df, virt-edit, virt-filesystems, 
apt install libguestfs-tools                     virt-inspector, virt-ls, virt-make-fs, 
                                                 virt-rescue, virt-resize, virt-tar, virt-win-reg, etc.

Ein erster Test ergibt folgendes:

su
virt-install --connect qemu:///system            mit root, aber zu wenig Parameter...
ERROR    
--name is required
--memory amount in MiB is required
--disk storage must be specified (override with --disk none)
An install method must be specified
(--location URL, --cdrom CD/ISO, --pxe, --import, --boot hd|cdrom|...)

Im Gegensatz zu virsh, welches in einem interaktiven Modus bedient werden kann,
ist es bei virt-install wichtig, alle nötigen Parameter direkt mit anzugeben.
Eine Möglichkeit sich das zu vereinfachen, ist sich ein entsprechendes Skript anzulegen.

Um die wichtigsten Parameter besser zu verstehen, erst einmal eine Auflistung.
Siehe virt-install --help. In der Hilfe selber wird auf libvirt.org verwiesen.

In der Auflistung werden konkrete Beispiele für z.B. MX-Linux genannt.

Typ und Variante des Betriebsystems

osinfo-query os | more
 Short ID           | Name                         | Version  | ID  
--------------------+------------------------------+----------+-----------------------------------
...
 debian9            | Debian Stretch               | 9        | http://debian.org/debian/9      
 debian10           | Debian 10                    | 10       | http://debian.org/debian/10         
 ubuntu18.04        | Ubuntu 18.04 LTS             | 18.04    | http://ubuntu.com/ubuntu/18.04   
 win10              | Microsoft Windows 10         | 10.0     | http://microsoft.com/win/10  
...

Die Liste der unterstützten Systeme ist schon sehr lang, enthält aber z.B. nicht MX-Linux.
Eine mögliche Vorgehensweise ist nach den Ursprüngen zu suchen worauf es basiert.
z.B. via wikipedia.org List_of_Linux_distributions
Dort steht z.B. "There is also a Xfce distro called MX Linux that's based on Debian Stable"
Sollte man keinen Zusammenhang finden, kann man immer noch --os-variant generic eingeben.

Ebenso ist Linux-Mint nicht zu finden, referenziert aber auf Ubuntu bzw. Debian.

Zum Anfang

Netzwerk einrichten

Bei dem Thema Netzwerk, stellte ich fest, dass ich auch dort wieder ein neues Fass aufmachte.
Denn was unter DEB 9 oder älter noch funktionierte, ist nun unter DEB 10 anders...
Daher habe ich das ganze Thema ausgelagert.

Möchte man im folgenden Kapitel die "bridged" Schnittstelle br0 verwenden,
ist zuerst die ausgelagerte Seite Netzwerke unter Linux. abzuarbeiten,
denn das Thema Netzwerk gliedert sich in 2 Teile.

Zum einen ist es auf dem Host-Rechner nötig eine oder mehrere Verbindungen zu etablieren,
welche dann von der Applikation KVM & Virsh genutzt werden können
und zum anderen benötigt KVM & Virsh selber auch noch eine Zuweisung,
welche der (realen oder virtuellen) Schnittstellen für welchen Gast genutzt werden.

Netzwerk in virsh einrichten

Ein Netzwerk zwischen virsh (benutzt Bibliothek libvirt)
und libvirtd (Daemon) ist unter Umständen noch nicht etabliert.
Das kann aber nachgeholt werden.
Über das Netzwerk greife ich z.B. via ssh, VNC client, Virt-Manager, Virt-Viewer, etc. auf den Gast zu.

virsh net-list --all
 Name   State   Autostart   Persistent
----------------------------------------         hiernach kommt evtl. die Meldung 
                                                 State: inactive
su                                               dann...
virsh net-start default                          Verbindung etablieren
Network default started

virsh net-autostart default                      und nach dem Booten aktivieren
Network default marked as autostarted

Das default Netzwerk ist nun aktiv
und die Konfigurations-Datei kann man sich einmal angucken um etwas über den generellen Aufbau zu erfahren.

su                                               ohne su ist default unbekannt 
virsh net-dumpxml default
<network>
  <name>default</name>
  <uuid>da7fb9d7-9655-486e-ab95-fe0e377de3d5</uuid>
  <forward mode='nat'>                           NAT - Network Address Translation 
    <nat>                                              ermöglicht Gast-Zugriff via gleicher Host-IP
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:98:5a:1d'/>
  <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>

Netzwerk für die VM einrichten

Zunächst kopiere ich die Default-Vorlage
/etc/libvirt/qemu/networks/default.xml um sie danach anzupassen.
Mit der neuen XML-Datei lege ich dann ein neues lokales,
vom Router isoliertes, Netzwerk iso0 an.

su
cd /etc/libvirt/qemu/networks/
cp default.xml isolated.xml

nano isolated.xml

<network>
  <name>iso0</name>                     # die uuid immer ein wenig ändern...
  <uuid>da7fb9d7-9655-486e-ab95-fe0e377de3d9</uuid>
  <ip address='192.168.100.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.100.2' end='192.168.100.254'/>
    </dhcp>
  </ip>
</network>

virsh net-define --file ./isolated.xml
Network iso0 defined from ./isolated.xml

Auf ähnliche Art und Weise lege ich als Bridge noch ein "Routed Network" an.
Mit der neuen XML-Datei entsteht nun eine mit dem Router verbundene Netzwerk-Brücke br0.

su
cd /etc/libvirt/qemu/networks/
cp default.xml routed.xml

nano routed.xml

<network>
  <name>br0</name>
  <uuid>da7fb9d7-9655-486e-ab95-fe0e377de4d5</uuid>
  <forward mode='bridge'/>
  <bridge name='br0' />
</network>

virsh net-define --file ./routed.xml
Network br0 defined from ./routed.xml

Wenn alles geklappt hat, stehen nun 3 Netzwerke zur Verfügung.
Allerdings sind noch nicht alle aktiv...

su
virsh net-list --all
 Name      State      Autostart   Persistent
----------------------------------------------
 br0       inactive   no          yes
 default   active     yes         yes
 iso0      inactive   no          yes

Im Zusammenhang mit einem Netzwerk sind folgende Befehle am wichtigsten:

Achtung Der Befehl virsh net-define --file ./isolated.xml
generiert im selben Ordner aus isolated.xml eine Datei iso.xml,
welche bei Anwendung von virsh net-undefine iso0 wieder gelöscht wird.
Also aufpassen, dass die Namen oder Ordner unterschiedlich sind.

su
virsh net-start br0
Network br0 started

virsh net-autostart br0
Network br0 marked as autostarted

Zum Anfang

VNC, SPICE und andere Viewer

Als virtuellen Monitor kann man verschiedene Programme nutzen.

Das VNC-Protokoll wird beispielsweise von virsh vncdisplay mxlinux unterstützt.
virt-install ruft virt-viewer auf, welcher VNC unterstützt.
Der noch nicht installierte virt-manager kann sowohl VNC alsauch SPICE verwenden.
Oder man verwendet halt das spezielle Programm spicy...

mxlinux via NAT - mit virt-install

su
virt-install --name mxlinux --memory 2048 --vcpus 2 --graphics vnc
--cdrom /mnt/sda3/ISO/MX-19.2_x64.iso --disk path=./mxlinux.qcow2,size=10
WARNING  No operating system detected, VM performance may suffer. 
Specify an OS with --os-variant for optimal results.

Starting install...
Allocating 'mxlinux.qcow2'                                  |  10 GB  00:00     
ERROR    internal error: cannot load AppArmor profile 'libvirt-be0b890f-d1e5-4769-a7f4-4f3cb39ebcb6'
Removing disk 'mxlinux.qcow2'                              |    0 B  00:00     
Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
  virsh --connect qemu:///system start mxlinux
otherwise, please restart your installation.

Ein erster Versuch schlug fehl, da wahrscheinlich der ntp-Daemon noch nicht lief.
Zur besseren Verwaltung und Übersicht sollte man virt-install nicht wie oben beschrieben verwenden,
sondern alles in eine Datei schreiben.
Um Probleme zu vermeiden wo ein Gleichheitszeichen "=" benötigt wird und wo nicht,
habe ich es erfolgreich überall rein gestreut ;-)

su
cd /home/libvirt/images
nano mxlinux.sh

#!/bin/sh                                        # 27.10.20
virt-install --name=mxlinux                 \
   --disk path=./mxlinux.qcow2,size=10      \
   --cdrom=/mnt/sda3/ISO/MX-19.2_x64.iso    \    # --location ist penibel...
   --memory=2048                            \
   --os-type=linux --os-variant=debian10    \
   --network network=default                \    # via NAT
   --graphics=vnc                           \
   --vcpus=2                                \
   --hvm

sh mxlinux.sh
Starting install...
...

Beim Aufruf von virt-install wird virt-viewer wird automatisch gestartet
und es erscheint ein Boot-Menü der Live-CD.
Daran denken, dass jetzt ein System von CD läuft und die virtuelle Platte erst berührt wird,
wenn das Install... Ikon auf dem Desktop aufgerufen wird.

Das einmalig von der Live-CD gebootet wird, kann man nutzen,
wenn man z.B. eine virtuelle Windows-Platte nach Viren durchsuchen möchte
oder bestimmte Eingriffe vornehmen möchte, wo das Betriebssystem stört…

mxlinux bootmenü via virt-viewer

...

mxlinux gebootete Live-CD via virt-viewer

Die Installation an sich beschreibe ich nicht mehr, da sie vergleichbar ist wie bei einer realen Installation.
Was aber noch interessant sein könnte, sind ein paar Verwaltungs-Befehle.

Die folgenden Befehle sind eher gedacht, wenn man nicht mehr auf den Gast zugreifen kann...
Vergleichbar mit langem Drücken des Power-Buttons ist z.B. virsh shutdown mxlinux

Sofortiger Zusammenbruch der Spannungsversorgung ist vergleichbar mit z.B. virsh destroy mxlinux

Mit virsh dumpxml mxlinux > mxlinux.xml kann ich mir die Konfiguration des Gast-Systems mxlinux in eine .xml Datei exportieren
und mit virsh create mint10.xml ein weiteres Gastsystem (hier mint10) importieren.

Direktes Editieren ist auch möglich via z.B. virsh edit mint10.
Und wieder gelöscht werden können gestoppte Gäste z.B. via virsh undefine mxlinux.

Wer unter /home/libvirt/images nach schaut, wird allerdings feststellen, dass trotz virsh undefine mxlinux die virtuelle Platte mxlinux.qcow2 nicht gelöscht wurde. Das ist dann händisch erforderlich.

Linux-Mint bridged - mit virt-install

Zur Vorbereitung habe ich das ISO-Image von Mint vorher runter geladen und in den Ordner /mnt/sda3/ISO verschoben. Eine weitere Voraussetzung ist das die Netzwerkbrücke br0 bereits eingerichtet ist. Siehe Netzwerke unter Linux.

su
cd /home/libvirt/images
nano mint20.sh

#!/bin/sh                                        # 28.10.20
virt-install --name=mint20                  \
   --disk path=./mint20.qcow2,size=15       \
   --cdrom=/mnt/sda3/ISO/linuxmint-20-xfce-64bit.iso \   
   --memory=2048                            \
   --os-type=linux --os-variant=ubuntu18.04 \
   --network bridge=br0                     \    
   --graphics=vnc                           \
   --vcpus=2                                \
   --hvm

sh mint20.sh
Starting install...
Allocating 'mint20.qcow2'                                   |  15 GB  00:00     
ERROR    Cannot get interface MTU on 'br0': No such device
Removing disk 'mint20.qcow2'                                |    0 B  00:00     
Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
  virsh --connect qemu:///system start mint20
otherwise, please restart your installation.

Leider ist das bridged Interface nicht richtig konfiguriert.

Zum Anfang

kvm via Virtual Machine Manager nutzen

Ausgelagert: Siehe Virtual Machine Manager - VMM.

Ansonsten scheint Cockpit, eine GUI über ein Web-Interface, der Nachfolger von VMM zu werden, was vielleicht noch berichtenswert wäre.

Quellen

Aufgrund der Menge habe ich es so weit es geht alphabetisch sortiert um Dubletten zu vermeiden.

admin-magazin.de   Sicherheitsaspekte-in-virtualisierten-Umgebungen (aus 2009);
ssh-keygen, virt-install, privates Netzwerk für VM mit virsh net-define, bridged network via /etc/sysconfig/network-scripts/ifcfg-...; brctl; HW-bonding, MAC mit sVirt; etc.

cyberciti.biz   non-graphic headless KVM server on DEB 9
bridged with bridge-utils, virsh net-define, via vnc, new VM with virt-builder oder virt-install, div. virsh Kommandos

cyberciti.biz   how-to-install-kvm-on-ubuntu-20-04-lts-headless-server
Bridge virbr0 soll default sein; weitere Bridge br0 mit nmcli erzeugt; VM erzeugen mit virt-install; Display via virsh vncdisplay; VM erzeugen mit virt-builder; etc.

datacenter-insider.de   virsh Verwaltung der KVM (2015)
Win-7 Installation über virsh (veraltet, virsh Dialog funktioniert nicht mehr bei DEB 10), virt-install, virsh Kommandos; virsh migrate

dedoimedo.com   How to setup bridged networking in KVM (2011)
creating bridge via brctl, virt-manager, some dirty bridging hacks,

debian.org   Die manpage von virtinst, mit allen erdenklichen Optionen ;-)

digitalocean.com   how to use systemctl (2015)
Systemd versus SysV; Services: start, stop, re-start, re-load, enable, disable, status, unmask, etc.

explorelinux.com   How To Manage KVM Virtual Machines From The Host Terminal? (2020)
virsh virt-install

funtoo.org   Windows_10_Virtualization_with_KVM
Win mit VirtIO-Treiber; script to install Win via qemu-system-...; using spicy

golinuxcloud.com   virt-install examples; KVM virtualisation commands cheatsheet
virt-install, virt-viewer, tigervnc

libvirt.org Applications using libvirt
  Sehr umfangreiche Liste an Tools mit Verknüpfungen für alle Belange: z.B. virsh, virt-install, virt-p2v, virt-manager, virt-viewer, etc.

libvirt.org Domain XML format
  Ein paar Netzwerk-Grundlagen (NAT, routed, isolated) und Konfiguration mit virt-manager, Netzwerksteuerung mit virsh.

libvirt.org   events configuration
Detailbeschreibung der XML-Konfiguration - siehe virsh dumpxml

linuxhint.com   KVM on Debian 10 (using virsh)
etwas magere Beschreibung, aber mit speziellen Aspekten bzgl. virt-install, virsh vncdisplay

linuxtechi.com   install-kvm-hypervisor-on-centos-7-and-rhel-7 (2019)
/etc/sysconfig/network-scripts/ bridge interface, virt-manager, virt-install

ostechnix.com   manage-kvm-virtual-machines-with-virsh-program
virsh: help, list, save, restore, destroy, shutdown, dumpxml, create, edit, undefine, net- commands

raymii.org   install online Distro with virt-install
fallocate, div. Beispiele virt-install, osinfo-query os, etc.

https://www.systutorials.com/docs/linux/man/1-virt-viewer/

techotopia.com   Installing a KVM Guest-OS from the Command-line (virt-install)
virt-install Parameter-Tabelle & ein Beispiel (ein bischen wenig...-> previous & next)

tecmint.com   How to manage KVM via command line tools (2015)
create storage pool with virsh pool-define-as; qemu-img create for image; virt-install

tecmint.com   1110 best tools to access remote linux desktop (2019)
TigerVNC, RealVNC, TeamViewer, Remmina, NoMachine, Apache Guacamole, XRDP, FreeNX, X2Go, Xpra

tecmint.com   install-kvm-on-ubuntu (2020)
create VM via virt-install & via virt-manager (recht kurz)

thomas-krenn.com   virsh Werkzeug zur Verwaltung virtueller Maschinen
Grundlagen, Virsh-Parameter-Tabelle; virsh: VM starten, entfernen, etc.; XML von VM editieren - mehr nicht...

https://manpages.ubuntu.com/manpages/trusty/man1/virt-viewer.1.html

ubuntuusers.de   virsh
virt-install; virsh: start, shutdown via ACPI -> acpid für den Gast, console (Debugging), virt-top

https://documentation.suse.com/sles/15-SP1/html/SLES-all/cha-libvirt-config-virsh.html

Zum Anfang