[linux-l] Serveraufbau

Peter Ross Peter.Ross at alumni.tu-berlin.de
So Dez 11 23:42:54 CET 2005


On Sun, 11 Dec 2005, Jan-Benedict Glaw wrote:

> On Sun, 2005-12-11 22:12:41 +1100, Peter Ross <Peter.Ross at alumni.tu-berlin.de> wrote:
> > On Sat, 10 Dec 2005, Boris Kirkorowicz wrote:
>
> [NFS]
>
> > Die Anwendung liest doch an einem socket, und TCP ist dafuer
> > verantwortlich, dass die Daten sauber uebertragen werden.
>
> Zumindest die alten NFS-Versionen machen UDP. Heisst: ein Grossteil der
> Datenpruefung findet in der Tat im NFS-Server statt.

Ja, fuer NFS ueber UDP ist das richtig. Aber "im NFS-Server" heisst auch:
der NFS-Server bastelt die Pakete zusammen.

Die Anwendung (der Prozess, der ueber NFS in ein File schreibt) braucht
davon nichts zu wissen, er bekommt das Resultat einer VFS-Operation wie
write, als wenn er lokal schreiben wuerde, und muss sich darauf verlassen
koennen, dass die Daten auch wirklich geschrieben wurden. Sonst muesste
jede Anwendung sich nochmal vorlesen lassen, was denn da eben geschrieben
wurde. Ein gruseliger Gedanke.

Also, egal ob UDP oder TCP - wenn da Nullen geschrieben wurden, ist das
ein Implementierungsfehler. Wie Du richtig bemerkst, haengt es vom
Protokoll ab, auf welcher Ebene der Bug liegt - bei UDP im NFS-Server, bei
TCP im TCP/IP-Stack.

Es ist definitiv kein Feature! NFS sieht saubere Methoden vor, um mit
Paketverlusten umzugehen und die Datenintegritaet zu gewaehrleisten.

Allerdings ist mein Vertrauen in die Linux-Implementierung beschraenkt.
Ich habe zuviel Murks im Code gesehen und zuviel Aerger gehabt (u.a.
kaputte Dateien durch unsauberes Locking, fehlendes BSD-Style-Locking,
NFS-Filehandle, die invalid werden, wenn sich der Linkcount einer Datei
aendert, um Beispiele zu nennen),

um Linux gern als NFS-Server einzusetzen.

Gruss
Peter



Mehr Informationen über die Mailingliste linux-l