Vermische Datensätze / NFS / SMB
Anando Eger
anando at aneg-dv.de
Fr Okt 13 12:00:47 CEST 2000
Liebe Liste,
ich habe mit gesteigertem Interesse die Diskussion zu den "vermischen Datensätzen"
verfolgt und möcht kurz meine Erfahrungen zum Thema darstellen:
Vor einiger Zeit habe ich mal ernsthaft versucht, Allegro-C (V16) im Netzwerk auf
einer SMB-Emulation (Samba) auf einem LINUX-Server zu installieren. Um es
vorwegzunehmen: Danach habe ich wieder einen alten Novell-Server reaktiviert.
Die Fehler, die auftraten, sahen wie folgt aus:
- "vermischte Datensätze"
- gesperrte TBL-Datei äußerst häufig
- fehlerhaft aktualisierte Indexeinträge (nicht gelöscht oder nicht ergänzt)
- fehlerhaft aktualisierte tbl-Datei ---> wrong records
Im Zuge dieses Versuchs habe ich mehrere Tage mit Debugging-Sitzungen und dem
Studium der Samba-Quellen zugebracht, was mich zu folgenden Erkenntnissen führte:
- mehrere Allegro-Programme öffnen ein- und dieselbe Datei gleichzeitig
schreibend, bei alf ist es sogar so, das innerhalb des gleichen Programms
einige Dateien mehrfach (!!!) schreibend geöffnet werden (offenbar vom
Hauptprogramm und von Unterprogrammen noch einmal)
- das NFS des UNIX (LINUX ist eins) erlaubt es immer NUR EINEM PROZESS,
eine Datei für den Schreibzugriff zu öffnen.
- das mehrfache, gleichzeitige Öffnen einer Datei für den Schreibzugriff wird
also entweder schon vom NFS-Clienten
unter Windows, oder im Fall LINUX, vom SMB-System (Samba) SIMULIERT.
Das geschieht so, dass vom simulierenden Programm implizite LOCKS erzeugt
werden und Schreibzugriffe mehr oder weniger erfolgreich in (RE)OPEN for WRITE -
WRITE - REOPEN for READ-Sequenzen zerlegt und dann zeitlich nacheinander
ausgeführt werden. Das ist schon anspruchsvoll genug und würde auch noch zuver-
lässig funktionieren, wenn nicht Windows noch mit seinen Netzwerk-Caching-
Algorithmen "dazwischenfunken" würde. Windows erwartet nämlich, dass der
Client vom Server benachrichtigt wird, wenn auf dem Server eine offene Datei
durch einen anderen Prozess verändert worden ist. Empfängt der Client diese
Meldung aus irgend einem Grund nicht oder einfach nur zu spät (es gibt
Netzwerk-Laufzeiten!!!), gibt's Datenmüll - was in Praxis dann auch passiert
(übriges auch in Peer-to-Peer-Netzen zwischen Windows-PC) Die Folge sind
die oben beschriebenen Effekte.
praktische Schlußfolgerungen für mich:
- ich installiere Allegro im Netzwerk möglichst nur auf Novell-Servern, andernfalls
weise ich die Anwender explizit auf erhöhte Fehleranfälligkeit hin
- für UNIX oder LINUX als Server-System bleibt vorerst wohl nur Avanti.
- in der .cfg wird ein möglichst großer Wert für die Anzahl der Füllzeichen eingetragen
(bis es schmerzt). Das senkt die Häufigkeit der Umspeichervorgänge in den
.xLD-Dateien und führt signifikant zur Verringerung der Fehlerhäufigkeit.
In dem Zusammenhang würde ich die von Herrn Eversberg schon einmal als möglich
angedeutete Bereitstellung der Allegro-Datenbank-Routinen als OpenSource bzw.
unter GNU-Lizenz seeeeeehr begrüßen .... es würde die Fehlersuche in den beschrie-
benen Fällen erleichtern.
Viele Grüße - Anando Eger
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : anando.vcf
Dateityp : text/x-vcard
Dateigröße : 296 bytes
Beschreibung: Visitenkarte f?r Anando Eger
URL : <http://bibservices.biblio.etc.tu-bs.de/pipermail/allegro/attachments/20001013/7d6f2dc1/attachment.vcf>
Mehr Informationen über die Mailingliste Allegro