GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Richten Sie einen freigegebenen Ordner zwischen KVM-Host und Gast ein

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.


Linux
  1. So installieren und konfigurieren Sie den minimalistischen Docker-Host von Debian 8

  2. Unterschied zwischen Firewall für gemeinsam genutzte Hardware und Firewall für dedizierte Hardware

  3. Linux – Dateien zwischen Linux-Host und Windows-Gast teilen?

  4. So installieren Sie Linux KVM und erstellen eine Gast-VM mit Beispielen

  5. Unterschied zwischen gemeinsam genutzten Objekten (.so), statischen Bibliotheken (.a) und DLLs (.so)?

Freigegebener Ordner in Virtualbox (Ubuntu und Windows 7)?

Windows-Host-Freigabeordner in Ubuntu 20.04?

So kopieren Sie Dateien zwischen Host und Docker-Container

So richten Sie VirtualBox Guest Additions und Network ein

Skript zur Überwachung auf neue Dateien in einem freigegebenen Ordner (Windows-Host, Linux-Gast)

Konfigurieren Sie IPTables auf dem KVM-Host, um den Gastbrückenverkehr zu blockieren