[linux-l] lokales Netz - NFS oder Samba?

olafBuddenhagen at gmx.net olafBuddenhagen at gmx.net
Fr Apr 13 19:59:44 CEST 2007


Hallo,

On Fri, Apr 13, 2007 at 04:04:42AM +0200, Frank Reker wrote:
> Am Fri 13. Apr 2007 11:32 +1000 schrieb Peter Ross:

> >Das wuerde selbst bei einer lokalen Platte passieren, nur zieht man
> >die seltener dem OS unter den Fuessen weg;-)
> 
> korrekt - von daher wuerd ich bei einem guten netzwerk-fs ein
> journaling erwarten, das solche probleme abfaengt.

Journalling hilft bei sowas herzlich wenig. Dafür braucht man eine
atomare Überrschreiboperation. Mangels Transkationen im Dateisystem-API
ist das schwierig, aber wie schon erwähnt machbar, indem man die neue
Datei erst schreibt, und dann erst an Stelle der alten einhängt. Das
muss das Programm aber selbst machen; trasparent geht das nicht.

Alternativ kann man natürlich versuchen mit Heuristiken zu erraten, was
atomar sein sollte... zfs benutzt wohl tatsächlich eine (recht simple)
Heuristik.

> >Eine vernuenftige Anwendung oeffnet eine neue Datei die erst nach
> >erfolgreichem Rueckschreiben geloescht wird, um ein Recovery zu
> >ermoeglichen.
> 
> aber je nach mount-option bekommt die applikation ueberhaupt nicht
> mit, das das rueckschreiben schief gegangen ist. und wenn man z.b. in
> vi mit ZZ oder :wq schreibt und gleichzeitig vi(m) beendet, dann kann
> es passieren, dass die datei abgeschnitten ist, und das .swp file
> trotzdem geloescht wurde, so dass ein recovery unmoeglich wird. und
> genau das ist mir passiert.

Sollte eigentlich keine Rolle spielen, wenn die Hauptdatei erst
geschrieben, und erst danach das Swapfile gelöscht wird... Vielleicht
spielt da Client-seitiges Caching übel mit. Dafür sehe ich keine
(korrekte) Lösung, außer auf Caching zu verzichten. Journaling würde in
Einigen Situationen helfen, aber in anderen die Probleme vergrößern.
(Wenn zwei verschiedene Dateien geschrieben werden, und von der ersten
sind die Daten nicht rechtzeitig angekommen, soll die zweite verworfen
werden?)

-Olaf-



Mehr Informationen über die Mailingliste linux-l