Frage Dateifreigabe zwischen Ubuntu VM und Windows 7


Ich habe Ubuntu 12.04 als Gast in einer virtualisierten VMware Workstation 9 Sitzung auf einem Windows 7 Host laufen. Der Windows-Rechner teilt einen Ordner mit dem Ubuntu-Rechner über CIFS und der Ubuntu-Rechner mountet den freigegebenen Ordner automatisch beim Start dank dieser Zeile /etc/fstab Datei:

//<remotehost>/<sharename> <localsharepath> cifs soft,uid=1000,username=<remoteusername>,password=<remotepassword> 0 0

Die Dateifreigabe über das Mount funktioniert einwandfrei, bis die virtuelle Ubuntu-Maschine nach dem Pausieren wieder aufgenommen oder aus einem Snapshot wiederhergestellt werden muss. Dies tritt normalerweise auf, nachdem der Windows-Hostcomputer nach einem nächtlichen Herunterfahren neu gestartet oder gestartet wurde.

Nachdem Ubuntu wieder aufgenommen wurde, listet der Ordner, der den Mount des freigegebenen Ordners enthält, keine Elemente auf. Das Nautilus-Fenster bleibt lange Zeit völlig leer mit "Loading ..." in der unteren rechten Ecke, trotz der Tatsache, dass viele andere Ordner und Dateien in diesem Ordner angezeigt werden.

Das Neustarten der Ubuntu-Maschine hilft zwar, ist aber nicht praktikabel: Ubuntu braucht ewig, um herunterzufahren, es hängt einfach auf einem der letzten Befehlszeilen-Bildschirme, die verzweifelt auf etwas warten (wenn der Mount zugänglich ist, gibt es kein solches Problem). Im Moment ist die einzige Möglichkeit, Ubuntu brutal auszuschalten und dann wieder einzuschalten, um auf das Mount zugreifen zu können, was natürlich auch nicht praktikabel ist.

Meine Vermutung ist, dass wenn einige CIFS / Samba-Kommunikationsparameter geändert werden (nachdem Windows neu gestartet wurde), das wiederhergestellte Image der virtuellen Ubuntu-Maschine irgendwie nicht aufholen kann.

Selbst mit VMware Tools, die auf dem Ubuntu-Computer installiert sind, funktioniert die freigegebene Ordnerfunktion von VMware, die als Alternative dienen könnte, nicht für Ubuntu 12 (und viele andere Linux-Distributionen). Aber selbst wenn dies der Fall wäre, wäre CIFS / Samba-Sharing weiterhin für die Dateifreigabe mit anderen virtuellen Maschinen erforderlich.


4


Ursprung


Es ist meiner Meinung nach eher ein Problem im Zusammenhang mit der virtuellen Software, die Sie verwenden und auf welchem ​​Host Sie es verwenden. Können Sie hinzufügen, welche Virtualisierungssoftware Sie verwenden? - Luis Alvarado♦
Haben Sie versucht, die Freigabe erneut zu installieren? Mögen: umount <localsharepath>; mount -a. - Pavel A
@ PavelA Ja. Es sagt immer "Gerät ist beschäftigt". - Desmond Hume
(1) Gibt es eine Daemon-Software (Dababase usw.), die Dateien in der Freigabe verwendet? (2) Jede Fehlermeldung von Syslog? - John Siu
@JohnSiu (1) Keine solche Daemon-Software, nichts sperrt irgendwelche der Dateien in der Freigabe. (2) Der einzige Typ von Syslog-Eintrag, den ich gefunden habe, ist CIFS VFS: Server <remotehost> has not responded in 300 seconds. Reconnecting.... Jeder mit Zugriff auf einen PC und mit einer Testversion von VMware Workstation kann das Problem problemlos replizieren. Es ist sogar nicht nötig, Windows neu zu starten, um es in einen realistischen Kontext zu stellen. Starten Sie einfach den Windows-Dienst namens "Server", der für die Dateifreigabe von Windows verantwortlich ist, während Ubuntu pausiert ist. - Desmond Hume


Antworten:


Ich empfehle zu verwenden autofs statt einer statischen fstab Eintrag. Sehen: https://help.ubuntu.com/community/Autofs


2



Nach einigen Tests muss ich sagen, dass das Problem nicht weggeht autofs. Ja, die Freigabe wird automatisch nach einer bestimmten Zeit aufgehoben und wenn der Ubuntu-Rechner pausiert oder ein Snapshot wird, nachdem die Freigabe automatisch aufgehoben wurde, ist alles in Ordnung, nachdem der Ubuntu-Rechner wieder gestartet wurde. Wenn Ubuntu jedoch pausiert wird, bevor die Freigabe automatisch aufgehoben wird, wird beim Wiederaufnehmen die gleiche Sammlung von Problemen angezeigt. Und wenn ich die Anzahl der Sekunden für die automatische Abschaltung auf einen kleinen Wert, z. B. 10 Sekunden, einstelle, beginnen sich die Nautilus-Fenster beim Durchsuchen der freigegebenen Dateien spontan zu schließen. - Desmond Hume


1. umount -f

Dies ist weder eine Lösung noch eine Lösung, sondern eine Prozedur (eine lästige).

Versuchen Sie nach der VM-Wiederaufnahme nicht, das Freigabe-Laufwerk mit Nautilus oder einem anderen Programm anzuzeigen. TU es nicht ls zu ihm. Jede Art von Zugriff führt zu einem Timeout von 5 Minuten und macht die Freigabe aktiv. Mach einfach das umount -f vor allem.

    umount -f <localsharepath>

-f Erzwinge die Bereitstellung (im Falle eines nicht erreichbaren Servers).

Solange die Freigabe nicht belegt ist, wird die Freigabe sofort aufgehoben, ohne dass die Zeitüberschreitung von 5 Minuten cifs ausgelöst wird.

Dies ist definitiv nicht ideal, aber es erfordert keinen Neustart und die Freigabe kann sofort wieder bereitgestellt werden.

2. Ändern smbfs zu cifs mit defaults

//<remotehost>/<sharename> <localsharepath> cifs defaults,uid=1000,username=<remoteusername>,password=<remotepassword> 0 0

Es ist offiziell, dass smbfs nicht mehr gepflegt wird

smbfs wurde in den letzten Jahren nicht gepflegt. Stattdessen konzentrierte sich die Entwicklung auf eine andere Implementierung des CIFS-Protokolls im Kernel. Weitere Informationen finden Sie im CIFS VFS.

Basis auf Kommentar von dieser Blog (kann keine autoritative Referenz finden)

stintel Freitag, 9. Mai 2008: Eine weitere nette Sache über CIFS ist, dass es einen Netzwerkausfall oder sogar einen Neustart des Systems, von dem Sie eine Freigabe durchführen, übersteht

3. Deaktivieren Sie das Opportunistic Locking und das Lookup Caching (kein Effekt beim Reduzieren des 5min Verbindungstimeouts)

echo '0' > /proc/fs/cifs/OplockEnabled
echo '0' > /proc/fs/cifs/LookupCacheEnabled

4. Überprüfen Sie die Datei öffnen (nicht anwendbar auf Kommentar)

Überprüfen Sie nach der Ubuntu VM-Wiederaufnahme, ob ein Benutzer / Prozess vorhanden ist Verwenden Sie eine beliebige Datei / Verzeichnis im Freigabeordner

lsof | grep '<localsharepath>'

Wenn ein Benutzer / Prozess Dateien / Verzeichnis in <localsharepath> verwendet, erhalten Sie device busy(Dies ist unabhängig davon, wie es mount, lokal oder remote ist).


2



Geändert smbfs zu cifs und startete den Ubuntu-Rechner neu. Die Probleme bestehen immer noch. Mehrfach wiederholt, keine Verbesserung. - Desmond Hume
Können Sie die Freigabe mit cifs abmelden? - John Siu
Das Gleiche wie mit smbfsEs heißt "Gerät ist beschäftigt". - Desmond Hume
Wird dieser Mount-Punkt von Samba geteilt? Stoppen Sie Samba, bevor Sie sie aushängen. - John Siu
Nein, dieser Mount-Punkt ist nur freigegeben, nicht out. Der Ubuntu-Rechner ist niemals ein File-Sharing-Server, sondern nur ein Client. - Desmond Hume


Wenn Sie häufig Dateien zwischen Host und Gast freigeben, verwenden Sie FTP oder SFTP oder sogar Versionskontrollsoftware wie Git. Sie sind stabiler und nützlicher im Vergleich zu diesen Mount-Dingen.

Wenn nicht, installiere VMTools auf Gast Ubuntu. Dann können Sie Dateien zwischen Host und Gast ziehen und ablegen.


0