Es gibt eine recht einfache Möglichkeit einen Ordner des Host Systems in einer VM zu nutzen. Einzige Bedingung ist, dass der Kernel in der VM das 9p Dateisystem unterstützt.  Bei den meisten Distributionen ist das der Fall. Nur leider nicht bei Rhel7/Centos7. Aber Debian, Ubuntu, Arch und auch Fedora mach dort keine Probleme.
Als erstes muss mit dem virsh Kommando die VM config angepasst werden.

<filesystem type='mount' accessmode='mapped'>
  <source dir='/srv/vmshare'/>
  <target dir='host'/>
</filesystem>

Das ganze kann man natürlich auch im Virt-Manager machen, wenn man die GUI bevorzugt.

Es gibt für den accessmode 3 verschiedene Optionen. Diese sind mapped , squash und passthrough.

Bei mapped wird die Datei auf dem Host System vom Qemu Benutzer angelegt. Der VM Benutzer wird in den extended Attributes gespeichert und auch in der VM angezeigt. Das bedeutet, dass Dateien die von einem normalen Benutzer angelegt werden auch diesem in der VM gehören, gleiches gilt für Dateien von Root. Auf dem Host gehören alle Dateien dem Qemu Benutzer.

Bei squash wird die Datei auf dem Host System vom Qemu Benutzer angelegt und gehört auch in VM System diesem User, aber alle haben Zugriff auf die Dateien. Das führt dazu, dass von Root angelegt Dateien plötzlich einem normalen Benutzer gehören können. Aber es ist bei Problem die einfachst Lösung, wenn einfach Zugriff benötigt wird.

Bei passthrough wird die Datei auf dem Host mit dem VM Benutzer angelegt. Das geht oft schief. Besonders wenn Qemu nicht als Root läuft. Ich würde diese Option nicht verwenden.

Das source dir ist der komplette Pfad des Ordners im Host System, der zugänglich gemacht werden soll.

Das target dir ist kein Pfad. Sondern einfach nur ein Name, der beim mounten in der VM wichtig ist. Am besten einen simplen, einfachen Namen wählen.

 

Nach dem Start der VM kann man mit dem mount Befehl überprüfen ob alles richtig konfiguriert wurde.

mkdir /media/host
mount -t 9p -o trans=virtio,version=9p2000.L host /media/host

Die Dateisystem Quelle bei dem mount befehl ist der Name des „target dir“ .

Wenn alles klappt kann man einen fstab Eintrag anlegen.

host /media/host 9p trans=virtio,version=9p2000.L,_netdev  0  0

 

 

Libvirt – Host Ordner in VM nutzen