Dateiaustausch: Manjaro Archlinux Host ↔ Windows VM Client (Virtuelle Maschine QEMU/KVM) mit virtiofs und samba

Diese präzise Anleitung von mir funktioniert und wird Euch viele Stunden Arbeit ersparen. Früher nutzte ich Virtualbox von Oracle. Mir ist jedoch die OpenSource Virtuelle Maschine von QEMU, KVM persönlich lieber.
In dieser Anleitung findet sich sowohl die Einrichtung des Dateiautausches mit virtiofs als auch über samba. Ersteres ist zu empfehlen. Ebenso habe ich der Vollständigkeit halber die KVM/QEMU VM Installation (Manjaro) beigefügt.

Viel Spaß damit!

Methode: VirtIO-FS ist zu empfohlen, Samba nur als Notlösung oder Ergänzung
Kompatibel mit:
Manjaro, Windows 10/11, QEMU-KVM ≥ 6.0
Letzte Aktualisierung: 2025-11-22

I) Dateiaustausch über virtiofs einrichten: Manjaro Host ↔ Windows VM - Beste Methode zum Dateiaustausch, Datenaustausch - präzise Anleitung

Ziel

Einrichtung eines performanten, stabilen Dateiaustauschs mittels VirtIO-FS, ohne Netzwerk-Overhead.
Keine Samba-Abhängigkeiten, keine Firewall-Probleme, maximale Geschwindigkeit.

1. Voraussetzungen: KVM/QEMU VM Installation (Manjaro)

  1. Pakete installieren:

    sudo pacman -S qemu-full libvirt virt-manager dnsmasq edk2-ovmf ebtables iptables-nft
    
  2. Benutzerberechtigungen:

    sudo usermod -aG libvirt,kvm,input $(whoami)  # $(whoami) = dein Benutzername
    sudo systemctl enable --now libvirtd
    newgrp libvirt  # Gruppenänderung übernehmen
    
  3. Verifizieren:

    virt-host-validate  # Alles muss "PASS" sein
    

Fehlermeldungen bei der Verifikation: Erklärung

Warnung/Fehler Dringlichkeit Handlungsbedarf?
Cgroup devices Niedrig Nur bei LXC-Nutzung
IOMMU Hoch Ja, falls GPU-Passthrough
Secure Guest Keine Nein
Deine KVM/QEMU-Installation ist funktionsfähig – die Warnungen beeinträchtigen Standard-VMs nicht. Keine Aktion nötig – deine VM-Umgebung ist bereits einsatzbereit.
Die Warnungen sind nur für spezielle Szenarien (GPU-Passthrough, LXC-Container) relevant.
System Erforderlich
Host (Manjaro) qemu-full, libvirt, virt-manager, virtiofsd
Gast (Windows) Windows 10 (1809+) oder Windows 11
VM-Manager virt-manager ≥ 4.0

2. Host-Seite: Manjaro vorbereiten

2.1 Shared-Verzeichnis erstellen

mkdir -p ~/VM-Shared
chmod 755 ~/VM-Shared

:repeat_button: Ersetze bei Bedarf den Pfad mit einem anderen Ort bzw. Ordner (z. B. /mnt/data/shared).

2.2 virtiofsd installieren (falls nicht vorhanden)

sudo pacman -S virtiofsd --needed

2.3 Pakete sicherstellen

sudo pacman -S qemu-full libvirt virt-manager --needed

2.4 Optional - Prüfen, ob virtiofsd installiert ist**:

which virtiofsd
# Falls nicht vorhanden:
sudo pacman -S virtiofsd

3. VM konfigurieren (virt-manager)

:warning: Die VM muss ausgeschaltet sein.

3.1 Shared Memory aktivieren

  1. VM auswählen → “Öffnen” (rechte Maustaste)

  2. Linker Bereich: “Memory”

  3. Rechts: :white_check_mark: “Enable shared memory” aktivieren

  4. Übernehmen

3.2 Filesystem hinzufügen

  1. Unten links: “Hardware hinzufügen”

  2. Typ: “Filesystem”

  3. Einstellungen:

  • Driver: virtiofs

  • Source path: /home/$USER/VM-Shared (vollständiger Pfad)

  • Target path: VM-Shared (beliebiger Name, kein Laufwerksbuchstabe, kann auch shared oder sonst wie heißen. Ich habe den Ordner und den Target path gleich bezeichnet.)

  1. Fertigstellen

:repeat_button: Der Target path wird später im Windows-Gast als \?\VirtioFs\[target] verwendet.


4. Gast-Seite: Windows einrichten

:warning: Wichtig: Die Reihenfolge ist entscheidend.

4.1 WinFsp installieren (Voraussetzung!)

  • Download: Releases · winfsp/winfsp · GitHub

  • Datei: winfsp-x64.msi (aktuell: winfsp-2.1.25156.msi)

  • Aktion: Doppelklick → Installieren

  • Neustart: Nicht sofort bestätigen – erst Schritt 4.2 abschließen

:red_circle: WinFsp MUSS vor den VirtIO-Treibern installiert sein. Andernfalls schlägt der Dienst fehl.


4.2 VirtIO-FS Treiber installieren

:white_check_mark: Diese MSI-Datei enthält alle benötigten Komponenten: viofs.inf, virtiofs.exe, VirtioFsSvc.exe.


4.3 VirtIO-FS Service einrichten

:warning: Als Administrator ausführen (CMD, nicht PowerShell!)

sc create VirtioFsSvc binpath="C:\Program Files\Virtio-Win\VioFS\virtiofs.exe" start=auto depend="WinFsp.Launcher/VirtioFsDrv" DisplayName="Virtio FS Service"

:repeat_button: Falls der Dienst bereits existiert:

sc delete VirtioFsSvc

Dann neu anlegen.


4.4 Service starten

sc start VirtioFsSvc

:white_check_mark: Prüfen:

sc query VirtioFsSvc

STATE: 4 RUNNING


4.5 Laufwerk verbinden

net use Z: \\?\VirtioFs\VM-Shared /persistent:yes

:white_check_mark: Das Laufwerk Z: ist jetzt dauerhaft verfügbar.
:repeat_button: Ersetze Z: und VM-Shared nach Bedarf. Kann dann auch z.B. ‘shared’ heißen, wenn du es im Target oben so benannt hast.

‘Bei Systemfehler 85 einfach im Explorer nachsehen, ob Laufwerk bereits vorhanden ist’


5. Nach der Einrichtung

5.1 Automatischer Mount bei Login

Das Laufwerk wird automatisch verbunden, da /persistent:yes gesetzt ist.

5.2 Zugriff testen

dir Z:\
echo "Test erfolgreich" > Z:\test.txt
type Z:\test.txt

6. Troubleshooting

Problem Ursache Lösung
sc start → Fehler 1053 WinFsp nicht installiert oder falsch installiert WinFsp vorher installieren, Neustart machen
Systemfehler 53 bei net use Dienst läuft nicht oder Target-Name falsch sc query VirtioFsSvc prüfen; Target-Name in virt-manager prüfen
virtiofs.exe --help → DLL-Fehler WinFsp defekt oder nicht geladen WinFsp neu installieren, Neustart nicht überspringen
Laufwerk verbindet nicht Dienst nicht persistent sc config VirtioFsSvc start=auto

7. :white_check_mark: Vorteile von virtiofs gegenüber Samba

Kriterium virtiofs Samba
Geschwindigkeit :high_voltage: Sehr hoch (direkt im Kernel) :white_check_mark: Gut, aber TCP-basiert
Latenz Sehr niedrig Höher durch Netzwerkstack
Integration, Einrichtung Einmalig, danach automatisch Manuell per net use oder Explorer
Netzwerkabhängigkeit :cross_mark: Nein :white_check_mark: Ja
Firewall-Probleme Nie Manchmal (Ports 139, 445)
Kompatibilität QEMU/KVM ≥ 6.0 Universell

:white_check_mark: Fazit: Wenn VirtIO-FS läuft, ist es die beste Lösung. Samba ist nur eine Alternative, wenn VirtIO-FS nicht funktioniert.

8. Weiterführende Links

Anmerkung: Von der Möglichkeit über virtio-9p zu verbinden ist stark abzuraten.

9. Troubleshooting

VirtIO-FS wird in Windows nicht erkannt

  • Shared Memory aktiviert? (Punkt 3 der VM-Konfiguration)

  • WinFsp installiert? (vor dem VirtIO-Treiber)

  • Service läuft?: sc query VirtioFsSvc in CMD

    “Target path” bereits verwendet

  • In virt-manager einen eindeutigen Namen wählen (z.B. myshare, data, etc.)

  • Nicht den gleichen Namen wie andere Filesystems verwenden

    Performance-Probleme

  • RAM für VM erhöhen (VirtIO-FS nutzt shared memory)

  • Disk-Cache in VM-Settings: writeback statt none

II) Samba – Dateifreigabe Manjaro → Windows VM als Ergänzung - präzise Anleitung

Zweck: Klar, zuverlässig, fehlerfrei – auch parallel zu VirtIO-FS nutzbar.
Status: Getestet mit Manjaro, QEMU/KVM, Windows 10/11.
Wichtig: Diese Methode kann parallel zu VirtIO-FS laufen, auch mit gleichem Ordner – wenn korrekt konfiguriert.

Ziel

Einrichtung einer stabilen Samba-Freigabe vom Manjaro-Host zur Windows-VM – als Alternative oder Ergänzung zu VirtIO-FS.

1. Host-Seite (Manjaro)

1.1 Samba installieren

sudo pacman -S samba --needed

:small_blue_diamond: manjaro-settings-samba ist veraltet – nicht erforderlich.
:small_blue_diamond: Nur samba wird benötigt.


1.2 Samba-Service verwalten

# Dienste starten
sudo systemctl start smb nmb

# Automatischen Start aktivieren
sudo systemctl enable smb nmb

:warning: Wichtig: Beide Dienste sind nötig:

  • smb: Dateifreigabe

  • nmb: NetBIOS-Nameauflösung (für Browsersicht)


1.3 Konfiguration prüfen

sudo testparm

:white_check_mark: Erfolg, wenn am Ende steht: Loaded services file OK.


1.4 Freigabe konfigurieren (/etc/samba/smb.conf)

sudo nano /etc/samba/smb.conf

Am Ende hinzufügen:

[VMShare]
path = /mnt/Daten/VirtualPC-KVM-QEMU/VM-Shared
browseable = yes
read only = no
guest ok = yes
directory mask = 0755
create mask = 0644
force user = MeinBenutzername

:repeat_button: Ersetze MeinBenutzername mit deinem echten Benutzernamen:

whoami

:small_blue_diamond: guest ok = yes: Ermöglicht anonymen Zugriff – ideal für VMs.
:small_blue_diamond: force user: Alle Änderungen werden Ihrem Benutzerkonto zugeordnet.

1.5 Service nach Änderung neu starten

sudo systemctl restart smb nmb

1.6 Firewall erlauben (falls aktiv bzw. überhaupt vorhanden)

sudo firewall-cmd --add-service=samba --permanent
sudo firewall-cmd --reload

:small_blue_diamond: Nur bei firewalld.
:small_blue_diamond: Bei ufw: sudo ufw allow samba

2. VM-Netzwerk konfigurieren (virt-manager)

:warning: VM muss ausgeschaltet sein.

  1. VM öffnen → „Details anzeigen“

  2. Links: Netzwerk

  3. Rechts: „Vorhandenes Gerät verwenden“

  4. Netzwerkquelle: Default (NAT) oder Bridge (falls gewünscht, Habe ich nicht getestet)

  5. Modell: virtio (empfohlen, besserer Durchsatz)

:white_check_mark: NICHT „User-Mode (SLIRP)“ – blockt SMB-Verkehr.

3. Windows-Gast: Verbindung herstellen

3.1 Host-IP ermitteln (auf Manjaro)

ip addr show

Beachte, dass du die IP-Adresse Deines Hosts herausfindest.

3.2 Verbindung im Windows-Explorer

  1. Öffnen den Datei-Explorer

  2. Links: „Dieser PC“

  3. Oben: „Netzlaufwerk verbinden“

  4. Wähle einen Laufwerksbuchstaben (z. B. Y:)

  5. Gebe den Pfad ein:

\\IP-Adresse-Host\VMShare

:small_blue_diamond: Ersetze IP-Adresse-Host mit der tatsächlichen Host-IP aus ip addr show
:small_blue_diamond: Der Name VMShare stammt aus der smb.confnicht der Ordnername
:small_blue_diamond: Kein / am Ende

  1. Aktiviere, wenn überhaupt nötig (normalerweise nicht nötig): „Verbindung mit anderen Anmeldeinformationen herstellen“
    → Benutzer: guest

  2. → Passwort: leer

:repeat_button: Alternativ: Gebe direkt in die Adresszeile ein: \\IP-Adresse-Host\VMShare


4. Parallelbetrieb: VirtIO-FS und Samba

Methode Pfad (Beispiel) Vorteil
VirtIO-FS Z:\\\?\VirtioFs\VM-Shared Maximale Performance, niedrige Latenz
Samba Y:\\\IP-Adresse-Host\VMShare Zugriff von anderen Geräten, einfache Einrichtung

:white_check_mark: Beide Methoden können denselben Host-Ordner nutzen.
:warning: Vermeide gleichzeitige Schreibzugriffe auf dieselbe Datei → Datenverlust möglich.

5. Ordner vorbereiten (falls nicht vorhanden)

sudo mkdir -p /mnt/Daten/VirtualPC-KVM-QEMU/VM-Shared
sudo chown -R $USER:$USER /mnt/Daten/VirtualPC-KVM-QEMU/VM-Shared

Stellt sicher, dass der Benutzer Lese- und Schreibrechte hat.

6. Troubleshooting

Problem Ursache Lösung
Netzwerkpfad nicht gefunden Falsche IP oder Freigabename \\IHRE-HOST-IP\VMShare prüfen
Zugriff verweigert Falscher force user oder Ordnerrechte sudo chown auf den Ordner anwenden
Keine Verbindung Firewall blockt sudo firewall-cmd --add-service=samba --permanent && --reload
Gastzugriff nicht möglich guest ok = no In smb.conf auf yes setzen, systemctl restart smb nmb
Samba startet nicht Syntaxfehler in smb.conf sudo testparm prüfen

8. Zusammenfassung

  • :white_check_mark: Samba funktioniert im NAT-Modus – aber nur per IP-Adresse des Hosts, nicht per Hostname.

  • :white_check_mark: Unter Boot-Optionen in den VM-Einstellungen ist das NIC „Netzwerk“ nicht erforderlich zu aktivieren. Es ist für Netzwerkverbindungen.

  • :white_check_mark: Samba und VirtIO-FS können parallel laufen, auch auf demselben Ordner.

  • :white_check_mark: Ideal: VirtIO-FS für Performance, Samba für Flexibilität.

Parallelbetrieb: VirtIO-FS und Samba

Der gleichzeitige Betrieb von VirtIO-FS und Samba ist problemlos möglich. Beide Dienste arbeiten unabhängig voneinander:

  • VirtIO-FS: Paravirtuelle Schnittstelle über Shared Memory – hohe Performance, kein Netzwerk.

  • Samba: Netzwerkfreigabe über TCP/IP – flexibel, geräteübergreifend zugänglich.

Sie können parallel aktiv sein, ohne sich gegenseitig zu beeinträchtigen.

Empfohlene Praxis

Nutzung Empfehlung
Tägliche Arbeit in der Windows-VM Exklusiv über VirtIO-FS (Laufwerk Z:)
Zugriff von anderen Geräten Über Samba
Backup / Freigabe Samba, solange keine Schreibkonflikte entstehen

:light_bulb: Tipp: Nutze VirtIO-FS als primären Pfad, Samba als sekundären Zugriff. So kombinierst du Performance und Flexibilität sicher.

III) Extra: Deaktivierung der Windows-Sicherheitswarnung für virt-manager über Samba in Windows

Die Warnmeldung erscheint, weil Windows 10 die Dateien, die über Samba von deinem Linux-Host übertragen werden, als potenzielles Sicherheitsrisiko einstuft. Dies ist eine standardmäßige Sicherheitsmaßnahme von Windows.

1. Temporäre Lösung

Du kannst einfach auf “OK” klicken, um die Dateien trotz der Warnung zu verwenden. Bei jedem Zugriff müsstest du dies jedoch wiederholen.

2. Dauerhafte Lösungen

a) Dateien zur Ausnahmeliste hinzufügen:

  1. Klicke auf “Details ausblenden” in der Warnmeldung

  2. Aktiviere die Option “Blockierung für diese Dateien aufheben”

  3. Bestätige mit “OK”

b) Internetoptionen in Windows anpassen:

  1. Öffne die Windows-Systemsteuerung

  2. Gehe zu “Internetoptionen” → “Sicherheit” → “Lokales Intranet”

  3. Klicke auf “Sites” → “Erweitert”

  4. Füge den UNC-Pfad oder die IP-Adresse Ihres Linux-Servers hinzu

  5. Bestätige mit “OK”

c) Sicherheitszonen-Einstellungen ändern:

  1. Öffne die Windows-Systemsteuerung

  2. Gehe zu “Internetoptionen” → “Sicherheit”

  3. Wähle die Zone “Internet” oder “Lokales Intranet”

  4. Klicke auf “Stufe anpassen”

  5. Suche nach “Dateien herunterladen” und setze diese Option auf “Aktivieren”

d) Gruppenrichtlinien anpassen (für fortgeschrittene Benutzer):

  1. Öffne den Gruppenrichtlinien-Editor (gpedit.msc)

  2. Navigiere zu “Benutzerkonfiguration” → “Administrative Vorlagen” → “Windows-Komponenten” → “Anhänge”

  3. Konfiguriere die Einstellungen für Dateianhänge nach deinen Bedürfnissen

4 Likes

Geil. Großartig. Fantastisch!

Bei mir fkt. der Dateiaustausch - trotzdem: DANKE für deine Mühen
was für eine tolle Arbeit!

Vielen Dank, das ist eine super Anleitung. :clap: Danke für die viele Arbeit, die da drin steckt.

Danke, @Rulinux , für diese detailierte Anleitung.
Sollte man die ggf. übersetzen und/oder an anderer Stelle (wiki, o.ä.) ablegen, damit mehr Menschen davon profitieren können?

Gerne darf das durch die Redaktion hier in eine Wiki übernommen werden. Übersetzung nur, wenn ausdrücklich gewünscht und erforderlich.