GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Installieren und konfigurieren Sie KVM in CentOS 8 Server

Diese Schritt-für-Schritt-Anleitung erklärt, was KVM ist und wie KVM im Betriebssystem CentOS 8 Linux installiert und konfiguriert wird.

Diese Anleitung wurde offiziell in der CentOS 8 Minimal Server Edition getestet. Es sollte jedoch auch in RHEL 8 und seinen Klonen wie AlmaLinux 8 und Rocky Linux 8 funktionieren.

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 bereitstellen, darunter Linux, Windows, BSD, Mac OS und viele mehr.

Lassen Sie uns nun sehen, wie KVM in CentOS 8 Linux installiert und konfiguriert wird.

Voraussetzungen

Stellen Sie vor der Installation von KVM zunächst sicher, dass Ihr System 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 CentOS 8 Server installieren und konfigurieren

Für die Zwecke dieses Leitfadens verwende ich das folgende System:

KVM-Virtualisierungsserver:

  • Betriebssystem – CentOS 8-Minimalserver (keine GUI)
  • IP-Adresse :192.168.225.53/24

Obwohl es auf CentOS 8 getestet wurde, sollte diese Anleitung auch auf RHEL 8 funktionieren.

1.1. KVM in CentOS 8 installieren

Hinweis: Alle in diesem Tutorial gegebenen Befehle sollten als root ausgeführt werden Benutzer. Wenn Sie sich als normaler Benutzer angemeldet haben, fügen Sie sudo hinzu vor allen Befehlen unten angeben.

Installieren Sie Kvm und alle erforderlichen Abhängigkeiten, um eine Virtualisierungsumgebung auf Ihrem CentOS 8-Server einzurichten, indem Sie den Befehl als root verwenden Benutzer:

# dnf install qemu-kvm libvirt virt-install

Hier,

  • emu-kvm - QEMU-Metapaket für KVM-Unterstützung (d. h. vollständige QEMU-Virtualisierung auf x86-Hardware),
  • libvirt - Programme für die libvirt-Bibliothek,
  • virt-install - Programme zum Erstellen und Klonen virtueller Maschinen.

Sobald KVM installiert ist, aktivieren und starten Sie libvertd Dienst (falls noch nicht gestartet):

# systemctl aktiviert libvirtd
# systemctl libvirtd starten

Sie können auch beide Befehle kombinieren und wie unten in einem Einzeiler ausführen:

# systemctl enable --now libvirtd

Überprüfen Sie den Status des libvirtd-Dienstes mit dem Befehl:

# systemctl status libvirtd

Beispielausgabe:

● libvirtd.service - Virtualisierungs-Daemon Geladen:geladen (/usr/lib/systemd/system/libvirtd.service; aktiviert; Herstellervoreinstellung:enable> Active:active (running) seit Mi 15.07.2020 14:27:32 IST; vor 5s Docs:man:libvirtd(8) https://libvirt.org Main PID:1097 (libvirtd) Tasks:17 (limit:32768) Memory:57.0M CGroup:/system.slice/libvirtd.service └─1097 / usr/sbin/libvirtd 15. Juli 14:27:28 centos8.ostechnix.lan systemd[1]:Virtualisierungs-Daemon gestartet...15. Juli 14:27:32 centos8.ostechnix.lan systemd[1]:Virtualisierungs-Daemon gestartet. 

Der libvertd-Dienst ist eingerichtet und läuft!

Überprüfen Sie, ob die KVM-Module geladen sind:

# lsmod | grep kvm

Beispielausgabe:

kvm_intel 294912 0kvm 786432 1 kvm_intelirqbypass 16384 1 kvm

Toll! KVM-Module werden geladen. Lassen Sie uns jetzt eine Netzwerkbrücke erstellen.

1.2. Bridge-Networking mit KVM in CentOS 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 jede verfügbare IPv4 binden oder IPv6 Adressen, 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 virtuellen KVM-Standardschnittstellen mit ip an Befehl:

# ip a

Beispielausgabe:

1:lo: 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 Geltungsbereich Host lo valid_lft für immer Preferred_lft für immer inet6 ::1/128 Geltungsbereich Host valid_lft für immer Preferred_lft für immer2:enp0s3: mtu 1500 qdisc fq_codel state UP Gruppe Standard qlen 1000 Link/Ether 08:00:27:b7:3a:84 brd ff:ff:ff:ff:ff:ff inet 192.168.225.52/24 brd 192.168.225.255 Geltungsbereich global dynamisch noprefixroute enp0s3 valid_lft 42217sec Preferred_lft 42217sec Inet6 2409:4072:918:98cf :ad3b:b969:8ec8:f9c7/64 Geltungsbereich global noprefixroute gültig_lft für immer bevorzugt_lft für immer inet6 fe80::b404:4d52:8bee:18bf/64 Geltungsbereich Link noprefixroute gültig_lft für immer bevorzugt_lft für immer3:enp0s8: mtu 1500 qdisc fq_codel state UP Gruppenstandard qlen 1000 link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff:ff4:enp0s9: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:41:91:4d brd ff:ff:ff:ff:ff:ff5:virbr0  : mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:5b:a4:cd brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 Geltungsbereich global virbr0 valid_lft forever Preferred_lft forever6:virbr0-nic: mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000 link/ether 52:54:00:5b:a4:cd brd ff:ff:ff:ff:ff:ff

Wie Sie sehen können, ist das KVM-Standardnetzwerk virbr0 verwendet 192.168.122.1/24 IP Adresse. Alle VMs verwenden eine IP-Adresse im 192.168.122.0/24 Der IP-Bereich und das Host-Betriebssystem sind unter 192.168.122.1 erreichbar .

Sie sollten in der Lage sein, per SSH auf das Host-Betriebssystem zuzugreifen (unter 192.168.122.1 ) aus dem Gastbetriebssystem und verwenden Sie scp um Dateien hin und her zu kopieren.

Es ist in Ordnung, wenn Sie nur vom Host selbst auf die VMs im Inneren zugreifen. Sie können jedoch nicht von anderen Remote-Systemen im Netzwerk auf die VMs zugreifen.

Weil sie einen anderen IP-Bereich verwenden, dh 192.168.225.0/24 in meinem Fall. 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 :

# vi /etc/sysctl.d/bridge.conf

Fügen Sie die folgenden Zeilen hinzu:

net.bridge.bridge-nf-call-ip6tables=0net.bridge.bridge-nf-call-iptables=0net.bridge.bridge-nf-call-arptables=0

Speichern und schließen Sie die Datei.

Erstellen Sie dann eine weitere Datei namens /etc/udev/rules.d/99-bridge.rules :

# 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 den 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: 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 :002:enp0s3: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:b7:3a:84 brd ff:ff:ff:ff:ff :ff3:enp0s8: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff :ff4:enp0s9: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:41:91:4d brd ff:ff:ff:ff:ff :ff5:virbr0 : mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000 link/ether 52:54:00:5b:a4:cd brd ff:ff:ff:ff:ff:ff6 :virbr0-nic : mtu 1500 qdisc fq_codel master virbr0 state DOWN mode DEFAULT group default qlen 1000 link/ether 52:54:00:5b:a4:cd brd ff:ff:ff:ff:ff:ff

Wie Sie in der obigen Ausgabe sehen, sind die Einträge virbr0 und virbr0-nic sind die KVM-Netzwerke.

Lassen Sie uns das Standard-KVM-Netzwerk mit dem Befehl entfernen:

# virsh net-destroy default

Beispielausgabe:

Netzwerkstandard zerstört

Definieren Sie das Standardnetzwerk mit dem Befehl:

# virsh net-undefine default

Beispielausgabe:

Netzwerkstandard wurde nicht definiert

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:

# ip link delete virbr0 type bridge
# IP-Link löschen virbr0-nic

Führen Sie nun ip link aus erneut, um zu überprüfen, ob die virbr0 und virbr0-nic Interfaces tatsächlich gelöscht:

# IP-Link

Beispielausgabe:

1:lo: 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 :002:enp0s3: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:b7:3a:84 brd ff:ff:ff:ff:ff :ff3:enp0s8: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff :ff4:enp0s9: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:41:91:4d brd ff:ff:ff:ff:ff :ff

Nun, die KVM-Standardnetzwerke sind weg.

Lassen Sie uns nun die öffentliche KVM-Bridge einrichten, die beim Erstellen einer neuen VM verwendet werden soll.

Erstellen Sie eine neue Bridged-Schnittstelle mit dem Namen br0 mit nmcli Befehl:

# nmcli connection add type bridge autoconnect yes con-name br0 ifname br0

Stellen Sie die IP-Adresse für die Bridge-Schnittstelle ein:

# nmcli connection modify br0 ipv4.addresses 192.168.225.53/24 ipv4.method manual

Gateway für die Bridge-Schnittstelle einstellen:

# nmcli-Verbindung ändern br0 ipv4.gateway 192.168.225.1

Stellen Sie DNS für die Bridge-Schnittstelle ein:

# nmcli-Verbindung ändern br0 ipv4.dns 192.168.225.1

Als nächstes müssen wir eine Ihrer Netzwerkschnittstellenkarten entfernen und als Slave zur Bridge hinzufügen.

Bitte beachten Sie, dass, wenn Ihr Server nur eine Netzwerkkarte hat und Sie über SSH auf den Server zugreifen, Ihre Verbindung nach dem Entfernen der Netzwerkkarte beendet wird. Ich empfehle Ihnen, die folgenden Schritte in der Konsole Ihres Servers auszuführen.

Zum Beispiel werde ich enp0s8 hinzufügen Interface als Slave zum Bridge-Interface br0 .

So entfernen Sie die Netzwerkschnittstelle enp0s8 , ausführen:

# nmcli connection del enp0s8

Ersetzen Sie enp0s8 mit eigener Netzwerkkarte.

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!

Als nächstes fügen Sie enp0s8 hinzu zur Brücke mit dem Befehl:

# nmcli connection add type bridge-slave autoconnect yes con-name enp0s8 ifname enp0s8 master br0

Hier die Bridge-Netzwerkschnittstelle br0 ist an die Netzwerkschnittstelle enp0s8 des Hosts angehängt . Ersetzen Sie die Namen der obigen Netzwerkschnittstellen, die mit Ihrem Netzwerk übereinstimmen.

Starten Sie den Netzwerkmanager neu, um die Änderungen zu übernehmen:

# systemctl NetworkManager neu starten

Wenn möglich, ist es besser, Ihr System neu zu starten:

# Neustart

Melden Sie sich bei Ihrem Server an und überprüfen Sie, ob die IP-Adresse der Bridge-Schnittstelle zugewiesen wurde:

$ ip a

Beispielausgabe:

1:lo: 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 Geltungsbereich Host lo valid_lft für immer Preferred_lft für immer inet6 ::1/128 Geltungsbereich Host valid_lft für immer Preferred_lft für immer2:enp0s3: mtu 1500 qdisc fq_codel Status DOWN Gruppe Standard qlen 1000 Link/Ether 08:00:27:b7:3a:84 brd ff:ff:ff:ff:ff:ff3:enp0s8 : mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000 link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff:ff4:enp0s9: mtu 1500 qdisc fq_codel state UP Gruppenstandard qlen 1000 Link/Ether 08:00:27:41:91:4d brd ff:ff:ff:ff:ff:ff5:br0 : mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff:ff inet  192.168.225.53/24 brd 192.168.225.255 Geltungsbereich global noprefixroute br0 valid_lft für immer Preferred_lft für immer inet6 2409:4072:6084:198:df03:d9ed:62eb:df34/64 Geltungsbereich global noprefixroute valid_lft für immer Preferred_lft für immer inet6 fe80::e8c8:e98b:7fef:5874/64 Geltungsbereich Link noprefixroute gültig_lft für immer bevorzugt_lft für immer

Wie Sie in der obigen Ausgabe sehen, ist die überbrückte Netzwerkschnittstelle br0 wird die IP-Adresse 192.168.225.53 zugewiesen und die enp0s8 Eintrag hat jetzt master br0 Eintrag. Es bedeutet, dass enp0s8 gehört zur Brücke.

Sie können auch bridge verwenden Befehl zum Anzeigen des Bridge-Status:

# Brückenlink zeigt br0 3:enp0s8: mtu 1500 master br0 State Forwarding Priority 32 kostet 100

Wir haben erfolgreich eine Bridge-Schnittstelle erstellt und sie ist aktiv. Wir müssen noch eine letzte Sache erledigen.

Wir sollten KVM so konfigurieren, dass diese Bridge-Schnittstelle als Standardschnittstelle verwendet wird. Erstellen Sie dazu ein XML Datei namens host-bridge.xml :

# vi host-bridge.xml

Fügen Sie die folgenden Zeilen hinzu:

 host-bridge  

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

Überprüfen Sie, ob die Bridge aktiv ist und mit dem Befehl gestartet wurde:

# virsh net-list --all

Beispielausgabe:

Name State Autostart Persistent---------------------------------------------------- ----- Host-Bridge aktiv ja ja

Herzliche Glückwünsche! Wir haben KVM erfolgreich auf dem Headless-Server CentOS 8 installiert und konfiguriert.

2. KVM-Gastmaschinen erstellen und verwalten

Wir können VMs entweder über die Befehlszeile oder mit beliebigen KVM-Verwaltungstools wie Cockpit und Virt-Manager erstellen und verwalten. Weitere Einzelheiten finden Sie in den folgenden Anleitungen.

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

3. 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 virsh console darauf zugreifen Befehl. 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 in diesem Blog

  • KVM in Ubuntu 20.04 Headless Server installieren und konfigurieren
  • KVM in OpenSUSE Tumbleweed installieren und konfigurieren
  • 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 der CentOS 8 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 unter Verwendung von GUI-Tools namens Cockpit und Virt-Manager.

Schließlich haben wir gesehen, wie man den virsh-Konsolenzugriff für virtuelle KVM-Maschinen aktiviert.

Zu diesem Zeitpunkt sollten Sie über eine voll funktionsfähige Virtualisierungsumgebung auf Ihrem CentOS 8-Server verfügen.


Cent OS
  1. Installieren und konfigurieren Sie HAProxy unter RHEL 8 / CentOS 8 Linux

  2. So installieren und konfigurieren Sie VNC unter CentOS 7

  3. FTP-Server unter CentOS 7 / RHEL 7 installieren und konfigurieren – (vsftpfd)

  4. So installieren und konfigurieren Sie Gitlab unter CentOS 8

  5. So installieren und konfigurieren Sie Postgres 13 auf Centos 8

So installieren und konfigurieren Sie Zimbra Multi Server unter CentOS 7

So installieren und konfigurieren Sie den VNC-Server in CentOS 7 / RHEL 7

Installieren Sie den PXE-Server und konfigurieren Sie den PXE-Client unter CentOS 7

Check_MK Server auf CentOS 7 installieren und konfigurieren

So installieren und konfigurieren Sie Memcached unter CentOS 8

So installieren und konfigurieren Sie den DHCP-Server auf Centos 8