Dateifreigabe zwischen Ubuntu VM und Windows 7

4

Ich habe Ubuntu 12.04 als Gast in einer virtualisierten VMware Workstation 9-Sitzung auf einem Windows 7-Host ausgeführt. Der Windows-Computer gibt einen Ordner über CIFS für den Ubuntu-Computer frei, und der Ubuntu-Computer stellt den freigegebenen Ordner beim Start automatisch bereit, und zwar dank der folgenden Zeile in der /etc/fstabDatei:

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

Die Dateifreigabe über die Bereitstellung funktioniert einwandfrei, bis die virtuelle Ubuntu-Maschine nach dem Anhalten fortgesetzt oder von einem Snapshot wiederhergestellt werden muss. Dies geschieht normalerweise nach einem Neustart des Windows-Hostcomputers oder nach einem nächtlichen Herunterfahren.

Nach der Wiederaufnahme von Ubuntu werden in dem Ordner, der den Mount des freigegebenen Ordners enthält, keine Elemente aufgelistet. Das Nautilus-Fenster bleibt mit "Loading ..." in der unteren rechten Ecke für lange Zeit komplett leer, obwohl sich in diesem Ordner viele andere Ordner und Dateien befinden, die angezeigt werden können.

Ein Neustart des Ubuntu-Rechners hilft, ist aber nicht praktikabel: Es dauert ewig, bis Ubuntu heruntergefahren ist. Es hängt nur auf einem der letzten Befehlszeilenbildschirme und wartet verzweifelt auf etwas (wenn auf den Mount zugegriffen werden kann, gibt es kein solches Problem). Im Moment besteht die einzige Möglichkeit darin, Ubuntu brutal auszuschalten und dann wieder einzuschalten, um auf den Mount zugreifen zu können, was natürlich auch nicht praktisch ist.

Ich vermute, dass beim Ändern einiger CIFS / Samba-Kommunikationsparameter (nach dem Neustart von Windows) das wiederhergestellte Image der virtuellen Ubuntu-Maschine nicht aufholt.

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

Desmond Hume
quelle
Ich glaube, dies ist eher ein Problem im Zusammenhang mit der von Ihnen verwendeten virtuellen Software und dem Host, auf dem Sie sie verwenden. Können Sie hinzufügen, welche Virtualisierungssoftware Sie verwenden?
Luis Alvarado
Haben Sie versucht, die Freigabe erneut einzuhängen? Wie: umount <localsharepath>; mount -a.
Pavel A
@PavelA Ja. Es sagt immer "Gerät ist beschäftigt".
Desmond Hume
(1) Gibt es eine Daemon-Software (Datenbank usw.), die Dateien in der Freigabe verwendet? (2) Irgendeine Fehlermeldung von Syslog?
John Siu
@JohnSiu (1) Keine solche Daemon-Software, nichts sperrt Dateien in der Freigabe. (2) Die einzige Art von Syslog-Eintrag, die ich gefunden habe, ist CIFS VFS: Server <remotehost> has not responded in 300 seconds. Reconnecting.... Jeder, der Zugriff auf einen PC und eine Testversion von VMware Workstation hat, kann das Problem problemlos replizieren. Es ist nicht einmal notwendig, Windows neu zu starten, um es in einen realistischen Kontext zu stellen. Starten Sie einfach den Windows-Dienst "Server" neu, der für die gemeinsame Nutzung von Dateien unter Windows verantwortlich ist, während Ubuntu angehalten ist.
Desmond Hume

Antworten:

2

Ich empfehle, autofsanstelle eines statischen fstabEintrags zu verwenden. Siehe: https://help.ubuntu.com/community/Autofs

tlo
quelle
1
Nach mehreren Tests muss ich sagen, dass das Problem nicht behoben ist autofs. Ja, die Freigabe wird nach einer bestimmten Zeit automatisch entladen. Wenn der Ubuntu-Rechner angehalten wird oder ein Snapshot erstellt wird, nachdem die Freigabe automatisch entladen wurde, ist die Bereitstellung nach der Wiederaufnahme des Ubuntu-Rechners in Ordnung. Wenn Ubuntu jedoch angehalten wird, bevor die Freigabe automatisch abgemeldet wird, tritt bei der Wiederaufnahme dieselbe Sammlung von Problemen auf. Wenn ich die Anzahl der Sekunden für die automatische Deaktivierung auf einen kleinen Wert einstelle, z. B. 10 Sekunden, werden die Nautilus-Fenster beim Durchsuchen der freigegebenen Dateien spontan geschlossen.
Desmond Hume
2

1. umount -f

Dies ist keine Lösung oder Umgehung, sondern eine Prozedur (eine nervige).

Versuchen Sie nach dem Fortsetzen der VM nicht, das Freigabelaufwerk mit Nautilus oder einem anderen Programm anzuzeigen. Tu es nicht ls. Jeder Zugriff löst eine 5-minütige Zeitüberschreitung aus und macht die Freigabe besetzt. Mach das einfach umount -fvorher alles.

    umount -f <localsharepath>

-f Deaktivieren erzwingen (im Fall eines nicht erreichbaren Servers).

Solange die Freigabe nicht belegt ist, wird die Freigabe sofort abgemeldet, ohne dass das 5-minütige cifs-Timeout ausgelöst wird.

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

2. Ändern Sie smbfs in cifs mitdefaults

//<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.

Gestützt auf den Kommentar dieses Blogs (kann keinen verbindlicheren Verweis finden)

stintel Freitag, 9. Mai 2008: Ein weiterer Vorteil von CIFS ist, dass es einen Netzwerkausfall oder sogar einen Neustart des Systems überstehen sollte, von dem aus Sie eine Freigabe bereitstellen

3. Deaktivieren Sie Opportunistic Locking und Lookup Caching (Keine Auswirkung auf die Reduzierung des 5-minütigen Verbindungs-Timeouts).

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

4. Check Open File (Nicht zutreffend basierend auf Kommentar)

Überprüfen Sie nach dem Fortsetzen von Ubuntu VM, ob ein Benutzer / Prozess eine Datei / ein Verzeichnis im Freigabeordner verwendet

lsof | grep '<localsharepath>'

Wenn ein Benutzer / Prozess Dateien / Verzeichnisse in <localsharepath> verwendet, wird Folgendes angezeigt device busy(dies ist unabhängig davon, wie eingehängt , lokal oder remote).

John Siu
quelle
Geändert smbfszu cifsund den Ubuntu - Rechner neu gestartet. Die Probleme bestehen immer noch. Mehrmals wiederholt, keine Verbesserung.
Desmond Hume
Können Sie die Freigabe für cifs entfernen?
John Siu
Das Gleiche wie bei smbfs, es heißt "Gerät ist beschäftigt".
Desmond Hume
Wird dieser Einhängepunkt von Samba geteilt? Stoppen Sie Samba, bevor Sie das Mounten beenden.
John Siu
Nein, dieser Einhängepunkt wird nur freigegeben, nicht freigegeben. Der Ubuntu-Rechner ist niemals ein File-Sharing-Server, sondern nur ein Client.
Desmond Hume
0

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

Wenn nicht, installieren Sie VMTools auf dem Ubuntu-Gastsystem. Dann können Sie Dateien zwischen Host und Gast ziehen und ablegen.

Caiguanhao
quelle