Nach dem Erstellen einer neuen virtuellen Maschine möchten Sie möglicherweise Dateien und Ordner zwischen dem KVM-Host und der virtuellen KVM-Maschine freigeben. In dieser kurzen Anleitung erfahren Sie, wie Sie mit Virt-Manager unter Linux einen freigegebenen Ordner zwischen KVM-Host und virtueller Gastmaschine einrichten.
Bevor Sie einen freigegebenen Ordner konfigurieren, vergewissern Sie sich, dass Sie Virt-manager auf Ihrem KVM-Host installiert haben.
- So verwalten Sie virtuelle KVM-Maschinen mit Virt-Manager
Wenn Sie bereits eine vollständige KVM-Virtualisierungspaketgruppe installiert haben, müssen Sie Virt-manager nicht separat installieren. Virt-manager ist Teil der KVM-Virtualisierungspaketgruppe. Andernfalls müssen Sie es möglicherweise wie im obigen Link gezeigt installieren.
Erstellen Sie eine neue virtuelle Maschine über die Virt-Manager-Oberfläche. Es ist sehr unkompliziert und einfach! Starten Sie die VM noch nicht. Wir müssen einen freigegebenen Ordner in unserem KVM-Host erstellen.
Freigegebene Ordner im KVM-Host erstellen
Erstellen Sie einen neuen freigegebenen Ordner in Ihrem KVM-Hostsystem, den Sie für die Gastcomputer freigeben möchten.
Für diese Anleitung habe ich einen freigegebenen Ordner mit dem Namen „KVM_Share
“ erstellt " in meinem $HOME
Verzeichnis.
[[email protected] ~]$ mkdir ~/KVM_Share
Richten Sie als Nächstes die erforderlichen Berechtigungen für den freigegebenen Ordner ein. Ich wollte den Inhalt dieses freigegebenen Ordners von meinen virtuellen Gastmaschinen aus bearbeiten und ändern, also habe ich dem freigegebenen Ordner volle Berechtigungen erteilt.
[[email protected] ~]$ chmod 777 ~/KVM_Share
Legen Sie als Nächstes den richtigen SELinux-Typ für den freigegebenen KVM-Ordner fest:
$ sudo semanage fcontext -a -t svirt_image_t "/home/sk/KVM_Share(/.*)?"
Dieser Befehl legt den Standarddateikontext für alles unter und einschließlich des freigegebenen Ordners fest, d. h. /home/sk/KVM_Share
in unserem Fall.
Nachdem Sie den obigen Befehl ausgeführt haben, hängt er eine Zeile an /etc/selinux/targeted/contexts/files/file_contexts.local
an Datei, die die Änderung dauerhaft macht.
Die angehängte Zeile könnte wie folgt aussehen:
$ cat /etc/selinux/targeted/contexts/files/file_contexts.local This file is auto-generated by libsemanage Do not edit directly. /usr/lib/chromium-browser system_u:object_r:bin_t:s0 /usr/lib/chromium-browser/chromium-browser.sh system_u:object_r:bin_t:s0 /usr/lib/chrome-sandbox system_u:object_r:chrome_sandbox_exec_t:s0 /home/sk/KVM_Share(/.*)? system_u:object_r:svirt_image_t:s0
Führen Sie als Nächstes den folgenden Befehl aus, um SELinux anzuweisen, Dateikontexte für alles unterhalb des gemeinsam genutzten Verzeichnisses auf das zurückzusetzen, was wir als Standard haben (d. h. welche Semanage-Änderungen).
$ sudo restorecon -vR /home/sk/KVM_Share
Wenn Sie nicht den richtigen SELinux-Typ für den freigegebenen KVM-Ordner festlegen, wird beim Starten der VM der folgende Fehler angezeigt.
Error starting domain: internal error: qemu unexpectedly closed the monitor: 2021-05-06T09:30:21.239353Z qemu-system-x86_64: -device virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,mount_tag=/hostshare,bus=pci.5,addr=0x0: cannot initialize fsdev 'fsdev-fs0': failed to open '/home/sk/KVM_Share': Permission denied Traceback (most recent call last): File "/usr/share/virt-manager/virtManager/asyncjob.py", line 65, in cb_wrapper callback(asyncjob, *args, *kwargs) File "/usr/share/virt-manager/virtManager/asyncjob.py", line 101, in tmpcb callback(args, **kwargs) File "/usr/share/virt-manager/virtManager/object/libvirtobject.py", line 57, in newfn ret = fn(self, *args, **kwargs) File "/usr/share/virt-manager/virtManager/object/domain.py", line 1329, in startup self._backend.create() File "/usr/lib64/python3.9/site-packages/libvirt.py", line 1353, in create raise libvirtError('virDomainCreate() failed') libvirt.libvirtError: internal error: qemu unexpectedly closed the monitor: 2021-05-06T09:30:21.239353Z qemu-system-x86_64: -device virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,mount_tag=/hostshare,bus=pci.5,addr=0x0: cannot initialize fsdev 'fsdev-fs0': failed to open '/home/sk/KVM_Share': Permission denied
Jetzt ist es an der Zeit, freigegebene Ordner im Virt-Manager zu konfigurieren.
Richten Sie einen freigegebenen Ordner zwischen KVM-Host und Gast ein
Öffnen Sie den Virt-Manager und stellen Sie sicher, dass das Gastsystem ausgeschaltet ist. Wählen Sie den Gastcomputer aus und klicken Sie auf Öffnen Schaltfläche in der Menüleiste, um die Konsole der virtuellen Maschine und Details anzuzeigen.
Klicken Sie im nächsten Fenster auf "Details zur virtuellen Hardware anzeigen" Schaltfläche in der Menüleiste und klicken Sie auf "Hardware hinzufügen" Schaltfläche im linken Bereich.
Klicken Sie im linken Bereich auf die Registerkarte „Dateisystem“ und geben Sie den Speicherort des freigegebenen Ordners im Quellpfad und das Mount-Tag unter dem Zielpfad ein. Hier teile ich "~/KVM_Share"
Verzeichnis und mein Mount-Tag ist /hostshare
. Sie können den Namen von mount_tag beliebig angeben. Bitte beachten Sie, dass mount_tag kein Pfad ist. Das mount_tag ist nur ein Name, der verwendet wird, um die Freigabe des Hosts zu identifizieren. Klicken Sie auf Fertig stellen und anwenden, um die Änderungen zu aktualisieren.
Eine letzte Sache, die Sie tun sollten, ist den richtigen Zugriffsmodus auszuwählen für den Zugriff auf den freigegebenen Ordner.
Es gibt drei mögliche Werte. Sie sind passthrough
, mapped
und squash
.
- Durchleitung – Gibt an, dass auf die Quelle (d. h. den freigegebenen Ordner) mit den Berechtigungseinstellungen des Benutzers zugegriffen wird, die innerhalb der virtuellen Gastmaschine festgelegt werden. Das heißt, Dateien werden mit denselben Anmeldeinformationen gespeichert, mit denen sie auf dem Gast erstellt wurden. Dies ist der Standardzugriffsmodus, wenn keiner angegeben ist.
- zugeordnet - Gibt an, dass auf die Quelle mit den Berechtigungseinstellungen des Hypervisors zugegriffen wird. Wenn Sie Lese- und Schreibzugriff vom Gastcomputer haben möchten, müssen Sie diesen Modus wählen.
- Kürbis - Ähnlich wie bei 'Passthrough' ist die Ausnahme, dass privilegierte Operationen wie
chown
fehlschlagen werden ignoriert. Dadurch wird ein Passthrough-ähnlicher Modus für Personen nutzbar, die den Hypervisor als Nicht-Root ausführen.
Nachdem Sie Ihren bevorzugten Zugriffsmodus ausgewählt haben, klicken Sie auf die Schaltfläche Übernehmen. Wir haben jetzt den freigegebenen Ordner für KVM-Host und Gastsystem vom Virt-Manager konfiguriert.
Schalten Sie jetzt die virtuelle Gastmaschine ein und erstellen Sie einen Bereitstellungspunkt auf Ihrer Gastmaschine, um den freigegebenen Ordner des KVM-Hostsystems zu mounten:
[[email protected] ~]$ mkdir ~/hostfiles
Hängen Sie schließlich den freigegebenen Ordner auf dem Gastcomputer mit dem folgenden Befehl ein:
[[email protected] ~]$ sudo mount -t 9p -o trans=virtio /hostshare hostfiles/
Der freigegebene Ordner ~/KVM_Share
wird auf den hostfiles
gemountet Verzeichnis in Ihrer virtuellen Maschine. Von nun an können Sie von Ihrer virtuellen Gastmaschine aus auf den Inhalt des freigegebenen Ordners zugreifen. Sie können auch den Inhalt des freigegebenen Ordners auf KVM-Host- und Gastsystemen bearbeiten und löschen.
Um den freigegebenen Ordner jedes Mal beim Booten automatisch zu mounten, fügen Sie die folgende Zeile zu /etc/fstab
hinzu Datei in Ihrem Gastsystem:
/hostshare /hostfiles 9p trans=virtio,version=9p2000.L,rw 0 0
Hoffe das hilft.