Wie erzwingen Sie das Aufheben der Bereitstellung einer CIFS-Verbindung?

149

Ich habe eine CIFS-Freigabe auf einem Linux-Computer bereitgestellt. Der CIFS-Server ist ausgefallen oder die Internetverbindung ist ausgefallen, und alles, was den CIFS-Mount berührt, dauert jetzt einige Minuten, bis das Zeitlimit überschritten ist, und kann nicht beendet werden, während Sie warten. Ich kann ls nicht einmal in meinem Home-Verzeichnis ausführen, da sich ein Symlink im CIFS-Mount befindet und ls versucht, ihm zu folgen, um zu entscheiden, welche Farbe er haben soll. Wenn ich versuche, es zu umounten (auch mit -fl), hängt der Umount-Prozess genau wie ls. Nicht einmal Sudo Kill -9 kann es töten. Wie kann ich das Aufheben der Bereitstellung des Kernels erzwingen?

Smoofra
quelle
Ähnlich:
Kemal

Antworten:

185

Ich benutze faul unmount: umount -l(das ist ein Kleinbuchstabe L)

Faul absteigen. Trennen Sie das Dateisystem jetzt von der Dateisystemhierarchie und bereinigen Sie alle Verweise auf das Dateisystem, sobald es nicht mehr ausgelastet ist. (Benötigt Kernel 2.4.11 oder höher.)

Kemal
quelle
42
Das hat bei mir zunächst nicht funktioniert. Nachdem ich eine Weile experimentiert hatte (jedes Mal in einem neuen virtuellen Terminal), kam ich auf Folgendes : sudo umount -a -t cifs -l. Entweder hat dies den Trick getan, oder es dauerte eine Weile (120s? 300s?), Bis der erste Umount abgeschlossen war. Ich habe viele Warnungen erhalten, dass der Betrag länger als 120 Sekunden blockiert ist.
Peter Jaric
2
Und dann musste ich alle hängenden Umounts töten, bevor ich wieder aufsteigen konnte.
Peter Jaric
13
Ich musste es auch sudo umount -a -t cifs -l zum Laufen bringen.
Joma
4
Das hat bei mir nicht wirklich funktioniert. Ich habe alles andere oben ausprobiert und das cifs-Mount ist aus meiner / etc / mtab-Liste verschwunden, kann aber nicht erneut gemountet werden, sodass es praktisch nutzlos ist. Die CIFS-Bereitstellung friert ein, wenn sich mein Computer anhält, während die CIF-Freigabe bereitgestellt wird.
DH4
Ich stimme zu, umount -a -t cifs -l war das, was ich auch brauchte, um an dem gefürchteten "Host is Down" vorbei zu kommen.
Hündchen
70

umount -a -t cifs -l

hat für mich unter CentOS 6.3 wie ein Zauber funktioniert. Es ersparte mir einen Neustart des Servers.

ivanlan
quelle
8
Würde es Ihnen etwas ausmachen, näher darauf einzugehen, was -aund -lSchalter sind und wie sie helfen?
Isaac
10
-a und -t cifs heben die Bereitstellung aller cifs-Dateisysteme auf. Es ist besser, die anzugeben, die Sie
aushängen
2
Dies ist perfekt, wenn Sie über einen Dateibrowser gemountet haben und den fehlerhaften Mount-Punkt nicht finden können - vorausgesetzt, es macht Ihnen nichts aus, alles zu entfernen!
Salbei
1
Danke, das hat heute viel Zeit gespart!
Agam
13

Bei RHEL 6 funktionierte dies:

umount -f -a -t cifs -l 
Andy Fraley
quelle
Dies hat funktioniert, muss volle 30 Minuten (Timeout) warten, bevor ich wieder einsteigen kann. Wahrscheinlich am besten ein Soft Mount machen, wie jnice anzeigt.
XMAN
11

Dies funktioniert bei mir (Ubuntu 13.10 Desktop auf einem Ubuntu 14.04 Server): -

 sudo umount -f /mnt/my_share

Montiert mit

 sudo mount -t cifs -o username=me,password=mine //192.168.0.111/serv_share /mnt/my_share

Dabei ist serv_share das Setup, auf das in der Datei smb.conf verwiesen wird.

Phil Johnson
quelle
6

Ich hatte dieses Problem einen Tag lang, bis ich die richtige Lösung gefunden hatte. Mounten Sie die Freigabe mit der Option "soft", anstatt zu versuchen, das Aufheben der Bereitstellung einer angehängten SMB-Freigabe zu erzwingen. Wenn ein Prozess versucht, eine Verbindung zu der nicht verfügbaren Freigabe herzustellen, wird der Versuch nach einer bestimmten Zeit beendet.

weich Machen Sie die Halterung weich. Fehlerhafte Dateisystemaufrufe nach einigen Sekunden.

mount -t smbfs -o soft //username@server/share /users/username/smb/share

stat /users/username/smb/share/file
stat: /users/username/smb/share/file: stat: Operation timed out

Möglicherweise keine echte Antwort auf Ihre Frage, aber es ist eine Lösung für das Problem

jnice
quelle
19
Wenn Sie sich das ansehen, werden man mount.cifsSie feststellen, dass dies softtatsächlich die Standardeinstellung ist.
Benj
2

Versuchen Sie umount -f / mnt / share. Funktioniert einwandfrei mit NFS, nie mit CIFS versucht.

Schauen Sie sich auch autofs an, es wird die Freigabe nur beim Zugriff bereitstellen und die Bereitstellung nach den Welten aufheben.

Es gibt ein gutes Tutorial unter www.howtoforge.net

Sunny Milenov
quelle
5
Leider funktioniert -f nicht mit CIFS. der umount hängt immer noch nur.
Smoofra
2

Ich hatte ein sehr ähnliches Problem mit Davfs. In der Manpage von habe umount.davfsich festgestellt, dass die -f -l -n -r -vOptionen von ignoriert werden umount.davfs. Um mein Davfs-Mount zwangsweise zu entfernen, musste ich verwenden umount -i -f -l /media/davmount.

Benedikt Köppel
quelle
1

Es gibt eine -f-Option zum Umhängen, die Sie ausprobieren können:

umount -f /mnt/fileshare

Geben Sie die Option '-t cifs' zum Mounten an? Stellen Sie außerdem sicher, dass Sie nicht die Option "schwer" zum Mounten angeben.

Möglicherweise möchten Sie auch fusesmb in Betracht ziehen , da das Dateisystem im Benutzerbereich ausgeführt wird. Sie können es wie jeden anderen Prozess beenden .

Chris AtLee
quelle
4
-f und -t helfen nicht, der Betrag hängt immer noch.
Smoofra
Haben Sie einen Neustart durchgeführt, seit Sie die Option '-t cifs' zum Mounten hinzugefügt haben? Ich glaube nicht, dass Sie jetzt etwas tun können, um Ihren festsitzenden Montagepunkt zu reparieren. Ihre einzige Hoffnung besteht darin, ihn auf eine Weise zu montieren, die in Zukunft widerstandsfähiger gegen Fehler ist.
Chris AtLee
1
umount -f -t cifs -l /mnt &

Seien Sie vorsichtig &, lassen Sie umountes im Hintergrund laufen. umountLöst zuerst das Dateisystem ab, sodass Sie nichts finden /mnt. Wenn Sie den dfBefehl ausführen , wird er umount /mntzwangsweise ausgeführt.

zhjb7
quelle
-2

Bei RHEL 6 hat das auch bei mir funktioniert:

umount -f -a -t cifs -l FOLDER_NAME

Chataros
quelle
-8

Ein fauler Unmount erledigt den Job für Sie.

umount -l <mount path>
JimmyPheonix
quelle