[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: NFS unmount, Stale NFS file handle, Nach Netzwerk trennung.



Am Dienstag, 20. März 2012 schrieb Michael Strauß:
> Am Sun, 18 Mar 2012 07:12:08 -0400
> 
> schrieb Vladislav Vorobiev <mymir.org@googlemail.com>:
> > Ich kann die Ressourcen auch in mounten oder unmounten
> > 
> > umount -fl /mnt/srv.pushka4
> > umount.nfs4: /mnt/srv.pushka4: Stale NFS file handle
> > umount.nfs4: /mnt/srv.pushka4: Stale NFS file handle
> 
> Du machst mit -l einen Lazy unmount. Das heißt das
> Dateisystem wird erst ausgehangen, bis alle
> Dateien geschlossen sind. Die Fehlermeldung deutet eventuell
> darauf hin, dass dies vermutlich niemals passieren wird.

Das stimmt so meines Wissens nicht. -l heißt sofort aushängen. Und 
Anwendungen, die dann noch drauf zugreifen, bekommen Fehler zurück. D.h. 
die Referenzen auf Dateien bleiben noch erhalten, solange sie in 
Verwendung sind.

Das ist schön zu beobachten, wenn man einen USB-Stick rauszieht. Gänge 
Desktop-Umgebungen/HAl/udisks schicken kann ein umount -l hinterher.

Also Obacht: -l geht daher mitunter zu Datenverlust!

> Parameter -l (lazy) zusammen mit -f (force) zu verwenden
> ist IMHO etwas strange.

Gar nicht mal.

-f bedeutet bei NFS, den Import auch dann auszuhängen, wenn der NFS-Server 
nicht mehr erreichbar ist.

Die Manpage zu umount bestätigt beide Sachverhalte:

       -f     Force unmount (in case of an unreachable NFS  system).
              (Requires kernel 2.1.116 or later.)

       -l     Lazy  unmount. Detach the filesystem from the filesys‐
              tem hierarchy now, and cleanup all references  to  the
              filesystem   as  soon  as  it  is  not  busy  anymore.
              (Requires kernel 2.4.11 or later.)

> > Wie kann ich die Ressourcen wieder unmounten.
> 
> Suche mit lsof alle Prozesse, die auf deine Shares zugreifen,
> Beende oder kille diese. Danach umounte, mounte und starte deine
> Prozesse wieder.
> 
> Hast du Prozesse, die _laufen_, auf deine Shares zugreifen
> und die du nicht beenden willst, dann kille nur die Hängenden.
> Lass das Dateisystem eingehangen und mache einen Overlay-Mount
> über den existierenden Mount-point.
> 
> Prozesse, denen die NFS-File-Handes gestohlen wurden, kriegt
> du meiner Meinung nicht wieder ans laufen, Aussichtslos.

Wenn NFS mit der Option "intr" gemountet ist, ist in der Regel zumindest 
auf der Shell, es sollte aber auch via kill -SIGINT gehen, möglich, 
hängengebliebende Prozesse, die auf NFS warten, abzubrechen. Auch hier 
besteht die Gefahr des Datenverlustes.

Ob das im Falle eine Stale NFS Filehandles auch noch geht, habe ich nie 
getestet.

> > Ich habe auch alle Prozesse unter ps -aux|grep nfs gekillt. Ohne
> > Ergebnis.
> 
> NFS bis Version 3 ist zustandslos. Das heißt, gleiche Operationen
> führen zum gleichen Ergebnis, egal ob du zwischen drin NFS neu
> startest.

Wenn Du mit zustandslos UDP meinst, das stimmt so nicht. NFSv3 verwendet 
standardmäßig TCP.

Allerdings ist NFSv3 im Vergleich zu NFSv4 auf der NFS-Protokoll-Ebene 
dann doch weitgehend stateless. Aber eben nicht ganz, wie Stale NFS 
Filehandle zeigt.

Ciao,
-- 
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de
GPG: 03B0 0D6C 0040 0710 4AFA  B82F 991B EAAC A599 84C7


Reply to: