Diese Schritt-für-Schritt-Anleitung erklärt, was KVM ist, wie man KVM auf einem Ubuntu 20.04-Server installiert und konfiguriert und wie man KVM-Gastmaschinen mit dem Virsh-Programm erstellt und verwaltet.
Was ist KVM?
KVM , kurz für K Kern-basierte V irtual M achine ist ein FreeBSD- und Linux-Kernelmodul, das es dem Kernel ermöglicht, als Hypervisor zu fungieren. Ab Kernel-Version 2.6.20 wird KVM in die Hauptlinie des Linux-Kernels eingebunden.
Mit KVM können Sie ganz einfach eine Virtualisierungsumgebung auf einem Linux-Rechner einrichten und eine breite Palette von Gastbetriebssystemen hosten, darunter Linux, Windows, BSD, Mac OS und viele mehr.
In diesem Handbuch sehen wir uns an, wie man KVM in Ubuntu 20.04 Headless Server installiert und konfiguriert. Außerdem werden wir sehen, wie man KVM-Gastmaschinen mit dem Virsh-Befehlszeilenprogramm erstellt und verwaltet.
Voraussetzungen
Stellen Sie vor der Installation von KVM zunächst sicher, dass der Prozessor Ihres Systems die Hardwarevirtualisierung unterstützt. In der folgenden Anleitung haben wir einige verschiedene Möglichkeiten dokumentiert, um festzustellen, ob ein Linux-System Virtualisierung unterstützt.
- So finden Sie heraus, ob eine CPU die Virtualisierungstechnologie (VT) unterstützt
Wenn Ihr System Hardwarevirtualisierung unterstützt, fahren Sie mit den folgenden Schritten fort.
1. KVM in Ubuntu 20.04 LTS installieren und konfigurieren
Für die Zwecke dieses Leitfadens werde ich die folgenden Systeme verwenden.
KVM-Virtualisierungsserver:
- Betriebssystem – Ubuntu 20.04 LTS Minimalserver (keine GUI)
- IP-Adresse :192.168.225.52/24
Remote-Client:
- Betriebssystem – Ubuntu 20.04 GNOME-Desktop
Lassen Sie uns zuerst KVM auf dem Ubuntu-Server installieren.
1.1. KVM in Ubuntu 20.04 LTS installieren
Installieren Sie Kvm und alle erforderlichen Abhängigkeiten zum Einrichten einer Virtualisierungsumgebung auf Ihrem Ubuntu 20.04 LTS-Server mit dem folgenden Befehl:
$ sudo apt install qemu qemu-kvm libvirt-clients libvirt-daemon-system virtinst bridge-utils
Hier,
- qemu - Ein generischer Maschinenemulator und Virtualisierer,
- qemu-kvm - QEMU-Metapaket für KVM-Unterstützung (d. h. vollständige QEMU-Virtualisierung auf x86-Hardware),
- libvirt-clients - Programme für die libvirt-Bibliothek,
- libvirt-daemon-system - Libvirt-Daemon-Konfigurationsdateien,
- virtinst - Programme zum Erstellen und Klonen virtueller Maschinen,
- bridge-utils - Dienstprogramme zum Konfigurieren der Linux-Ethernet-Bridge.
Sobald KVM installiert ist, starten Sie den libvertd-Dienst (falls noch nicht geschehen):
$ sudo systemctl enable libvirtd
$ sudo systemctl start libvirtd
Überprüfen Sie den Status des libvirtd-Dienstes mit dem Befehl:
$ systemctl status libvirtd
Beispielausgabe:
● libvirtd.service - Virtualization daemon Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-07-04 08:13:41 UTC; 7min ago TriggeredBy: ● libvirtd-ro.socket ● libvirtd-admin.socket ● libvirtd.socket Docs: man:libvirtd(8) https://libvirt.org Main PID: 4492 (libvirtd) Tasks: 19 (limit: 32768) Memory: 12.9M CGroup: /system.slice/libvirtd.service ├─4492 /usr/sbin/libvirtd ├─4641 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --l> └─4642 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --l> Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: compile time options: IPv6 GNU-getopt DBus i18n> Jul 04 08:13:42 ubuntuserver dnsmasq-dhcp[4641]: DHCP, IP range 192.168.122.2 -- 192.168.12> Jul 04 08:13:42 ubuntuserver dnsmasq-dhcp[4641]: DHCP, sockets bound exclusively to interfa> Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: reading /etc/resolv.conf Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: using nameserver 127.0.0.53#53 Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: read /etc/hosts - 7 addresses Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: read /var/lib/libvirt/dnsmasq/default.addnhosts> Jul 04 08:13:42 ubuntuserver dnsmasq-dhcp[4641]: read /var/lib/libvirt/dnsmasq/default.host> Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: reading /etc/resolv.conf Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: using nameserver 127.0.0.53#53
Nun, der libvertd-Dienst wurde aktiviert und gestartet! Lassen Sie uns jetzt den Rest der Konfiguration vornehmen.
1.2. Bridge-Netzwerk mit KVM in Ubuntu einrichten
Ein überbrücktes Netzwerk teilt die reale Netzwerkschnittstelle des Hostcomputers mit anderen VMs, um eine Verbindung zum externen Netzwerk herzustellen. Daher kann sich jede VM direkt an alle verfügbaren IPv4- oder IPv6-Adressen binden, genau wie ein physischer Computer.
Standardmäßig richtet KVM eine private virtuelle Bridge ein, damit alle VMs innerhalb des Host-Computers miteinander kommunizieren können. Es stellt sein eigenes Subnetz und DHCP bereit, um das Gastnetzwerk zu konfigurieren, und verwendet NAT, um auf das Hostnetzwerk zuzugreifen.
Sehen Sie sich die IP-Adresse der standardmäßigen virtuellen KVM-Schnittstellen mit dem Befehl „ip“ an:
$ ip a
Beispielausgabe:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:8a:52:94 brd ff:ff:ff:ff:ff:ff inet 192.168.225.52/24 brd 192.168.225.255 scope global dynamic enp0s3 valid_lft 39559sec preferred_lft 39559sec inet6 2409:4072:6c0f:431d:a00:27ff:fe8a:5294/64 scope global mngtmpaddr noprefixroute valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe8a:5294/64 scope link valid_lft forever preferred_lft forever 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:10:7c:c1 brd ff:ff:ff:ff:ff:ff inet 192.168.225.60/24 brd 192.168.225.255 scope global dynamic enp0s8 valid_lft 39559sec preferred_lft 39559sec inet6 2409:4072:6c0f:431d:a00:27ff:fe10:7cc1/64 scope global mngtmpaddr noprefixroute valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe10:7cc1/64 scope link valid_lft forever preferred_lft forever 4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:5d:61:28 brd ff:ff:ff:ff:ff:ff inet 192.168.225.51/24 brd 192.168.225.255 scope global dynamic enp0s9 valid_lft 39559sec preferred_lft 39559sec inet6 2409:4072:6c0f:431d:a00:27ff:fe5d:6128/64 scope global mngtmpaddr noprefixroute valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe5d:6128/64 scope link valid_lft forever preferred_lft forever 5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:f1:98:9e brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever 6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000 link/ether 52:54:00:f1:98:9e brd ff:ff:ff:ff:ff:ff
IP-Adresse der virtuellen KVM-Standardschnittstelle
Wie Sie sehen können, ist das KVM-Standardnetzwerk virbr0 verwendet die IP-Adresse 192.168.122.1/24. Alle VMs verwenden eine IP-Adresse im IP-Bereich 192.168.122.0/24 und das Host-Betriebssystem ist unter 192.168.122.1 erreichbar. Sie sollten in der Lage sein, vom Gastbetriebssystem aus per SSH in das Host-Betriebssystem (unter 192.168.122.1) zu gelangen und mit scp Dateien hin und her zu kopieren.
Es ist in Ordnung, wenn Sie nur vom Host selbst auf die VMs im Inneren zugreifen. Wir können jedoch nicht auf die VMs von anderen Remote-Systemen im Netzwerk zugreifen.
Weil sie einen anderen IP-Bereich verwenden, dh in meinem Fall 192.168.225.0/24. Um von anderen Remote-Hosts aus auf die VMs zugreifen zu können, müssen wir eine öffentliche Bridge einrichten, die im Host-Netzwerk ausgeführt wird und einen beliebigen externen DHCP-Server im Host-Netzwerk verwendet.
Um es für Laien auszudrücken:Wir werden dafür sorgen, dass alle VMs dieselbe IP-Serie verwenden, die vom Hostsystem verwendet wird.
Bevor wir ein öffentliches Bridged-Netzwerk einrichten, sollten wir Netfilter deaktivieren aus Leistungs- und Sicherheitsgründen . Netfilter ist derzeit standardmäßig auf Bridges aktiviert.
Um Netfilter zu deaktivieren, erstellen Sie eine Datei namens /etc/sysctl.d/bridge.conf :
$ sudo vi /etc/sysctl.d/bridge.conf
Fügen Sie die folgenden Zeilen hinzu:
net.bridge.bridge-nf-call-ip6tables=0 net.bridge.bridge-nf-call-iptables=0 net.bridge.bridge-nf-call-arptables=0
Datei speichern und schließen.
Erstellen Sie dann eine weitere Datei namens /etc/udev/rules.d/99-bridge.rules :
$ sudo vi /etc/udev/rules.d/99-bridge.rules
Fügen Sie die folgende Zeile hinzu:
ACTION=="add", SUBSYSTEM=="module", KERNEL=="br_netfilter", RUN+="/sbin/sysctl -p /etc/sysctl.d/bridge.conf"
Dadurch werden die notwendigen Flags gesetzt, um Netzfilter auf Bridges an der entsprechenden Stelle beim Systemstart zu deaktivieren. Speichern und schließen Sie die Datei. Starten Sie Ihr System neu um diese Änderungen zu übernehmen.
Als nächstes sollten wir das Standardnetzwerk deaktivieren, das KVM für sich selbst installiert hat.
Finden Sie den Namen der KVM-Standardnetzwerkschnittstellen mit dem Befehl "ip link":
$ ip link
Beispielausgabe:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:8a:52:94 brd ff:ff:ff:ff:ff:ff 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:10:7c:c1 brd ff:ff:ff:ff:ff:ff 4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:5d:61:28 brd ff:ff:ff:ff:ff:ff 5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000 link/ether 52:54:00:1f:a2:e7 brd ff:ff:ff:ff:ff:ff 6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN mode DEFAULT group default qlen 1000 link/ether 52:54:00:1f:a2:e7 brd ff:ff:ff:ff:ff:ff
KVM-Standardnetzwerkschnittstellen anzeigen
Wie Sie in der obigen Ausgabe sehen, sind die Einträge „virbr0“ und „virbr0-nic“ die KVM-Netzwerke.
Lassen Sie uns das Standard-KVM-Netzwerk mit dem Befehl entfernen:
$ virsh net-destroy default
Beispielausgabe:
Network default destroyed
Definieren Sie das Standardnetzwerk mit dem Befehl:
$ virsh net-undefine default
Beispielausgabe:
Network default has been undefined
Standard-KVM-Netzwerkschnittstellen entfernen
Wenn die obigen Befehle aus irgendeinem Grund nicht funktionieren, können Sie diese Befehle verwenden, um das KVM-Standardnetzwerk zu deaktivieren und die Definition aufzuheben:
$ sudo ip link delete virbr0 type bridge
$ sudo ip link delete virbr0-nic
Führen Sie nun "ip link" erneut aus, um zu überprüfen, ob die virbr0- und virbr0-nic-Schnittstellen tatsächlich gelöscht wurden:
$ ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:8a:52:94 brd ff:ff:ff:ff:ff:ff 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:10:7c:c1 brd ff:ff:ff:ff:ff:ff 4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:5d:61:28 brd ff:ff:ff:ff:ff:ff
Sehen? Die KVM-Standardnetzwerke sind weg.
Lassen Sie uns nun die öffentliche KVM-Bridge einrichten, die beim Erstellen einer neuen VM verwendet werden soll.
Hinweis:
Verwenden Sie keine drahtlosen Netzwerkschnittstellenkarten für Bridges. Die meisten drahtlosen Interlaces unterstützen kein Bridging. Verwenden Sie immer kabelgebundene Netzwerkschnittstellen für nahtlose Konnektivität!
Um eine Netzwerkbrücke im Host zu erstellen, bearbeiten Sie /etc/netplan/00-installer-config.yaml Datei und fügen Sie die Bridge-Details hinzu.
Hier ist der Standardinhalt der 00-installer-config.yaml Datei auf meinem Ubuntu 20.04 LTS-Server.
$ cat /etc/netplan/00-installer-config.yaml # This is the network config written by 'subiquity' network: ethernets: enp0s3: dhcp4: true enp0s8: dhcp4: true enp0s9: dhcp4: true version: 2
Wie Sie sehen, habe ich in meinem Ubuntu-Server drei kabelgebundene Netzwerkschnittstellen, nämlich enp0s3, enp0s8 und enp0s9.
Bevor Sie diese Datei bearbeiten, sichern Sie Ihre vorhandene /etc/netplan/00-installer-config.yaml-Datei:
$ sudo cp /etc/netplan/00-installer-config.yaml{,.backup}
Bearbeiten Sie dann die Standard-Konfigurationsdatei mit Ihrem bevorzugten Editor:
$ sudo vi /etc/netplan/00-installer-config.yaml
Fügen Sie es wie folgt hinzu/ändern Sie es:
# This is the network config written by 'subiquity' network: ethernets: enp0s3: dhcp4: false dhcp6: false enp0s8: dhcp4: false dhcp6: false enp0s9: dhcp4: false dhcp6: false bridges: br0: interfaces: [ enp0s3 ] addresses: [192.168.225.52/24] gateway4: 192.168.225.1 mtu: 1500 nameservers: addresses: [8.8.8.8,8.8.4.4] parameters: stp: true forward-delay: 4 dhcp4: no dhcp6: no version: 2
Erstellen Sie eine Netzwerkbrücke in Ubuntu
Hier ist die Bridge-Netzwerkschnittstelle „br0“ mit der Netzwerkschnittstelle „enp0s3“ des Hosts verbunden. Die IP-Adresse von br0 ist 192.168.225.52. Das Gateway ist 192.168.225.1. Ich verwende Google DNS-Server (8.8.8.8 und 8.8.4.4), um eine Verbindung zum Internet herzustellen. Stellen Sie sicher, dass die Leerzeichen genau wie oben sind. Wenn die Zeileneinrückungen nicht korrekt sind, wird die überbrückte Netzwerkschnittstelle nicht aktiviert. Ersetzen Sie die obigen Werte, die mit Ihrem Netzwerk übereinstimmen.
Nachdem Sie die Netzwerkkonfigurationsdatei geändert haben, speichern und schließen Sie sie. Wenden Sie die Änderungen an, indem Sie den folgenden Befehl ausführen:
$ sudo netplan --debug apply
Überprüfen Sie nun, ob die IP-Adresse dem Bridge-Interface zugewiesen wurde:
$ ip a
Beispielausgabe:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000 link/ether 08:00:27:8a:52:94 brd ff:ff:ff:ff:ff:ff 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:10:7c:c1 brd ff:ff:ff:ff:ff:ff inet6 2409:4072:48b:ab02:a00:27ff:fe10:7cc1/64 scope global mngtmpaddr noprefixroute valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe10:7cc1/64 scope link valid_lft forever preferred_lft forever 4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:5d:61:28 brd ff:ff:ff:ff:ff:ff inet6 2409:4072:48b:ab02:a00:27ff:fe5d:6128/64 scope global mngtmpaddr noprefixroute valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe5d:6128/64 scope link valid_lft forever preferred_lft forever 7: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 08:00:27:8a:52:94 brd ff:ff:ff:ff:ff:ff inet 192.168.225.52/24 brd 192.168.225.255 scope global br0 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe8a:5294/64 scope link valid_lft forever preferred_lft foreve
Überprüfen Sie die IP-Adresse des KVM-Bridge-Netzwerks
Wie Sie in der obigen Ausgabe sehen, ist die überbrückte Netzwerkschnittstelle br0 wird die IP-Adresse 192.168.225.52 zugewiesen und der Eintrag enp0s3 hat jetzt den Eintrag "master br0". Das bedeutet, dass enp0s3 zur Bridge gehört.
Sie können auch "brctl" verwenden Befehl zum Anzeigen des Bridge-Status:
$ brctl show br0
Beispielausgabe:
bridge name bridge id STP enabled interfaces br0 8000.0800278a5294 yes enp0s3
Jetzt sollten wir KVM konfigurieren, um diese Bridge zu verwenden. Erstellen Sie dazu eine XML-Datei namens host-bridge.xml :
$ vi host-bridge.xml
Fügen Sie die folgenden Zeilen hinzu:
<network> <name>host-bridge</name> <forward mode="bridge"/> <bridge name="br0"/> </network>
Führen Sie die folgenden Befehle aus, um die neu erstellte Brücke zu starten und sie als Standardbrücke für VMs festzulegen:
$ virsh net-define host-bridge.xml
$ virsh net-start host-bridge
$ virsh net-autostart host-bridge
Starten Sie die KVM-Host-Bridge
Um zu überprüfen, ob die Bridge aktiv und gestartet ist, führen Sie Folgendes aus:
$ virsh net-list --all
Beispielausgabe:
Name State Autostart Persistent ------------------------------------------------ host-bridge active yes yes
Überprüfen Sie den Status der KVM-Hostbrücke
Herzlichen Glückwunsch! Wir haben die KVM-Bridge erfolgreich eingerichtet und sie ist jetzt aktiv.
Verwandte Lektüre:
- KVM in CentOS 8 Server installieren und konfigurieren
- KVM in OpenSUSE Tumbleweed installieren und konfigurieren
2. Erstellen und verwalten Sie virtuelle KVM-Maschinen mit Virsh
Wir verwenden "virsh" Befehlszeilenprogramm zum Verwalten virtueller Maschinen. Das Programm virsh wird zum Erstellen, Auflisten, Anhalten, Neustarten, Herunterfahren und Löschen von VMs über die Befehlszeile verwendet.
Standardmäßig werden die Dateien der virtuellen Maschine und andere zugehörige Dateien unter /var/lib/libvirt/ gespeichert Lage. Der Standardpfad zum Speichern von ISO-Images ist /var/lib/libvirt/boot/ . Wir können diese Speicherorte natürlich ändern, wenn wir eine neue VM installieren.
2.1. Alle virtuellen Maschinen auflisten
Lassen Sie uns zunächst prüfen, ob virtuelle Maschinen vorhanden sind.
Um die Liste aller verfügbaren virtuellen Maschinen anzuzeigen, führen Sie Folgendes aus:
$ sudo virsh list --all
Beispielausgabe:
Virtuelle Maschinen mit virsh auflisten
Wie Sie sehen, sind keine virtuellen Maschinen vorhanden.
2.2. Erstellen Sie virtuelle KVM-Maschinen
Lassen Sie uns eine Ubuntu 18.04 Virtual Machine mit 2 GB RAM, 1 CPU-Kern, 10 GB HDD erstellen. Führen Sie dazu Folgendes aus:
$ sudo virt-install --name Ubuntu-18.04 --ram=2048 --vcpus=1 --cpu host --hvm --disk path=/var/lib/libvirt/images/ubuntu-18.04-vm1,size=10 --cdrom /home/ostechnix/ubuntu18.iso --network bridge=br0 --graphics vnc
Lassen Sie uns den obigen Befehl aufschlüsseln und sehen, was jede Option bewirkt.
- --name Ubuntu-18.04 :Der Name der virtuellen Maschine
- --ram=2048 :Weist der VM 2 GB RAM zu.
- --vcpus=1 :Gibt die Anzahl der CPU-Kerne in der VM an.
- --CPU-Host :Optimiert die CPU-Eigenschaften für die VM, indem die CPU-Konfiguration des Hosts dem Gast offengelegt wird.
- --hvm :Vollständige Hardwarevirtualisierung anfordern.
- --disk path=/var/lib/libvirt/images/ubuntu-18.04-vm1,size=10 :Der Speicherort für die Festplatte der VM und ihre Größe. In diesem Fall habe ich 10 GB Festplattengröße zugewiesen.
- --cdrom /home/ostechnix/ubuntu18.iso :Der Speicherort, an dem Sie das eigentliche Ubuntu-Installer-ISO-Image haben.
- --network bridge=br0 :Weisen Sie die VM an, das Bridge-Netzwerk zu verwenden. Wenn Sie kein Bridge-Netzwerk konfiguriert haben, ignorieren Sie diesen Parameter.
- --graphics vnc :Ermöglicht VNC-Zugriff auf die VM von einem Remote-Client.
Beispielausgabe des obigen Befehls wäre:
WARNING Graphics requested but DISPLAY is not set. Not running virt-viewer. WARNING No console to launch for the guest, defaulting to --wait -1 Starting install... Allocating 'ubuntu-18.04-vm1' | 10 GB 00:00:06 Domain installation still in progress. Waiting for installation to complete.
Diese Meldung wird so lange angezeigt, bis Sie von einem Remote-System über eine beliebige VNC-Anwendung eine Verbindung zur VM herstellen und die Installation des Betriebssystems abschließen.
Da unser KVM-Hostsystem (Ubuntu-Server) keine GUI hat, können wir die Installation des Gastbetriebssystems nicht fortsetzen. Also werde ich einen Ersatzcomputer mit GUI verwenden, um die Installation des Gastbetriebssystems mit Hilfe eines VNC-Clients abzuschließen.
Wir sind hier mit dem Ubuntu-Server fertig. Die folgenden Schritte sollten auf einem Client-System durchgeführt werden.
2.3. Greifen Sie über den VNC-Client auf virtuelle Maschinen von entfernten Systemen zu
Gehen Sie zu den Remote-Systemen, die über eine grafische Desktop-Umgebung verfügen, und installieren Sie eine beliebige VNC-Client-Anwendung, falls sie noch nicht installiert ist. Ich habe einen Ubuntu-Desktop mit Remmina Remote-Desktop-Client installiert.
SSH in das KVM-Hostsystem:
$ ssh [email protected]
Hier,
- ostechnix ist der Name des Benutzers im KVM-Host (Ubuntu 20.04-Server)
- 192.168.225.52 ist die IP-Adresse des KVM-Hosts.
Finden Sie den VNC-Port, der von der laufenden VM verwendet wird, mit dem Befehl:
$ sudo virsh dumpxml Ubuntu-18.04 | grep vnc
Ersetzen Sie „Ubuntu-18.04“ durch den Namen Ihrer VM.
Beispielausgabe:
<graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'>
Die VNC-Portnummer ist 5900 .
Geben Sie den folgenden SSH-Portweiterleitungsbefehl auf Ihrem Terminal ein:
$ ssh [email protected] -L 5900:127.0.0.1:5900
Starten Sie die VNC-Client-Anwendung und wählen Sie das „VNC“-Protokoll und geben Sie dann „localhost:5900“ ein in die Adressleiste und drücken Sie schließlich ENTER:
Stellen Sie mithilfe des Remmina-Remote-Desktop-Clients eine Verbindung zu virtuellen Remote-Maschinen her
Die VNC-Anwendung zeigt Ihnen nun das Installationsfenster des vermuteten Betriebssystems.
Greifen Sie über den VNC-Client auf virtuelle Maschinen von entfernten Systemen zu
Fahren Sie einfach mit der Installation des Gastbetriebssystems fort. Schließen Sie nach Abschluss der Installation das VNC-Anwendungsfenster.
2.4. Laufende VMs auflisten
Führen Sie den Befehl „virt list“ aus, um die Liste der ausgeführten VMs anzuzeigen:
$ sudo virsh list
Beispielausgabe:
Id Name State ------------------------------ 2 Ubuntu-18.04 running
Wie Sie sehen können, wird derzeit Ubuntu 18.04 VM ausgeführt und seine ID ist 2.
2.5. VMs starten
Führen Sie zum Starten einer VM Folgendes aus:
$ sudo virsh start Ubuntu-18.04
Sie können auch die ID der VM verwenden, um sie zu starten:
$ sudo virsh start 2
2.6. VMs neu starten
So starten Sie eine laufende VM neu:
$ sudo virsh reboot Ubuntu-18.04
Oder,
$ sudo reboot 2
2.7. VMs pausieren
Gehen Sie wie folgt vor, um eine laufende VM anzuhalten:
$ sudo suspend Ubuntu-18.04
Oder,
$ sudo suspend 2
2.8. VMs fortsetzen
Gehen Sie wie folgt vor, um eine angehaltene VM fortzusetzen:
$ sudo virsh resume Ubuntu-18.04
Oder,
$ sudo resume 2
2.9. VMs herunterfahren
Gehen Sie wie folgt vor, um eine laufende VM auszuschalten:
$ sudo virsh shutdown Ubuntu-18.04
Oder,
$ sudo shutdown 2
2.10. VMs löschen
Gehen Sie wie folgt vor, um eine VM vollständig zu entfernen:
$ sudo virsh undefine Ubuntu-18.04
$ sudo virsh destroy Ubuntu-18.04
Virsh hat viele Befehle und Optionen. Um sie alle zu lernen, siehe virsh help section:
$ virsh --help
3. KVM-Gäste grafisch verwalten
Es ist fast unmöglich, sich alle virsh-Befehle zu merken. Wenn Sie ein angehender Linux-Administrator sind, fällt es Ihnen möglicherweise schwer, alle KVM-Verwaltungsvorgänge von der Befehlszeile aus durchzuführen. Keine Bange! Es sind einige webbasierte Tools verfügbar, um KVM-Gastmaschinen grafisch zu verwalten. Die folgenden Anleitungen erklären detailliert, wie man Kvm-Gäste mit Cockpit und Virt-Manager verwaltet.
- Verwalten Sie virtuelle KVM-Maschinen mit der Cockpit-Webkonsole
- So verwalten Sie virtuelle KVM-Maschinen mit Virt-Manager
4. Virsh-Konsolenzugriff für virtuelle Maschinen aktivieren
Nachdem ich die KVM-Gäste erstellt habe, kann ich über SSH, VNC-Client, Virt-Viewer, Virt-Manager und Cockpit-Webkonsole usw. auf sie zugreifen. Aber ich konnte nicht mit dem Befehl „virsh console“ auf sie zugreifen. Informationen zum Zugriff auf KVM-Gäste mithilfe der „virsh-Konsole“ finden Sie in der folgenden Anleitung:
- So aktivieren Sie den Zugriff auf die Virsh-Konsole für KVM-Gäste
Weitere Anleitungen zu KVM
- Erstellen Sie eine virtuelle KVM-Maschine mit dem Qcow2-Image unter Linux
- So migrieren Sie Virtualbox-VMs in KVM-VMs unter Linux
- Aktivieren Sie die UEFI-Unterstützung für virtuelle KVM-Maschinen in Linux
- So aktivieren Sie verschachtelte Virtualisierung in KVM unter Linux
- Statistiken von Virtualisierungssystemen mit Virt-top unter Linux anzeigen
- So finden Sie die IP-Adresse einer virtuellen KVM-Maschine
- So benennen Sie eine virtuelle KVM-Gastmaschine um
- Mit Libguestfs auf Disk-Images virtueller Maschinen zugreifen und sie ändern
- Schnelles Erstellen von Images virtueller Maschinen mit Virt-builder
- So retten Sie virtuelle Maschinen mit Virt-Rescue
- Erweitern der Festplattengröße virtueller KVM-Maschinen unter Linux
- Einen freigegebenen Ordner zwischen KVM-Host und Gast einrichten
- So ändern Sie den Standardspeicherort von KVM Libvirt
- [Gelöst] Zugriff auf Speicherdatei nicht möglich, Zugriff verweigert Fehler in KVM Libvirt
- So exportieren und importieren Sie virtuelle KVM-Maschinen unter Linux
Schlussfolgerung
In diesem Handbuch haben wir besprochen, wie KVM in Ubuntu 20.04 LTS Server Edition installiert und konfiguriert wird.
Wir haben uns auch angesehen, wie man virtuelle KVM-Maschinen über die Befehlszeile mit virsh
erstellt und verwaltet Tool und mit den GUI-Tools Cockpit und Virt-Manager.
Schließlich haben wir gesehen, wie der Zugriff auf die virsh-Konsole für virtuelle KVM-Maschinen aktiviert wird. Zu diesem Zeitpunkt sollten Sie über eine voll funktionsfähige Virtualisierungsumgebung auf Ihrem Ubuntu 20.04-Server verfügen.