Inhalt
Einleitung
VirtioFS, eine fortschrittliche Technologie für den Dateiaustausch zwischen dem Host-Betriebssystem und virtuellen Maschinen, hat gegenüber einem einfachen Samba Share mehrere Vorteile.
Ein entscheidender Vorteil von VirtioFS liegt in seiner verbesserten Leistung. Im Gegensatz zu traditionellen Netzwerkdateisystemen wie Samba wurde VirtioFS speziell für Virtualisierungsumgebungen entwickelt. Dadurch kann es direkten Zugriff auf das lokale Dateisystem des Hosts bieten, was zu schnelleren Datenübertragungsraten führt. Dies ist insbesondere für Anwendungen wichtig, die auf schnelle Dateizugriffe angewiesen sind, da VirtioFS eine optimierte Leistung gewährleistet.
Des Weiteren bietet VirtioFS eine niedrigere Latenz als ein Samba Share. Durch die Nutzung einer gemeinsamen Speicherlösung auf dem Host-Betriebssystem reduziert VirtioFS die Zeit, die für den Zugriff auf Dateien benötigt wird. Diese geringere Latenz kann sich positiv auf die Reaktionszeiten von Anwendungen auswirken, die auf schnelle Datenzugriffe angewiesen sind.
Effizienz ist ein weiterer Vorteil von VirtioFS im Vergleich zu einem Samba Share. Da VirtioFS direkt mit dem Host-Betriebssystem kommuniziert und keine zusätzliche Netzwerkkommunikation erfordert, werden die Ressourcen des Systems effizienter genutzt. Dies trägt dazu bei, die Gesamtauslastung des Systems zu reduzieren und die Leistungsfähigkeit der virtuellen Umgebung zu verbessern.
Darüber hinaus ist VirtioFS in der Regel einfacher zu konfigurieren und zu verwalten als ein Samba Share. Da VirtioFS direkt in die Virtualisierungsplattform integriert ist, sind keine zusätzlichen Netzwerkkonfigurationen erforderlich. Dies vereinfacht die Einrichtung und Verwaltung des Dateiaustauschs erheblich und spart Zeit und Aufwand.
Ein weiterer wichtiger Aspekt ist die Sicherheit. VirtioFS, das normalerweise innerhalb des Host-Betriebssystems arbeitet, bietet in der Regel eine höhere Sicherheit im Vergleich zu einem Samba Share, der über das Netzwerk zugänglich ist. Durch die Begrenzung des Dateizugriffs auf die virtuellen Maschinen können potenzielle Sicherheitsrisiken minimiert werden.
Insgesamt bietet VirtioFS eine leistungsstarke und effiziente Möglichkeit, Dateisysteme zwischen dem Host und den virtuellen Maschinen in einer Virtualisierungsumgebung zu teilen. Durch seine verbesserte Leistung, niedrigere Latenz, effiziente Ressourcennutzung, einfache Konfiguration und erhöhte Sicherheit stellt VirtioFS eine überlegene Alternative zu einem einfachen Samba Share dar.
Installation
Die Installation und Konfiguration von VirtioFS sowie die Einrichtung eines geteilten Laufwerks in einer Windows 10-VM erfordern einige Schritte:
- Vorbereitung des Host-Systems:
- Es muss sichergestellt werden, dass das Host-System VirtioFS unterstützt und die erforderlichen Treiber installiert sind. Dies kann je nach Linux-Distribution variieren, aber normalerweise sind die Virtio-Treiber bereits in den meisten modernen Linux-Kerneln enthalten.
- VirtioFS auf dem Host konfigurieren:
- Auf dem Host-System muss VirtioFS konfiguriert werden, um das gewünschte Dateisystem freizugeben, das in der Windows 10-VM genutzt werden soll. Dies beinhaltet das Einrichten von Mount-Punkten und die Festlegung von Berechtigungen für den Zugriff.
- Erstellen der Windows 10-VM mit Virtio-Treibern:
- Es muss eine neue virtuelle Maschine in QEMU mit den erforderlichen Ressourcen wie CPU, Speicher und Festplattenplatz erstellt werden, bzw. eine vorhandene Instanz entsprechend angepasst werden.
- Es muss sichergestellt werden, dass die Virtio-Treiber für Windows in die VM integriert sind. Diese Treiber ermöglichen eine optimale Leistung und Funktion von VirtioFS in der Windows-VM.
- Konfigurieren der VirtioFS-Freigabe in der Windows-VM:
- Die erforderlichen Virtio-Treiber in der Windows-VM installieren, einschließlich des VirtioFS-Treibers.
- Den VirtioFS-Treiber in der Windows-VM konfigurieren, um auf das freigegebene Dateisystem auf dem Host zuzugreifen. Dies kann durch Hinzufügen einer entsprechenden Netzwerkfreigabe in den Windows-Einstellungen erfolgen.
- Testen und Überprüfen:
- Die Windows 10-VM starten und überprüfen, ob erfolgreich auf das freigegebene Laufwerk über VirtioFS zugegriffen werden kann.
- Die Leistung und Funktionalität des geteilten Laufwerks testen, um sicherzustellen, dass alles ordnungsgemäß funktioniert.
Schritt 1: Vorbereitung des Host-Systems
In den meisten Distributionen ist VirtioFS vorhanden, bzw. lässt sich über den Paketmanager installieren. Bei Debian, bzw. Ubuntu wird dies wie folgt gemacht:
$ sudo apt install virtiofsd
Weitere Schritte sind hier nicht nötig, weil die weitere Konfiguration in der virtuellen Maschine durchgeführt wird.
Schritt 2: VirtioFS auf dem Host konfigurieren
An dieser Stelle muss im Grunde nichts speziell konfiguriert werden. Es wird irgend ein Verzeichnis benötigt, welches entweder angelegt werden muss, oder schon vorhanden ist. Zum Beispiel könnte man im Home Verzeichnis des Benutzes ein eigenes Verzeichnis für den Austausch von Dateien einzurichten:
$ mkdir ~/VM_shared_folder
Schritt 3: Erstellen der Windows 10-VM mit Virtio-Treibern
Es wird eine Windows 10 VM benötigt. Sofern diese nicht schon vorhanden ist, habe ich unter Desktop Virtualisierung mit QEmu und KVM unter Debian beschrieben, wie diese leicht eingerichtet werden kann. In dieser virtuellen Maschinen müssen auf jeden Fall die VirtIO-Treiber installiert sein (wie auch im zuvor genannten Artikel beschrieben).
Schritt 4: Konfigurieren der VirtioFS-Freigabe in der Windows-VM
1. WinFSP Treiber installieren
Hierzu werden als erstes die WinFSP Treiber benötigt, die unter https://github.com/winfsp/winfsp/releases heruntergeladen werden können. Diese werden innerhalb der VM in Windows 10 installiert. Dazu einfach Windows 10 starten, dort die Treiber herunterladen und das MSI-Paket installieren.
Dort braucht nur das Feature “Core” installiert zu werden:

Anschließend die VM wieder herunter fahren.
2. Gemeinsamen Speicher aktivieren
Im virt-manager in die Einstellungen der Windows 10 VM gehen und in der linken Spalte “Speicher” auswählen. Auf der rechten Seite einen Haken bei “Gemeinsamen Speicher aktivieren” setzen:

Annschließend mit <Apply> speichern.
3. Gemeinsames Verzeichnis auswählen
In den Einstellungen nun auf “Gerät hinzufügen” klicken und auf “Dateisystem” in der linken Spalte klicken:

Auf der rechten Seite auf “Durchsuchen” klicken:

Hier im unteren Bereich auf “Lokal durchsuchen” klicken. Es öffnet sich der Dateimanager, wo sich das freizugebende Verzeichnis ausgewählt werden muss. Danach im Feld Zielpfad einen Namen angeben. Dieser Name wird später in Windows als Netzwerklaufwerk angezeigt:

Auf “Fertig” klicken, damit der Eintrag gespeichert wird.
Schritt 5: Testen und Überprüfen
Jetzt die Windows 10 VM wieder starten.
Es muss noch der VirtioFS Dienst aktiviert werden, und auf automatischen Start gesetzt werden, damit beim nächsten Neustart der Windows 10 VM dieser erneut automatisch gestartet wird. Dazu das Tool “Dienste” unter Windows 10 aufrufen und bis zu dem Eintrag “VirtIO-FS Service” runter scrollen:

Mit einem Rechtsklick der Maus auf diesen Eintrag gehen und dort dann auf “Eigenschaften“:

In dem sich neu geöffneten Fenster bei “Starttyp” den Wert “Automatisch” auswählen und anschließend im unteren Bereich auf “Starten” klicken:

Der Dienst wird nun gestartet und das Fenster kann geschlossen werden mit einem Klick auf “OK“. Anschließend kann auch das “Dienste” Fenster wieder geschlossen werden.
Ruft man nun den Explorer auf, wird das freigegebene Linux Verzeichnis als Laufwerk Z: angezeigt und steht zur Verfügung:

Tipps
Laufwerksbuchstaben ändern
Der Laufwerksbuchstabe kann nur über die Registry geändert werden. Registry öffnen und nach HKEY_LOCAL_MACHINE\SOFTWARE\VirtIO-FS navigieren. Dort muss ein neuer Eintrag hinzugefügt werden. Mit einem Rechtsklick auf der rechten Seite “Neu” –> “Zeichenfolge” auswählen und dort “MountPoint” eingeben. Nach bestätigen wird ein neuer Eintrag erzeugt. Auf diesen einen Doppelklick ausführen und einen freien Laufwerksbuchstaben eingeben, z.B. “E:“:

Wer es sich einfacher machen möchte, kann folgendes in eine Datei, zum Beispiel “virtiofs.reg (Wichtig ist die Dateiendung reg) schreiben, dort den Laufwerkbuchstaben nach belieben anpassen und dann durch einen Doppelklick ausführen. Danach wird alles automatisch eingetragen:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\VirtIO-FS] "FileSystemName"="NTFS" "MountPoint"="E:"
Mehrere Laufwerke einbinden
Der VirtIO-FS Dienst ist nur dafür ausgelegt, ein Laufwerk zu mounten. Möchte man aber mehrere geteilte Laufwerke haben, muss man anders vorgehen. Da hier der Dienst stören würde, muss dieser wieder deaktiviert werden und den Starttyp auf “Manuell” zurück gestellt werden. Dies kann entweder wie weiter oben beschrieben über die GUI ausgeführt werden, oder in einer Eingabeaufforderung mit Administrationsrechten:
sc stop VirtioFsSvc sc config VirtioFsSvc start=demand
Danach wurde der VirtIO-FS Dienst beendet und wird nach einem Neustart auch nicht wieder aktiviert.
Dafür wird nun der WinFSP.Launcher aktiviert:
C:\>"C:\Program Files (x86)\WinFsp\bin\fsreg.bat" virtiofs "C:\Program Files\Virtio-Win\VioFS\virtiofs.exe" "-t %1 -m %2"
Anschließend wird ein Laufwerk wie folgt eingehangen:
C:\>"C:\Program Files (x86)\WinFsp\bin\launchctl-x64.exe" start virtiofs viofsE LinuxShare E:
In diesem Beispiel wird der Share (in der VM unter Einstellungen –> Dateisystem der Zielpfad) “LinuxShare” als Laufwerk E: eingebunden. Die Bezeichnung “viofsE” ist ein Instanzname, der angegeben werden wird, aber pro Laufwerk unterschiedlich sein muss. Da kann man sich irgend etwas “sprechendes” ausdenken.
Möchte man nun ein weiteres Laufwerk nun einbinden, was natürlich vorher in den VM Einstellungen unter Dateisystem hinzugefügt werden muss, kann dieses ebenso eingehangen werden:
C:\>"C:\Program Files (x86)\WinFsp\bin\launchctl-x64.exe" start virtiofs viofsF Download F:
Anschließend hat man zwei Laufwerke, E:\ und F:\, mit den Instanznamen virfsE und viofsF. Diese können auch x-beliebig anders lauten, müssen eben nur jeweils einmalig sein. Und so kann man noch weitere Laufwerke einbinden.
Möchte man diese Laufwerke wieder aushängen, kann man dies mit folgendem Befehl tun:
"C:\Program Files (x86)\WinFsp\bin\launchctl-x64.exe" stop virtiofs viofsE "C:\Program Files (x86)\WinFsp\bin\launchctl-x64.exe" stop virtiofs viofsF
Hier wird nur der Instanzname angegeben.
Fazit
Insgesamt bietet VirtioFS eine leistungsstarke und effiziente Möglichkeit, Dateisysteme zwischen dem Host-Betriebssystem und virtuellen Maschinen auszutauschen. Im Vergleich zu einem einfachen Samba Share bringt VirtioFS mehrere Vorteile mit sich. Es bietet eine verbesserte Leistung und niedrigere Latenz, was sich positiv auf die Geschwindigkeit und Reaktionsfähigkeit von Anwendungen auswirkt. Zudem nutzt VirtioFS die Ressourcen des Systems effizienter und ist einfacher zu konfigurieren und zu verwalten. Darüber hinaus bietet es in der Regel eine höhere Sicherheit, da der Dateizugriff auf die virtuellen Maschinen begrenzt werden kann. Insgesamt ist VirtioFS eine überlegene Lösung für den Dateiaustausch in Virtualisierungsumgebungen und bietet eine optimale Integration zwischen dem Host und den virtuellen Maschinen.
Quellen:
https://virtio-fs.gitlab.io/
https://github.com/virtio-win/kvm-guest-drivers-windows/wiki/Virtiofs:-Shared-file-system
https://www.debugpoint.com/kvm-share-folder-windows-guest/
https://github.com/winfsp/winfsp
