{"id":10422,"date":"2023-05-04T16:21:05","date_gmt":"2023-05-04T14:21:05","guid":{"rendered":"https:\/\/u-labs.de\/portal\/?p=10422"},"modified":"2023-06-25T10:33:25","modified_gmt":"2023-06-25T08:33:25","slug":"qemu-kvm-libvirt-fuer-einsteiger-so-richtest-du-deine-erste-virtuelle-maschine-ein-mit-grafischer-oberflaeche","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/qemu-kvm-libvirt-fuer-einsteiger-so-richtest-du-deine-erste-virtuelle-maschine-ein-mit-grafischer-oberflaeche\/","title":{"rendered":"QEMU\/KVM &#038; Libvirt f\u00fcr Einsteiger: So richtest du deine erste virtuelle Maschine ein (mit grafischer Oberfl\u00e4che)"},"content":{"rendered":"<p>KVM, QEMU und Libvirt sind wohl die Standard-Werkzeuge zur Virtualisierung unter Linux. Dieser Artikel wirft einen grunds\u00e4tzlichen Blick auf die Vorteile der Technologie. Der Kern besteht darin, in die Grundlagen zur Virtualisierung mit den drei Werkzeugen aufzuzeigen: Dazu werden diese zun\u00e4chst installiert. Es folgt die Einrichtung sowie Erstellung einer ersten VM, deren Zustand wir mit einem Snapshot speichern.<\/p>\n<h2 class=\"wp-block-heading\">Wie funktioniert Virtualisierung grunds\u00e4tzlich?<\/h2>\n<p>Durch Virtualisierung lassen sich komplette Betriebssysteme in Virtuellen Maschinen (VMs) voneinander isoliert auf dem gleichen PC bzw. Server betreiben. Vereinfacht kann man es sich wie ein Mehrfamilienhaus (Host-System) vorstellen, bei dem jede Partei (VM) eine eigenst\u00e4ndige Wohnung besitzt, die weitgehendst unabh\u00e4ngig von den anderen ist. <\/p>\n<p>Virtualisierung kann in einer ganzen Reihe von Szenarien verschiedene Vorteile bieten, etwa:<\/p>\n<ul class=\"wp-block-list\">\n<li>Die Installation\/Einrichtung l\u00e4sst sich automatisieren, ohne dass jemand physischen Zugriff ben\u00f6tigt, um etwa von einem USB-Stick zu booten<\/li>\n<li>Neue Programme oder sogar Betriebssysteme gefahrlos ausprobieren, ohne sein Hauptsystem zu <em>verbasteln<\/em> oder gar zu besch\u00e4digen.<\/li>\n<li>Durch <em>Snapshots<\/em> kann man den Zustand speichern und jederzeit wiederherstellen. Praktisch, wenn man etwas testet und somit die \u00c4nderungen per Klick bzw. Befehl wieder r\u00fcckg\u00e4ngig machen kann.<\/li>\n<li>Einfaches Klonen\/Verschieben<\/li>\n<li>Saubere Trennung verschiedener Systeme, etwa Test- und Produktivumgebung.<\/li>\n<li>Paralleler Betrieb mehrerer Betriebssysteme, z.B. Eine Windows-VM unter GNU\/Linux, um einzelne Programme ohne Dualboot nutzen zu k\u00f6nnen, die dort noch nicht nativ laufen.<\/li>\n<li>Effektivere Nutzung der Ressourcen gegen\u00fcber mehreren Hardware-Systemen (v.a. im Server-Bereich)<\/li>\n<li>Kontrolle \u00fcber die Hardware &#8211; man kann die virtuelle Hardware jeder VM anpassen und damit beispielsweise alte Betriebssysteme wie Windows XP relativ gefahrlos betreiben, in dem man ihnen den Internetzugriff verweigert.<\/li>\n<li>Analyse von wenig vertrauensw\u00fcrdigen Programmen und Schadsoftware (heutzutage teilweise nur eingeschr\u00e4nkt, da manche Schadprogramme sich in VMs anders verhalten)<\/li>\n<li>Je nach Nutzung gibt es noch weitere Vorteile. Beispielsweise kann man hochverf\u00fcgbare Cluster aus physischen Servern erstellen und VMs auf ein anderes System verschieben, wenn ein Host aufgrund von Wartung neu gestartet werden muss oder ausgefallen ist.<\/li>\n<\/ul>\n<p>Es \u00fcberrascht daher nicht, dass sich Virtualisierung vor allem bei Servern schon vor etlichen Jahren durchgesetzt hat. Einen virtuellen Server kann man sich f\u00fcr wenige Euro im Monat mieten, da er zusammen mit hunderten anderen auf einer physischen Maschine l\u00e4uft. Zwar kann man sich auch eine physische Maschine mieten &#8211; diese ist jedoch deutlich teurer und f\u00fcr viele Anwendungsf\u00e4lle ben\u00f6tigt man die vergleichsweise hohe Leistung gar nicht. Systeme in <em>der<\/em> <em>Cloud<\/em> kann man als n\u00e4chste Stufe davon sehen. Sie sind nahezu immer virtualisiert, gerade <em>Cloudserver<\/em> bestehen im Endeffekt oft aus VMs mit ein paar zus\u00e4tzlichen Funktionen.<\/p>\n<p>Aber auch auf dem Desktop kann Virtualisierung Sinn machen. F\u00fcr beide Bereiche stehen einige Werkzeuge bereit, die alle grundlegende Funktionen beherrschen. Im Detail gibt es Unterschiede, wodurch sie sich f\u00fcr bestimmte Szenarien mehr oder weniger eignen. So ist KVM ein Typ 1 Hypervisor, der im Gegensatz zu Typ 2 den Umweg \u00fcber das Betriebssystem spart.<\/p>\n<h2 class=\"wp-block-heading\">Was sind KVM, QEMU und Libvirt?<\/h2>\n<p><strong>KVM<\/strong> (Kernel-based Virtual Machine) ist eine Sammlung von Modulen zu Virtualisierung, die bereits seit 2007 mit Version 2.6.20 fester Bestandteil des Linux-Kernels sind. Urspr\u00fcnglich wurde es f\u00fcr die X86-Architektur entwickelt, mittlerweile unterst\u00fctzt es auch weitere wie unter anderem ARM. Wichtig zu verstehen ist: KVM stellt keine Emulation f\u00fcr VMs bereit, sondern lediglich die daf\u00fcr notwendige Low-Level Technologie im Kernel.<\/p>\n<p>Um diese als vollwertige Virtualisierungssoftware praktisch nutzen zu k\u00f6nnen, wird daher <strong>QEMU<\/strong> ben\u00f6tigt. Es unterst\u00fctzt zahlreiche Funktionen, darunter u.a. auch Emulation. So k\u00f6nnen beispielsweise X86 Programme auf ARM-Systemen betrieben werden.<\/p>\n<p><strong>Libvirt<\/strong> bietet eine einheitliche Schnittstelle f\u00fcr eine ganze Reihe an Hypervisoren: QEMU, Xen, Vmware, Hyper-V und zahlreiche weitere. Technisch ist es daher nicht zwingend notwendig, wenn man sich nur auf einen Hypervisor beschr\u00e4nkt. Allerdings hat sie den Vorteil der Abstraktionsschicht, wodurch der Hypervisor austauschbar wird. Das ist beispielsweise dann n\u00fctzlich, wenn man verschiedene Technologien unterst\u00fctzen m\u00f6chte &#8211; etwa in Terraform. Im besten Falle muss nicht f\u00fcr jede eine Implementierung entwickelt werden. Sondern man integriert Libvirt, was sich dann selbst darum k\u00fcmmert, wie QEMU, Vmware oder andere Plattformen angesteuert werden. Alle drei Komponenten sind quelloffen.<\/p>\n<p>QEMU ist mit KVM ein Typ 1 Hypervisor, d.H. er hat direkten Zugriff auf die physische Hardware. Die Leistung wird daher i.d.R. besser sein, als bei Typ 2 wie z.B. VirtualBox, welches als Anwendungssoftware auf das Betriebssystem aufsetzt. Es muss daher den <em>Umweg<\/em> \u00fcber das Betriebssystem gehen, um z.B. auf Prozessor oder Speicher zugreifen zu k\u00f6nnen.<\/p>\n<h2 class=\"wp-block-heading\">Voraussetzungen<\/h2>\n<p>Da in jeder VM ein komplettes Betriebssystem l\u00e4uft, sollte euer Host-System \u00fcber mindestens 4 Kerne und 8 GB Arbeitsspeicher verf\u00fcgen. Mehr ist tendenziell besser. Abh\u00e4ngig davon was in den VMs laufen soll, werden deutlich \u00fcppigere Ressourcen ben\u00f6tigt. Mindestens 50 GB freien Speicherplatz ist zudem ebenfalls wichtig, da ihr einige Gigabyte f\u00fcr virtuelle Festplatte und Installationsmedien ben\u00f6tigen werdet.<\/p>\n<p>In diesem Artikel wird Debian 11 als Host-System verwendet. Unter anderen Debian-Derivaten wie Ubuntu funktioniert es in der Regel identisch. Auch <\/p>\n<p>VMX ist das Virtualisierungsmodul f\u00fcr Intel, SVM hei\u00dft es auf Systemen mit AMD-Prozessor. Wird eine Zahl gr\u00f6\u00dfer 0 zur\u00fcckgegeben, unterst\u00fctzt euer System eine der beiden Virtualisierungstechnologien und die jeweilige ist aktiv &#8211; KVM kann also genutzt werden. <\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"\" data-line=\"\">[daniel@dani-pc ~]$ grep -Ec &#039;(vmx|svm)&#039; \/proc\/cpuinfo \n24<\/code><\/pre>\n<p>Selbst viele 10 bis 15 Jahre alte Systeme sind dazu f\u00e4hig. Nur extrem alte Hardware eignet sich technisch nicht zur Virtualisierung. Bei solchen Oldtimern ist die praktische Tauglichkeit meistens ohnehin stark eingeschr\u00e4nkt. Solltet ihr 0 erhalten, ist die Funktion in den meisten F\u00e4llen also lediglich im BIOS\/UEFI abgeschaltet. Wie ihr dies konkret aktiviert, variiert je nach Hersteller und Modell. \u00dcber die Dokumentation oder eine Internetrecherche erfahrt ihr, mit welcher Tastenkombination das BIOS aufgerufen wird. Die Doku zeigt meistens auch, wo die Virtualisierungsfunktionen zu finden sind. Alternativ kann man sich in den Men\u00fcs selbst auf die Suche machen. Meist findet man diese in einem Bereich zu Hardware oder dem Prozessor. Teilweise auch im Registern die <strong>Fortgeschritten<\/strong> oder <strong>Advanced<\/strong> hei\u00dfen, wie bei diesem HP:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/05\/hp-uefi-small.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"311\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/05\/hp-uefi-small-1024x311.jpg\" alt=\"\" class=\"wp-image-10475\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/05\/hp-uefi-small-1024x311.jpg 1024w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/05\/hp-uefi-small-300x91.jpg 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/05\/hp-uefi-small-768x233.jpg 768w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/05\/hp-uefi-small-1536x466.jpg 1536w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/05\/hp-uefi-small.jpg 1628w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n<h2 class=\"wp-block-heading\">Installation<\/h2>\n<p>Je nach Anforderungen und Umgebung m\u00f6chte man ggf. die VMs auf einen eigenst\u00e4ndigen VM-Host betreiben und \u00fcber eine Arbeitsstation darauf zugreifen. Da Libvirt eine Client-Server Architektur besitzt, ist das m\u00f6glich. In diesem einfachen Beispiel wird alles auf dem gleichen Host installiert, d.H. sowohl der Server, als auch Client. F\u00fcr Testzwecke und eine lokale Arbeitssstation ausreichend. Hier k\u00f6nnen wir mit <strong>virt-manager<\/strong> eine grafische Oberfl\u00e4che mitinstallieren, <\/p>\n<p>Das Paket <strong>qemu-utils<\/strong> wird f\u00fcr alle virtuellen Festplattenformate au\u00dfer Raw ben\u00f6tigt, etwa Qcow2. Verwendet man <strong>&#8211;no-install-recommends<\/strong>, sollte man sich bewusst sein, dass auch andere optionale Abh\u00e4ngigkeiten wie z.B. Dnsmasq f\u00fcr DNS-Abfragen nicht installiert werden! <strong>apt-cache depends &lt;paket&gt; <\/strong>(z.B. <strong>apt-cache depends libvirt-daemon-system<\/strong>) liefert eine Liste aller Abh\u00e4ngigkeiten. Vor allem f\u00fcr Einsteiger ist daher der erste Weg zu empfehlen, der im Zweifel ein paar Pakete zus\u00e4tzlich installiert, die nicht ben\u00f6tigt werden.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\"># Installiert alle Abhaengigkeiten - fuer Einsteiger\/Workstations\nsudo apt install qemu-system libvirt-daemon-system qemu-utils virt-manager\n\n# Verhindert die Installation grafischer Pakete - Auf Servern zu empfehlen (ohne virt-manager GUI)\nsudo apt install --no-install-recommends qemu-system libvirt-clients libvirt-daemon-system qemu-utils dnsmasq-base\n\n# Ausfuehrliche Pruefung des Systems auf Kompatibilitaet nach Paketinstallation\nsudo virt-host-validate<\/code><\/pre>\n<p>Damit der aktuell angemeldete Benutzer Libvirt vollst\u00e4ndig nutzen kann, muss er in die Gruppe <strong>libvirt<\/strong> aufgenommen werden. Anschlie\u00dfend einmal an- und wieder abmelden, um die Gruppen neu zu laden, oder direkt das gesamte System neu starten.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">sudo usermod -a -G libvirt $USER\nsudo usermod -a -G kvm $USER<\/code><\/pre>\n<p>Der Daemon <strong>libvirtd<\/strong> wird unter Debian automatisch gestartet und geladen:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">$ sudo systemctl status libvirtd\n\u25cf libvirtd.service - Virtualization daemon\n     Loaded: loaded (\/lib\/systemd\/system\/libvirtd.service; enabled; vendor preset: enabled)\n     Active: active (running) since Sun 2023-04-30 12:03:06 CEST; 3min 46s ago<\/code><\/pre>\n<p>Sollte dies unter anderen Distributionen nicht der Fall sein, k\u00f6nnen wir dies von Hand nachholen:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">sudo systemctl enable --now libvirtd<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Einrichten des ersten Virtuellen PCs<\/h2>\n<p>Zun\u00e4chst ben\u00f6tigt ihr ein Abbild des Betriebssystems, welches als Gast in der VM installiert werden soll. \u00dcblicherweise liegt dies im ISO-Format vor. Alternativ werden teils aus vorbereitete virtuelle Festplatten angeboten. Im Folgen f\u00fchren wir eine Installation mit dem <a href=\"https:\/\/kubuntu.org\/getkubuntu\/\" data-type=\"URL\" data-id=\"https:\/\/kubuntu.org\/getkubuntu\/\" target=\"_blank\" rel=\"nofollow\">ISO-Abbild von Kubuntu Desktop<\/a> durch. Aufgrund der Virtualisierung kann jede beliebige Distribution genutzt werden und auch propriet\u00e4re Betriebssysteme wie Microsoft Windows sind m\u00f6glich.<\/p>\n<p>Sowohl die Einrichtung als auch Verwaltung k\u00f6nnen per Kommandozeile oder grafischer Oberfl\u00e4che durchgef\u00fchrt werden. F\u00fcr Einsteiger empfiehlt sich die grafische Variante \u00fcber <strong>virt-manager<\/strong> von Red Hat, der sich \u00fcber den gleichnamigen Befehl starten l\u00e4sst. \u00dcber den Knopf links oben unter <em>Datei<\/em> l\u00e4sst sich die erste VM anlegen.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"553\" height=\"181\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-2.png\" alt=\"\" class=\"wp-image-10426\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-2.png 553w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-2-300x98.png 300w\" sizes=\"auto, (max-width: 553px) 100vw, 553px\" \/><\/a><\/figure>\n<\/div>\n<p>Die korrekte Option f\u00fcr das ISO-Abbild ist <strong>Lokales Installationsmedium<\/strong>. Da wir in diesem Falle ein X86-System installieren, muss an dem passenden Standardwert f\u00fcr die Architekturoptionen nichts ver\u00e4ndert werden. Im zweiten Schritt fragt der Assistent nach dem ISO-Installationsmedium. Grunds\u00e4tzlich werden alle Dateien in Pools organisiert. <\/p>\n<p>Es gibt verschiedene Typen, so kann ein Pool etwa auf einem bestimmten Laufwerk oder Netzwerk-Dateisystem liegen &#8211; eine ganze Reihe unterschiedlicher Typen werden unterst\u00fctzt. Dies w\u00fcrde an der Stelle den Rahmen sprengen, f\u00fcr den Einstieg reicht <strong>dir<\/strong> v\u00f6llig aus: Hier werden die Dateien in einem Verzeichnispfad abgelegt. Standardm\u00e4\u00dfig existiert ein Pool namens <strong>default<\/strong>, dessen Daten in <strong>\/var\/lib\/libvirt\/images<\/strong> liegen. Theoretisch kann man diesen nutzen. Zur besseren \u00dcbersichtlichkeit empfehle ich, einen eigenen Pool f\u00fcr Iso-Abbilder anzulegen. In diesem Beispiel wird er im Heimverzeichnis des U-Labs Benutzers gespeichert.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_15-01-53.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"549\" height=\"291\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_15-01-53.jpg\" alt=\"\" class=\"wp-image-10428\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_15-01-53.jpg 549w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_15-01-53-300x159.jpg 300w\" sizes=\"auto, (max-width: 549px) 100vw, 549px\" \/><\/a><\/figure>\n<\/div>\n<p>Nachdem ihr den gew\u00fcnschten Pool (<strong>default<\/strong> oder den von euch erstellten) links angeklickt habt, wird mit dem Knopf <strong>Lokal durchsuchen<\/strong> unten die zuvor heruntergeladene ISO-Datei ausgew\u00e4hlt. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"754\" height=\"342\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-3.png\" alt=\"\" class=\"wp-image-10427\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-3.png 754w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-3-300x136.png 300w\" sizes=\"auto, (max-width: 754px) 100vw, 754px\" \/><\/a><\/figure>\n<\/div>\n<p>Kann das Betriebssystem nicht automatisch erkannt werden (<strong>None detected<\/strong>), entfernt ihr den Haken bei <strong>Automatically detect from the installation media\/source<\/strong> darunter und sucht ein passendes heraus. Steht es nicht zur Auswahl, ein m\u00f6glichst aktuelles nehmen &#8211; zur Not mit <strong>Generic OS (generic) <\/strong>ein allgemeines.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"504\" height=\"530\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-4.png\" alt=\"\" class=\"wp-image-10429\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-4.png 504w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-4-285x300.png 285w\" sizes=\"auto, (max-width: 504px) 100vw, 504px\" \/><\/a><\/figure>\n<\/div>\n<p>Schritt 3 legt Prozessorkerne und Arbeitsspeicher fest. Sinnvolle Werte h\u00e4ngen vom Gast-Betriebssystem, dessen Einsatzzweck sowie den verf\u00fcgbaren Ressourcen auf dem Host ab. Grafische Oberfl\u00e4chen ben\u00f6tigen beispielsweise mehr Speicher und Leistung, hier sollten es mindestens 2 Kerne und 2 GB Arbeitsspeicher sein.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_15-15-08.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"504\" height=\"256\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_15-15-08.jpg\" alt=\"\" class=\"wp-image-10430\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_15-15-08.jpg 504w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_15-15-08-300x152.jpg 300w\" sizes=\"auto, (max-width: 504px) 100vw, 504px\" \/><\/a><\/figure>\n<\/div>\n<p>Nun folgt die virtuelle Festplatte, darauf wird die VM nach der Installation ihre Daten abspeichern. Die Gr\u00f6\u00dfe h\u00e4ngt wieder vom Einsatzzweck ab. Durch die Option <strong>Datentr\u00e4ger Image f\u00fcr die virtuelle Maschine erstellen<\/strong> legt der Assistent automatisch eine virtuelle Festplatte mit der angegebenen Gr\u00f6\u00dfe im Pool <strong>default<\/strong> an. F\u00fcr den Anfang ist das v\u00f6llig ausreichend. Wer mehrere Pools nutzt bzw. selbst kontrollieren m\u00f6chte, wo die Daten landen, ist mit <strong>Benutzerdefinierten Speicher ausw\u00e4hlen oder erstellen<\/strong> besser beraten. \u00dcber <strong>Verwalten<\/strong> erscheint die Pool-Verwaltung, die bereits zu Beginn f\u00fcr das ISO-Abbild diente. Dort m\u00fcsste in diesem Falle ober den Plus-Knopf neben <strong>Datentr\u00e4ger<\/strong> von Hand eine VHD erstellt werden. Dieser Weg erlaubt zudem eine Anpassung des Formats, wobei am <strong>qcow2<\/strong> in den meisten F\u00e4llen wenig auszusetzen ist.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_15-17-56.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"504\" height=\"300\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_15-17-56.jpg\" alt=\"\" class=\"wp-image-10431\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_15-17-56.jpg 504w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_15-17-56-300x179.jpg 300w\" sizes=\"auto, (max-width: 504px) 100vw, 504px\" \/><\/a><\/figure>\n<\/div>\n<p>Abschlie\u00dfend noch die Frage nach dem Name. Standardm\u00e4\u00dfig wird der OS-Typ eingetragen. Dieser ist hier nicht nur falsch (Ubuntu 22 stand ja noch nicht zur Auswahl). Generell sagt er wenig aus, sp\u00e4testens wenn mehrere VMs angelegt wurden, findet man sich schwer zurecht. Zu empfehlen ist daher eine Bezeichnung, die etwas \u00fcber den Zweck der Maschine aussagt.<\/p>\n<p>Abh\u00e4ngig davon ist die eingeklappte Netzwerk Auswahl interessant: NAT ist die Vorauswahl. Dadurch hat die VM Zugriff \u00fcber den Host Zugriff auf euer Netzwerk und damit wahrscheinlich auch das Internet, ohne jedoch eine IP-Adresse vom Router zu erhalten. Letzteres l\u00e4sst sich \u00fcber eine Netzwerk-Br\u00fccke (<strong>Bridged device<\/strong>) \u00e4ndern. Dies ist jedoch eher ein erweitertes Thema, f\u00fcr erste Versuche ist NAT in Ordnung.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_15-29-24.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"504\" height=\"391\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_15-29-24.jpg\" alt=\"\" class=\"wp-image-10432\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_15-29-24.jpg 504w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_15-29-24-300x233.jpg 300w\" sizes=\"auto, (max-width: 504px) 100vw, 504px\" \/><\/a><\/figure>\n<\/div>\n<p>Aufmerksamen Beobachtern wird aufgefallen sein: Das <strong>default<\/strong> genannte Standard NAT Netzwerk ist inaktiv und w\u00fcrde daher unserer VM keinen Netzwerkzugang verschaffen. Der Assistent hat das ebenfalls gemerkt. Die Frage nach der Aktivierung sollte daher mit <strong>Ja<\/strong> beantwortet werden.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"529\" height=\"176\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-5.png\" alt=\"\" class=\"wp-image-10433\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-5.png 529w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-5-300x100.png 300w\" sizes=\"auto, (max-width: 529px) 100vw, 529px\" \/><\/a><\/figure>\n<\/div>\n<p>Wenige Sekunden sp\u00e4ter ist die VM angelegt und erscheint in der \u00dcbersicht der virtuellen Maschinenverwaltung. Au\u00dferdem \u00f6ffnet sich ein Fenster, in dem die Maschine bootet.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-6.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"420\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-6-1024x420.png\" alt=\"\" class=\"wp-image-10434\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-6-1024x420.png 1024w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-6-300x123.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-6-768x315.png 768w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-6-1536x629.png 1536w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-6.png 1596w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n<p>Von hier an l\u00e4uft die Installation des Gast-Betriebssystems ganz normal, wie man es von einer physischen Installation her gewohnt ist: Der Assistent fragt einige Informationen ab, kopiert die Daten, l\u00e4dt ggf. noch Aktualisierungen herunter und wir haben ein vollwertiges, aber isoliertes System in der VM.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-7.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"862\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-7-1024x862.jpg\" alt=\"\" class=\"wp-image-10436\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-7-1024x862.jpg 1024w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-7-300x252.jpg 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-7-768x646.jpg 768w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-7.jpg 1028w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n<p>\u00dcber das Men\u00fc <strong>Anzeige<\/strong> k\u00f6nnt ihr mit <strong>Details<\/strong> s\u00e4mtliche Einstellungen einsehen und in ausgeschaltetem Zustand auch bearbeiten. <\/p>\n<h2 class=\"wp-block-heading\">Weitere Funktionen: Snapshots<\/h2>\n<p>Eine grundlegende, hilfreiche Funktion von VMs sind Snapshots: Sie speichern den Stand des kompletten Gast-Systems. Vor \u00c4nderungen oder Tests macht es daher Sinn, welche anzulegen. Daf\u00fcr \u00f6ffnet man die VM und klickt oben auf <strong>Anzeigen &gt; Snapshots<\/strong> und unten auf das Plus. Name sowie Beschreibung sind frei w\u00e4hlbar und sollten so gestaltet werden, damit man sie zuordnen kann.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_16-32-31.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"587\" height=\"710\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_16-32-31.jpg\" alt=\"\" class=\"wp-image-10439\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_16-32-31.jpg 587w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_16-32-31-248x300.jpg 248w\" sizes=\"auto, (max-width: 587px) 100vw, 587px\" \/><\/a><\/figure>\n<\/div>\n<p>Nun legen wir zur Demonstration eine Datei im Downloads-Ordner an:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-9.png\"><img loading=\"lazy\" decoding=\"async\" width=\"708\" height=\"152\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-9.png\" alt=\"\" class=\"wp-image-10440\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-9.png 708w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-9-300x64.png 300w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><\/a><\/figure>\n<\/div>\n<p>Nach dem zur\u00fcckspielen des Snapshots mittels <strong>Schnappschuss starten<\/strong> und der Best\u00e4tigung ist die Datei verschwunden &#8211; die gesamte VM wurde auf dessen Stand zur\u00fcckgesetzt. Alle \u00c4nderungen seit dem letzten Snapshot sind damit r\u00fcckg\u00e4ngig gemacht worden. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_16-36-08.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"532\" height=\"154\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_16-36-08.jpg\" alt=\"\" class=\"wp-image-10442\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_16-36-08.jpg 532w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/Bildschirmfoto_2023-04-30_16-36-08-300x87.jpg 300w\" sizes=\"auto, (max-width: 532px) 100vw, 532px\" \/><\/a><\/figure>\n<\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-10.png\"><img loading=\"lazy\" decoding=\"async\" width=\"708\" height=\"119\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-10.png\" alt=\"\" class=\"wp-image-10443\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-10.png 708w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2023\/04\/grafik-10-300x50.png 300w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><\/a><\/figure>\n<\/div>\n<p>Zu empfehlen ist generell <a href=\"https:\/\/www.qemu.org\/docs\/master\/interop\/qemu-ga.html\" data-type=\"URL\" data-id=\"https:\/\/www.qemu.org\/docs\/master\/interop\/qemu-ga.html\" target=\"_blank\" rel=\"nofollow\">die Installation des QEMU Gast-Agents<\/a> innerhalb der VM. Er stellt dem Host-System Informationen zur Verf\u00fcgung und erm\u00f6glicht ein paar weitere Funktionen, die ohne Zugriff auf den Gast nicht m\u00f6glich sind. Der Agent befindet sich bei einigen Distributionen in den offiziellen Paketquellen, etwa unter Debian\/Ubuntu:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">sudo apt install qemu-guest-agent<\/code><\/pre>\n<p>Unter Windows bieten <a href=\"https:\/\/pve.proxmox.com\/wiki\/Windows_VirtIO_Drivers\" data-type=\"URL\" data-id=\"https:\/\/pve.proxmox.com\/wiki\/Windows_VirtIO_Drivers\" target=\"_blank\" rel=\"nofollow\">die VirtIO-Treiber<\/a> bessere Leistung und sollte in der VM installiert werden. Au\u00dferdem verf\u00fcgt <a href=\"https:\/\/altechnative.net\/virtualized-windows-10-idle-cpu-consumption\/\" data-type=\"URL\" data-id=\"https:\/\/altechnative.net\/virtualized-windows-10-idle-cpu-consumption\/\" target=\"_blank\" rel=\"nofollow\">Windows \u00fcber einen Bug<\/a>, der sich mit einer speziellen virtuellen Uhr l\u00f6sen l\u00e4sst. Unter Umst\u00e4nden f\u00fchrt dieser zu einer hohen CPU-Auslastung im Leerlauf.<\/p>\n<h2 class=\"wp-block-heading\">Ein Ausflug auf die Kommandozeile<\/h2>\n<p>QEMU enth\u00e4lt spezifische Kommandozeilenwerkzeuge f\u00fcr die eigene Plattform. Libvirt dagegen bringt mit virsh ein \u00fcbergreifendes Tool zur Verwaltung von VMs mit. Dies soll an dieser Stelle erw\u00e4hnt werden, da man es zur Integration oder Automatisierung verwenden kann. Oder schlichtweg zur grunds\u00e4tzlichen Verwaltung, wenn man die grafische Verwaltungsoberfl\u00e4che nicht nutzen kann oder m\u00f6chte.<\/p>\n<p>Wissenswert ist zudem, dass die gesamte Konfiguration aller Komponenten intern als XML abgespeichert wird. Man kann diese daher einfach exportieren und auf einem anderen System importieren. <\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">$ sudo virsh list\n Id   Name                 Status\n------------------------------------\n 1    ulabs-libvirt-demo   laufend\n\n$ sudo virsh pool-list\n Name      Status   Automatischer Start\n-----------------------------------------\n default   Aktiv    ja\n iso       Aktiv    ja\n\n$ sudo virsh vol-list default\n Name                       Pfad\n------------------------------------------------------------------------------\n ulabs-libvirt-demo.qcow2   \/var\/lib\/libvirt\/images\/ulabs-libvirt-demo.qcow2\n\n\n# Weitere hilfreiche Befehle\nsudo virsh start &lt;VM&gt;\nsudo virsh reboot &lt;VM&gt;\n\nsudo virsh shutdown &lt;VM&gt;\n# Destroy bedeutet VM hart abschalten\nsudo virsh destroy vm\n# Soll eine VM dauerhaft entfernt werden, geschieht dies mit undefine\nsudo virsh undefine vm\n\n# Snapshot erstellen\/einspielen\nvirsh save &lt;VM&gt; snapshot.state\nvirsh restore snapshot.state\n\n# Textkonsole (VMs ohne GUI - verlassen mit STRG + &#039;]&#039;)\nvirsh console &lt;VM&gt;\n\n# Direktes Anpassen der XML Konfiguration\nvirsh edit &lt;VM&gt;<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Weiterf\u00fchrende Informationen<\/h2>\n<ul class=\"wp-block-list\">\n<li>https:\/\/wiki.debian.org\/KVM<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>KVM, QEMU und Libvirt sind wohl die Standard-Werkzeuge zur Virtualisierung unter Linux. Dieser Artikel wirft einen grunds\u00e4tzlichen Blick auf die Vorteile der Technologie. Der Kern besteht darin, in die Grundlagen zur Virtualisierung mit den drei Werkzeugen aufzuzeigen: Dazu werden diese zun\u00e4chst installiert. Es folgt die Einrichtung sowie Erstellung einer ersten VM, deren Zustand wir mit &#8230;<\/p>\n","protected":false},"author":5,"featured_media":10469,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[74],"tags":[606,1076,1075,607],"class_list":["post-10422","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","tag-kvm","tag-libvirt","tag-qemu","tag-virtualisierung"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/10422","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=10422"}],"version-history":[{"count":8,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/10422\/revisions"}],"predecessor-version":[{"id":10477,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/10422\/revisions\/10477"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media\/10469"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=10422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=10422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=10422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}