Virtiofs in Proxmox VE 8.4: Shared File Systems leicht gemacht

18.April 2025

Mit Proxmox VE 8.4 hat Proxmox virtiofs eingeführt – eine moderne und performante Methode, um Verzeichnisse zwischen Host und virtuellen Maschinen zu teilen. In diesem Artikel zeige ich, was virtiofs ist, wie man es in Proxmox VE über die Web‑GUI und über die API konfiguriert und wie man es im Gastbetriebssystem nutzt.

Was ist virtiofs?

virtiofs ist ein Shared‑Filesystem, das auf dem Virtio‑Framework basiert und Verzeichnisse des Hosts direkt in den Gast einbindet, ohne klassischen Netzwerk‑Dateizugriff (z. B. NFS). Dank einer Kombination aus FUSE im Gastkern und dem User‑Space‑Daemon virtiofsd bietet es:

  • Hohe Leistung bei geringer Latenz
  • POSIX‑kompatible Semantik (inkl. Dateiattribute)
  • Unterstützung für POSIX‑ACLs und erweiterte Attribute
  • Einfache Konfiguration über GUI oder API

Unterstützung in Proxmox VE

Proxmox VE 8.4 ermöglicht es, virtiofs sowohl per Web‑GUI als auch per CLI/API (mit pvesh und qm) einzurichten. Im Folgenden beschreibe ich beide Wege:


1. Konfiguration über die Web‑GUI

1.1 Directory Mapping anlegen

Bevor virtiofs in einer VM verwendet werden kann, legt man in Datacenter → Directory Mappings ein Mapping an.

Achtung: Das Zielverzeichnis auf dem Node muss bereits existieren.

Directory Mappings
Übersicht vorhandener Directory Mappings im Datacenter

Add Directory Mapping
Neues Mapping anlegen

Parameter:

  • Name: virtiofs-test - Name bzw Directory ID
  • Path: /mnt/virtiofs-test - Pfad zum Verzeichnis, welches geshared werden soll
  • Node: pve03- Auswahl des Nodes, auf dem das Verzeichnis geshared wird
  • Comment: - Hier kann man einen Kommentar hinterlegen.

1.2 Virtiofs-Device in der VM hinzufügen

  1. VM auswählen → HardwareAdd → Virtiofs
  2. Im Dialog das zuvor erstellte Mapping auswählen (Directory ID)
  3. In Advanced, ggf. Cache/XATTR/ACLs konfigurieren
  4. Add klicken und die VM neu starten

Virtiofs in VM‑Hardware
Virtiofs‑Device hinzufügen

Mapping auswählen
Directory Mapping auswählen

Hinweis: Proxmox bindet das Device erst nach einem Neustart ein!


2. Konfiguration via Shell

Alternativ kann man alle Schritte über die Proxmox CLI/API erledigen:

2.1 Directory Mapping anlegen (pvesh)

Zunächst legt man das Directory Mapping via pvesh (API) an.

1pvesh create /cluster/mapping/dir \
2  --id virtiofs-test \
3  --map node=pve03,path=/mnt/virtiofs-test

Erklärung:

  • /cluster/mapping/dir - definiert den Endpoint in der API
  • –id - Directory ID bzw der Name des Mappings
  • –map - Auswahl des Knotens und der Pfad zum Verzeichnis auf diesem

2.2 Virtiofs-Device in der VM hinzufügen (qm)

Als nächstes wird der VM mittels qm set das Virtiofs Device hinzugefügt.

1qm set 110 \
2  -virtiofs0 dirid=virtiofs-test

Erklärung:

  • 110 - ID der virtuelle Maschine
  • virtiofs0 - Erstes Virtiofs Device in der VM - man kann auch mehrere Devices einbinden.
  • dirid - Directory ID bzw Name des Mappings

3. Nutzung im Gastbetriebssystem

Nach dem Neustart der VM ist der virtiofs‑Treiber in Debian und vielen anderen Distributionen automatisch verfügbar. Nun kann das Device eingebunden werden:

1# Im Gast als root oder via sudo:
2mkdir -p /mnt/host_share
3mount -t virtiofs virtiofs-test /mnt/host_share

Falls der Treiber nicht geladen wird, kann man diesen händisch einbinden:

1modprobe virtiofs

Um das Ganze persistent im Linux anzulegen, legt man dies in der /etc/fstab an:

#<directory id> <mount point> virtiofs rw,relatime 0 0
virtiofs-test /mnt/host_share virtiofs rw,relatime 0 0

4. Funktionstest

Als nächstes kann man einen kleinen Funktionstest durchführen. Man erstellen in dem Verzeichnis, wo man das Device eingebunden hat, einfach eine Datei:

1touch /mnt/host_share/testfile.txt
2ls -l /mnt/virtiofs-test/

Und prüft nun auf dem Host (pve03), ob die Datei dort auch zur Verfügung steht.

1ls -l /mnt/virtiofs-test

Als letztes kann man nun auch eine Datei auf dem Host anlegen und prüfen, ob dies im Gast (VM) verfügbar wird.


5. Praxis‑Einsatzszenarien

  • Entwicklung: Quellcode‑Verzeichnisse zwischen Host‑IDE und Build‑VMs.
  • Logging: zentrale Log‑Ordner eines Webservers im Host bereit.

Mit virtiofs in Proxmox VE 8.4 lässt sich ein performantes, POSIX‑kompatibles Shared‑Filesystem zwischen Host und Gast realisieren.

Viel Erfolg beim Ausprobieren!