Verwenden Sie virt-manager, um Dateien zwischen Linux-Host und Windows-Gast freizugeben?

26

Ist es möglich, die virtuelle Hardwareoption "Filesystem Passthrough" in virt-manager zu verwenden, um einen Ordner auf meinem Linux-Host für meinen Windows-Gast freizugeben? Ich habe einige Anleitungen gefunden, wie dies mit einem Linux-Gast gemacht werden kann. Wenn ich dies jedoch mit meinem Windows-Gast versuche, wird beim Versuch, die VM zu starten, die folgende Fehlermeldung angezeigt:

Error starting domain: Unable to read from monitor: Connection reset by peer

Traceback (most recent call last):   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 100, in cb_wrapper
    callback(asyncjob, *args, **kwargs)   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 122, in tmpcb
    callback(*args, **kwargs)   File "/usr/share/virt-manager/virtManager/domain.py", line 1210, in startup
    self._backend.create()   File "/usr/lib64/python2.7/site-packages/libvirt.py", line 698, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: Unable to read from monitor: Connection reset by peer

Ich habe versucht, eine Dokumentation zu finden, aber alles, was ich finden konnte, war die offizielle Seite, die auf eine FAQ und "einige Screenshots" verweist .

Blaker
quelle

Antworten:

16

Ich glaube nicht, dass dies mit Windows-Gästen möglich ist. Normalerweise richte ich einen Samba-Server auf dem Linux-KVM-Host ein und teile dann einen Ordner damit meinen KVM-Gästen.

Dateisystem-Passthrough

Die Dokumentation zur Freigabe des KVM-Hostverzeichnisses für die KVM-Gäste (Linux) finden Sie hier auf der Website von virt-manager. Die Seite trägt den Titel: Beispiel für die gemeinsame Nutzung von Host-Dateien mit dem Guest .

Samba einrichten

Die linux-kvm-Website enthält auch Anweisungen zum Einrichten von Samba. Diese Dokumentation finden Sie hier mit dem Titel: Tipp: Wie Sie mit Samba Dateien auf Ihrem Linux-Host für einen Windows-Gast freigeben können .

slm
quelle
Daumen hoch für den Teil "Samba einrichten". Es ist der sicherere Ansatz
pqnet
@pqnet: Könnten Sie bitte herausfinden, wie und warum es sicherer ist?
0xC0000022L
4
@ 0xC0000022L, da dies nicht davon abhängt, dass der Virtualisierer das Gastbetriebssystem effektiv austricksen kann. Dies kann zum Absturz führen, wenn sich das Betriebssystem ändert. Samba ist ein Netzwerkprotokoll, weshalb das Gastbetriebssystem weniger erwartet, was es kann und was nicht.
pqnet
6

Standarddateimanager von Gnome und KDE können mithilfe des SMB-Protokolls problemlos auf freigegebene Windows-Ressourcen zugreifen.
Sie müssen keinen Samba-Server auf einem Linux-Host-Computer installieren, da das Windows-Betriebssystem bereits über integrierte Samba-Kommunikationsprotokolle verfügt.

Angenommen, Ihr Gastbetriebssystem ist " Windows XP ", wählen Sie den Ordner aus, den Sie freigeben möchten, oder erstellen Sie einfach einen Ordner, z. B. "hostshare", und klicken Sie mit der rechten Maustaste darauf -> " Eigenschaften " -> Registerkarte " Freigabe " -> Wählen Sie " Diesen Ordner im Netzwerk freigeben " und " Netzwerkbenutzer dürfen meine Dateien ändern ".

Stellen Sie zu diesem Zeitpunkt sicher, dass die Firewall von Windows Zugriff auf freigegebene Datei- und Druckerressourcen bietet. Gehen Sie zu " Startmenü " -> " Einstellungen " -> " Systemsteuerung " -> " Windows-Firewall " -> Registerkarte " Ausnahmen " -> wählen Sie: -> " Datei- und Druckerfreigabe ".

Stellen Sie sicher, dass der Linux-Hostcomputer von der Windows-Gast-VM über das Netzwerk sichtbar ist. Also, von Windows 'Befehlszeilen-Typ: " ping 10.0.0.12 ", wobei in diesem Fall (als Beispiel) "10.0.0.12" die Host-IP-Adresse ist; Sie müssen es zu Ihren Selbst ändern. Wenn Sie die Antworten von echo nicht haben, müssen Sie sich mit der Fehlerbehebung befassen.
Und machen Sie dasselbe über die Linux-Befehlszeile: " ping -c3 192.168.122.216 ", wobei diese Nummern (als Beispiel) zur virt-IP-Adresse gehören, die der Gast-VM zugewiesen wurde; Sie müssen es zu Ihrem eigenen ändern.

Von Linux Host - Maschine offen " Nautilus " und gehen Sie auf " Datei " -> " Mit Server verbinden " -> in den " Server - Adresse " Box - Typ: " smb / 192.168.122.216 " -> " Connect ".
Das Nautilus-Fenster wird mit den durchsuchbaren Ressourcen Ihres in Windows integrierten Samba-Servers geöffnet. Sie können den Inhalt des Windows-Ordners " hostshare " anzeigen und darauf zugreifen . Das ist alles!

Andy
quelle
2

Ich glaube, @slm hat die beste Antwort geliefert. Es gibt jedoch einen anderen Anwendungsfall. Diese Alternative ist allerdings ein bisschen hacken.

Grobe Anleitung. Berücksichtigen Sie diese endgültigen Befehle nicht:

  1. Erstellen einer Image-Datei (MS-DOS-Diskette oder ISO-9660-CD)
  2. Formatieren Sie das Bild mit einem Dateisystem, z. B. mkfs.msdos
  3. Kopieren und Bearbeiten von Dateien auf dem Bild nach Bedarf, z. B. mit mcopy et al
  4. Image auf Gast-VM-CD-ROM oder Diskettenlaufwerk mounten

Dies ist nicht ideal, kann jedoch funktionieren, wenn Ihre Guest-VM keine Netzwerkprotokollverbindungen zwischen dom0 und Guest zulässt (z. B. während einer geschlossenen VPN-Sitzung).

Mehr Infos hier:

https://stackoverflow.com/q/11202706/3407600

0xSchäferhund
quelle
1

Eine schreibgeschützte Freigabe ist möglich (Windows-Gast hat R / W, und Linux-Host kann nur lesen), da Linux-Host NTFS auf Loopback-Geräten bereitstellen kann, vorausgesetzt, Sie verwenden "Raw" -Speicher für den Windows-Gast:

Angenommen, Sie haben Win.img als Raw-Image, es wird als Datenträger emuliert.

  • Schritt 1: Ermitteln Sie mit fdisk den Offset Ihres Dateisystems (da es sich um eine Festplatte handelt):
$ fdisk -lu Win.img

Disk Win.img: 16.3 GB, 16252928000 bytes
255 heads, 63 sectors/track, 1975 cylinders, total 31744000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3a793a79

    Device Boot      Start         End      Blocks   Id  System
    Win.img   *          63    31712309    15856123+   7  HPFS/NTFS/exFAT

Berechnen Sie jetzt den Versatz = 63 x 512 = 32256

  • Schritt 2: montieren Sie es
mount Win.img /mntpoint -o ro,loop,offset=32256

VORSICHT

Sie können es als RW mounten und Linux kann darauf schreiben, aber Ihr Dateisystem wird beschädigt! Weil sowohl Linux als auch Windows gleichzeitig auf das Dateisystem zugreifen! Sie können die gleichen freien Blöcke zuweisen, um die Dateien zu schreiben, die sie schreiben möchten!

Linux read ist in seltenen Fällen nicht stabil

Mit dieser Methode ist das Dateisystem sicher und es ist größtenteils in Ordnung, ein stabiles Lesen zu haben. Wie ich bereits sagte, greifen sie gleichzeitig auf das Dateisystem zu. Wenn Windows versucht, etwas zu schreiben, wird Linux möglicherweise nicht informiert und liest daher möglicherweise etwas, das beschädigt ist. Wenn Sie es jedoch vorsichtig verwenden, sollte der Lesevorgang sehr stabil sein.

Robin Hsu
quelle
3
Wie zuverlässig ist das? Daten können sich in Caches befinden. Schreibvorgänge sind in Bezug auf Lesevorgänge auf anderen Systemen nicht atomar.
Strg-Alt-Delor
0

Ich verwende Dokany + Win-SSHFS , um entfernte Ordner über ssh zu mounten. Lassen Sie sie das Aufholspiel spielen, nicht umgekehrt < böses Grinsen >

Arie Skliarouk
quelle
0

Die Lösung von Andy funktionierte für mich, Debian-Host und Windows-Gast. Beachten Sie, dass ich die spice-guest-tools mit einem speziellen Netzwerktreiber von redhat installiert habe.

Außerdem musste ich den Passwortschutz per smb entfernen. Hier bei diesem Link habe ich gefunden, wie ich das Passwort entfernen kann. Https://pureinfotech.com/setup-network-file-sharing-windows-10/

Thierry Vilmart
quelle