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

Installieren und konfigurieren Sie KVM in Ubuntu 20.04 LTS

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.


Ubuntu
  1. So installieren und konfigurieren Sie KVM auf einem Ubuntu 18.04 LTS-Server

  2. So installieren und konfigurieren Sie Kubernetes (k8s) unter Ubuntu 18.04 LTS

  3. So installieren und konfigurieren Sie GitLab unter Ubuntu 18.04 LTS

  4. So installieren und konfigurieren Sie Ansible unter Ubuntu 18.04 LTS

  5. So installieren und konfigurieren Sie Fail2ban unter Ubuntu 20.04 LTS

So installieren und konfigurieren Sie GitLab CE unter Ubuntu 18.04 LTS

So installieren und konfigurieren Sie Docker-CE unter Ubuntu 18.04 LTS

So installieren und konfigurieren Sie Odoo ERP auf Ubuntu 20.04 LTS

Installieren und konfigurieren Sie Wildfly (JBoss) unter Ubuntu 18.04 LTS

So installieren und konfigurieren Sie MySQL in Ubuntu 20.04 LTS

So installieren Sie KVM auf Ubuntu 20.04 LTS