KVM steht für Kernel-based Virtual Machine.
Wie der Name schon sagt, handelt es sich hierbei um eine Kernel-basierte Virtualisierungstechnologie für Linux-Betriebssysteme auf Hardware, die Virtualisierung unterstützt.
Die Gastbetriebssysteme können vollständig virtualisiert oder paravirtualisiert sein.
Paravirtualisierung ermöglicht die Ausführung mehrerer Betriebssysteme auf einem Hardwaresatz, indem Ressourcen wie Prozessoren und Arbeitsspeicher effektiv genutzt werden. Bei der Para-Virtualisierung wird das Betriebssystem so modifiziert, dass es mit einer virtuellen Maschine arbeitet, wodurch die Ausführungszeit minimiert wird, die erforderlich ist, um die Operationen auszuführen, die sonst in einer virtuellen Umgebung schwierig auszuführen wären.
Dies ist der erste Artikel einer fortlaufenden Artikelserie über KVM.
1. Tools zum Verwalten von VMs
Das KVM-Paket enthält qemu-kvm, ein Hypervisor-spezifisches Tool zum Verwalten virtueller Maschinen.
Anstelle dieses Tools können Sie das als libvirt bekannte Softwarepaket verwenden, das eine bequemere und empfohlene Methode zum Verwalten virtueller Maschinen darstellt. Diese Software enthält eine API-Bibliothek, einen Daemon (libvirtd) und ein Befehlszeilenprogramm (virsh).
Sie können dieses libvirt-Tool verwenden, um alle vorhandenen virtuellen Maschinen zu verwalten, die auf KVM, Xen, VMWARE ESX usw. laufen. Eine vollständige Liste der unterstützten Hypervisoren finden Sie unter libvirt.
Es sind nur wenige andere Tools verfügbar, mit denen Sie Ihre Gast-VM verwalten können.
- virt-manager (Virtual Machine Manager):Ein grafisches Verwaltungstool für VM-Gäste.
- vm-install:Ein skriptbasiertes, menügesteuertes Dienstprogramm, das einen VM-Gast definiert und sein Betriebssystem installiert.
- virt-viewer:Ein X-Viewer-Client für VM-Gäste, der die TLS/SSL-Verschlüsselung der x509-Zertifikatsauthentifizierung und SASL-Authentifizierung unterstützt.
2. Überprüfen Sie die Virtualisierungsunterstützung auf Ihrer Hardware
Um zu überprüfen, ob Ihre CPU die Hardware-Virtualisierung unterstützt, führen Sie den folgenden Befehl aus.
# egrep '(vmx|svm)' /proc/cpuinfo
Wenn Sie in der Ausgabe unter Flags vmx oder svm sehen, unterstützt Ihre Hardware (CPU) die Virtualisierung.
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc archrfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm tpr_shadow vnmi flexprioritpt vpid .
3. KVM-Pakete installieren
Installieren Sie KVM-Pakete mit Ihrem Distributions-spezifischen Paketverwaltungstool (z. B. yum auf RedHat und CentOS).
# yum install kvm
Nachdem Sie das Haupt-kvm-Paket installiert haben, installieren Sie die folgenden KVM-bezogenen Pakete, die Ihnen helfen, die VMs auf Ihrem System zu verwalten.
# yum install qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools
Im Folgenden sind die KVM-bezogenen Pakete aufgeführt, die auf meinem Computer installiert sind. Die Versionsnummer auf Ihrem System kann leicht abweichen.
# rpm -qa | egrep "virt|kvm|qemu" python-virtinst-0.600.0-18.el6.noarch qemu-img-0.12.1.2-2.415.el6.x86_64 libvirt-0.10.2-29.el6.x86_64 virt-viewer-0.5.6-8.el6.x86_64 qemu-kvm-0.12.1.2-2.415.el6.x86_64 libvirt-python-0.10.2-29.el6.x86_64 virt-manager-0.9.0-19.el6.x86_64 virt-top-1.0.4-3.15.el6.x86_64 libvirt-client-0.10.2-29.el6.x86_64 gpxe-roms-qemu-0.9.7-6.10.el6.noarch virt-what-1.11-1.2.el6.x86_64
Nachdem die Pakete installiert sind, wird empfohlen, Ihren Computer neu zu starten, um alle KVM- und libvirt-Module zu laden, auch wenn Sie es mit dem Befehl modprobe neu laden können.
Sie können das Gastbetriebssystem mit dem Virtul Machine Manager installieren, der vm-install (für SUSE Linux) und virt-install (für RedHat).
Wenn Ihr Display eingerichtet ist (durch Excess, ReflectionX oder einige andere Display-Manager), bietet es eine grafische Oberfläche zum Erstellen eines Assistenten für virtuelle Maschinen, der Sie durch den Installationsprozess führt. Wenn die Anzeige nicht eingestellt ist, d. h. wenn die Maschine über ssh ohne X11-Weiterleitung verbunden wird, bietet vm-install einen Befehlszeilenassistenten, um interaktiv einen VM-Gast für die Installation einzurichten.
4. Netzwerkvoraussetzung zum Erstellen einer Gast-VM
Standardmäßig haben VMs nur Netzwerkzugriff auf andere VMs auf demselben Server (und auf den Host selbst). Wenn Sie möchten, dass die VMs Zugriff auf Ihr VLAN haben, müssen Sie wie hier erklärt eine Netzwerkbrücke auf dem Host erstellen.
Bearbeiten Sie /etc/sysconfig/network-scripts/ifcfg-eth0 und fügen Sie die Zeile „BRIDGE=br0“ hinzu (stellen Sie sicher, dass alle statischen IPs entfernt werden).
Erstellen Sie die Datei /etc/sysconfig/network-scripts/ifcfg-br0 und fügen Sie die Einträge wie unten gezeigt hinzu. Sie können statisch oder dhcp verwenden. Ich habe in diesem Fall eine statische IP verwendet.
DEVICE="br0" BOOTPROTO="static" IPADDR="xxx.xxx.xxx.xxx" NETMASK="255.255.255.0" ONBOOT="yes" TYPE="Bridge" NM_CONTROLLED="no"
Wenn Sie eine Firewall betreiben (wie iptables), erstellen Sie eine Regel, um überbrückten Datenverkehr zuzulassen.
5. Zusätzliche Voraussetzungen zum Erstellen einer Gast-VM
Der Standardspeicherort für die VM-Image-Dateien ist unter /var/lib/libvirt/images. Bitte stellen Sie sicher, dass unter diesem Verzeichnis ausreichend Platz vorhanden ist. Wenn nicht, können Sie die Image-Datei während der Erstellung der VM auf ein anderes Verzeichnis verweisen.
Aktivieren Sie die IP-Weiterleitung in /etc/sysctl.conf, indem Sie die folgende Zeile hinzufügen:
inet.ipv3.ip_forward=1
Wenn Sie SELinux während der Testphase ausgeführt haben, deaktivieren Sie es, indem Sie SELinux in den zulässigen Modus versetzen.
Starten Sie das System neu, nachdem die obigen Änderungen vorgenommen wurden.
6. Erstellen einer neuen Gast-VM mit virt-install
Das virt-install-Tool wird verwendet, um die VM zu erstellen. Dieses Tool kann sowohl im interaktiven als auch im nicht-interaktiven Modus verwendet werden.
Im folgenden Beispiel habe ich alle erforderlichen Werte zum Erstellen einer VM als Befehlszeilenparameter an den Befehl virt-install übergeben.
# virt-install \ -n myRHELVM1 \ --description "Test VM with RHEL 6" \ --os-type=Linux \ --os-variant=rhel6 \ --ram=2048 \ --vcpus=2 \ --disk path=/var/lib/libvirt/images/myRHELVM1.img,bus=virtio,size=10 \ --graphics none \ --cdrom /var/rhel-server-6.5-x86_64-dvd.iso \ --network bridge:br0
Im obigen virt-install-Befehl:
- n Name Ihrer virtuellen Maschine
- Beschreibung Eine gültige Beschreibung Ihrer VM. Zum Beispiel:Anwendungsserver, Datenbankserver, Webserver usw.
- os-Typ Betriebssystemtyp kann Linux, Solaris, Unix oder Windows sein.
- os-Variante Verteilungstyp für den obigen os-Typ. Für Linux kann es beispielsweise rhel6, centos6, ubuntu14, suse11, fedora6 usw. sein. Für Windows kann dies win2k, win2k8, win8, win7 sein
- Widder Speicher für die VM in MB
- vcpu Gesamtzahl der virtuellen CPUs für die VM.
- Festplattenpfad =/var/lib/libvirt/images/myRHELVM1.img,bus=virtio,size=10 Pfad, in dem die VM-Image-Dateien gespeichert sind. Größe in GB. In diesem Beispiel ist diese VM-Image-Datei 10 GB groß.
- Grafiken keine Dies weist virt-install an, anstelle des grafischen VNC-Fensters eine Textkonsole am seriellen Port der VM zu verwenden. Wenn Sie den xmanager eingerichtet haben, können Sie diesen Parameter ignorieren.
- CD-ROM Gibt den Speicherort des Installationsabbilds an. Sie können den NFS- oder HTTP-Installationsort angeben (anstelle von –cdrom). Beispiel:–location=http://.com/pub/rhel6/x86_64/
- Netzwerkbrücke:br0 Dieses Beispiel verwendet den Bridged-Adapter br0. Es ist auch möglich, Ihr eigenes Netzwerk an einem bestimmten Port anstelle eines Bridged-Adapters zu erstellen. Wenn Sie NAT verwenden möchten, verwenden Sie etwas wie unten für den Netzwerkparameter mit dem Namen des virtuellen Netzwerks, der als VMnetwork1 bekannt ist. Alle Netzwerkkonfigurationsdateien befinden sich unter /etc/libvirt/qemu/networks/ für die virtuellen Maschinen. Beispiel:–network network=VMnetwork1
7. Virtuelle Maschinen auflisten
Sie können das Grub-Menü mit „console=tty0 console=ttyS0,115200“ bearbeiten, um die Konsole für Ihren Bildschirm während des Installationsvorgangs in Ihrem SSH-Fenster anzuzeigen. Auf diese Weise können Sie das Betriebssystem über die geführte Installation installieren. Andernfalls können Sie den X-Server für die Anzeige verwenden.
Der folgende Befehl zeigt alle virtuellen Maschinen an, die auf Ihrem Betriebssystem installiert sind. In diesem Beispiel haben wir zwei VMs auf diesem System installiert.
# virsh list --all Id Name State ---------------------------------------------------- 1 dev-dev-vm running 2 myRHELVM1 running
8. VM-Konfigurationsdatei bearbeiten
Nachdem die VM erstellt wurde, sehen Sie die VM-Konfigurationsdatei am folgenden Speicherort. Der Name der Konfigurationsdatei ist der Name der VM mit der Erweiterung .xml.
# ls -l /etc/libvirt/qemu/myRHELVM1.xml -rw-------. 1 root root 2109 Oct 15 12:30 /etc/libvirt/qemu/myRHELVM1.xml
Sie sollten diese Datei nicht manuell bearbeiten und stattdessen den Befehl virsh edit verwenden. Gehen Sie wie folgt vor, um die Domäne (virtuelle Maschine) zu bearbeiten:
virsh edit myRHELVM1
9. Verbinden Sie sich mit der VM-Konsole
Verwenden Sie den folgenden Befehl, um eine Verbindung zur Konsole der virtuellen Maschine herzustellen. Sie können „Strg + ]“ verwenden, um die VM-Konsole zu verlassen.
virsh console myRHELVM1
Wenn auf Ihrem Host kein X-Server ausgeführt wird, ist die Verbindung zu einer seriellen VM-Konsole möglicherweise die einzige Möglichkeit, sich bei einer VM anzumelden, wenn kein Netzwerk verfügbar ist.
Das Einrichten des Zugriffs auf die Konsole einer VM unterscheidet sich nicht von einem physischen Server, bei dem Sie einfach die richtigen Kernel-Boot-Parameter zur VM hinzufügen.
Hängen Sie beispielsweise für eine RHEL-VM (oder CentOS-VM) die folgenden Parameter an die Kernel-Boot-Zeile in /etc/grub.conf an und starten Sie dann die VM neu.
console=tty0 console=ttyS0,115200
Alternativ können Sie auch die folgenden Einträge zur Datei /etc/grub.conf hinzufügen.
serial --unit=0 --speed=115200 terminal --timeout=5 serial console
10. VM-Informationen anzeigen
Um die VM-Informationen anzuzeigen, verwenden Sie den folgenden Befehl:
# virsh dominfo myRHELVM1 Id: 5 Name: myRHELVM1 UUID: 58083ae7-51db-50c3-64d8-bc4c49f642d0 OS Type: Linux State: running CPU(s): 2 CPU time: 207.6s Max memory: 2097152 KiB Used memory: 2097152 KiB Persistent: yes Autostart: disable Managed save: no Security model: selinux Security DOI: 0 Security label: system_u:system_r:svirt_t:s0:c698,c788 (permissive)
11. CPU- und Speicherauslastung der VM anzeigen
Um die CPU- und Speicherauslastung der virtuellen Maschine anzuzeigen, verwenden Sie den Befehl virt-top wie unten gezeigt.
# virt-top virt-top 07:14:44 - x86_64 8/8CPU 1600MHz 32094MB 3 domains, 2 active, 2 running, 0 sleeping, 0 paused, 1 inactive D:0 O:0 X:0 CPU: 0.1% Mem: 4096 MB (4096 MB by guests) ID S RDRQ WRRQ RXBY TXBY %CPU %MEM TIME NAME 5 R 0 0 1546 0 0.0 6.0 3:29.55 dev-dev-vm 8 R 0 0 1546 0 0.0 6.0 1:42.17 myRHELVM2 -
12. VM mit virsh herunterfahren, neu starten oder starten
Gehen Sie wie folgt vor, um die VM herunterzufahren:
# virsh shutdown myRHELVM1 Domain myRHELVM1 is being shutdown
Gehen Sie wie folgt vor, um die VM neu zu starten:
# virsh reboot myRHELVM1
Gehen Sie wie folgt vor, um die virtuelle Maschine zu starten oder einzuschalten. Sobald die VM gestartet ist, führen Sie „virsh list –all“ aus, um alle laufenden VMs anzuzeigen.
# virsh start myRHELVM1 Domain myRHELVM1 started
Im nächsten Artikel der KVM-Serie behandeln wir weitere Details zum Bearbeiten und Manipulieren von Konfigurationen auf einer einzelnen VM.