So mounten Sie ein Hostverzeichnis in einer virtuellen KVM-Maschine
Bei der Verwendung von QEMU/KVM gibt es viele Methoden, um Daten zwischen dem Hostsystem und den virtuellen Gastmaschinen auszutauschen. In diesem Tutorial konzentrieren wir uns auf die Erstellung eines Dateisystem-Passthroughs mit virt-manager oder durch manuelles Bearbeiten einer Definition einer virtuellen Maschine und lernen, wie ein Host-Verzeichnis in einem virtualisierten Gast gemountet wird.
In diesem Tutorial lernen Sie:
- So erstellen Sie einen Dateisystem-Passthrough mit virt-manager
- Erstellen eines Dateisystem-Passthroughs durch manuelles Bearbeiten einer XML-Definition einer virtuellen Maschine
- So mounten Sie ein Hostverzeichnis auf einem virtualisierten Gastsystem
Einleitung
Wir haben in früheren Tutorials über virtuelle Maschinen gesprochen, als wir gesehen haben, wie man virtuelle KVM-Maschinen über die Befehlszeile erstellt und verwaltet und wie man Snapshots von virtualisierten Systemen erstellt. In bestimmten Situationen kann es erforderlich sein, Daten zwischen dem Host und einem Gastsystem auszutauschen. Es gibt viele mögliche Lösungen für dieses Problem; Eine besteht in der Erstellung eines Dateisystem-Passthroughs. Dies ist jedoch nur auf einem System möglich, das über die libvirtd-Instanz "system" (qemu:///system) virtualisiert wurde. Es funktioniert nicht auf nicht privilegierten libvirtd "session"-Instanzen (qemu:///session).
Erstellen eines Dateisystem-Passthroughs mit virt-manager
Um mit virt-manager ein Dateisystem-Passthrough in einem bereits vorhandenen QEMU/KVM-Gastsystem zu erstellen, klicken wir auf das "Lamp"-Symbol in der Symbolleiste des Virtual Machine Viewer-Fensters. Dadurch erhalten wir Zugriff auf die Konfigurationsdetails der virtuellen Maschine:
Das erste, was wir tun müssen, ist, auf den Eintrag "Speicher" in der linken Spalte zu klicken, dann das Kontrollkästchen "Shared Memory aktivieren" zu aktivieren und die Änderung zu übernehmen, indem Sie auf die Schaltfläche "Übernehmen" unten rechts auf der Seite klicken. Wenn die virtuelle Maschine ausgeführt wird, benachrichtigt uns virt-manager, dass die Änderungen nach dem nächsten Herunterfahren wirksam werden:
Wir müssen nun auf die Schaltfläche "Hardware hinzufügen" unten links auf der Seite klicken und dann auf "Dateisystem" in der linken Spalte des Fensters, das geöffnet wird. Um den Dateisystem-Passthrough zu erstellen, müssen wir einen Quell- und einen Zielpfad angeben. Der Quellpfad ist das Verzeichnis auf dem Host-Rechner, das wir innerhalb des Gastsystems mounten möchten. Der Zielpfad Stattdessen ist es nicht wirklich ein Pfad, sondern die Bezeichnung, die wir verwenden, um auf den Passthrough von der virtuellen Maschine zu verweisen.
Im folgenden Beispiel geben wir das Verzeichnis /home/doc/Downloads auf dem Hostcomputer frei und verwenden das Label "host_doc_downloads", um darauf zu verweisen. Wenn wir möchten, dass das Verzeichnis im schreibgeschützten Modus zugänglich ist, vielleicht aus Sicherheitsgründen, können wir das Kontrollkästchen "Dateisystem als schreibgeschützten Mount exportieren" aktivieren. Wenn wir fertig sind, klicken wir auf die Schaltfläche "Fertigstellen" und bestätigen, dass wir das Gerät zur Verfügung stellen möchten.
Der Passthrough wird nach dem nächsten "richtigen" Herunterfahren des Systems verfügbar sein (wir müssen den Rechner tatsächlich herunterfahren; ein Neustart wird nicht effektiv sein).
Erstellen eines Dateisystem-Passthroughs durch Bearbeiten der XML-Datei der virtuellen Maschine
Wenn wir virt-manager nicht verwenden, können wir direkt einen Dateisystem-Passthrough erstellen, indem wir die XML-Definition der virtuellen Maschine bearbeiten. Um die Liste aller vorhandenen virtuellen Maschinen zu erhalten, können wir das virsh-Skript verwenden:
sudo virsh list --allIn diesem Fall gibt der Befehl die folgende Ausgabe zurück:
Id Name State
--------------------------
8 debian12 runningUm die Definition der virtuellen Maschine zu bearbeiten, können wir den Befehl virsh-edit verwenden und den Namen der virtuellen Maschine als Argument übergeben:
sudo virsh edit debian12
Die XML-Datei wird im Standard-Editor geöffnet. Um Shared Memory zu aktivieren, fügen wir den folgenden Code im Abschnitt "domain" hinzu:
<memoryBacking>
<source type="memfd"/>
<access mode="shared"/>
</memoryBacking>
Um dann den Verzeichnis-Passthrough hinzuzufügen, fügen wir den folgenden Code hinzu, diesmal im Abschnitt "devices":
<filesystem type="mount" accessmode="passthrough">
<driver type="virtiofs"/> <source dir="/home/doc/Downloads"/>
<target dir="host_doc_downloads"/>
<address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/>
</filesystem>
Sobald wir fertig sind, speichern und schließen wir die Datei. Um die Konfiguration effektiv zu machen, müssen wir das Gastsystem herunterfahren:
sudo virsh shutdown debian12Hostverzeichnis mounten
Sobald wir den Dateisystem-Passthrough erstellt haben, können wir das Host-Verzeichnis mit dem Befehl "mount" mounten, indem wir "virtiofs" als Dateisystemtyp angeben und, wie wir bereits sagten, indem wir den gemeinsam genutzten Host-Pfad über das Label, das wir in der Konfiguration verwendet haben, referenzieren. In diesem Fall würden wir zum Einhängen des Host-Verzeichnisses auf /mnt innerhalb des Gastsystems Folgendes ausführen:
sudo mount -t virtiofs host_doc_downloads /mntSchlüsse
In diesem Tutorial haben wir gelernt, wie man einen Dateisystem-Passthrough erstellt und ein Host-Verzeichnis in einen QEMU/KVM-Gast einhängt. Wir haben gesehen, wie man den Passthrough mit virt-manager erstellt oder indem man die virtualisierte System-XML-Definition mit dem Befehl virsh edit direkt bearbeitet. Schließlich haben wir gesehen, wie man das freigegebene Verzeichnis innerhalb des Gastsystems mountet.



