[linux-l] Lock-Dateien vs. Lock-Verzeichnisse

Volker Grabsch vog at notjusthosting.com
So Jul 16 22:49:23 CEST 2006


Liebe Gruppe,

ich hatte vor längerer Zeit mit einem erfahrenen Programmierer in
der BePHPUG ein kleines Gespräch. Es ging um Thema Portabilität,
Lock-Files und Datenbanken. Damals sprach er folgenden Satz aus,
der mir bis heute nicht aus dem Kopf geht:

    "mkdir" ist auf jedem Betriebssystem atomisch.

Daraus folgt sofort, dass es die ideale Alternative zu Lock-Files
ist, und ein guter Ausgangspunkt für temporäre Dateien.

Aber es widerspricht meiner Alltagserfahrung mit Unix-Systemen,
auch denen praktisch jeder konkurrierende Zugriff über Lock-Dateien
geregelt wird, nicht über Verzeichnisse.

Also ist diese Idee entweder genial und unkonventionell, oder ich
übersehe einfach einen wichtigen Punkt. Deshalb interessiert mich
eure Meinung dazu.


Bei Dateien hat man das Problem, dass ein "open" normalerweise
immer funktioniert, egal ob die Datei schon existiert oder nicht.
Ohne einen besonderen Mechanismus sind also stets zwei Aktionen
notwendig:

a) überprüfen, ob die Datei schon da ist
b) Datei öffnen

Wenn das zwei Prozesse fast gleichzeitig tun, hat man die üblichen
Probleme. Ohne einen System-Aufruf zum exklusiven Öffnen von Dateien
ist man also erschossen.

Bei einem "mkdir" kann einem das nicht passieren. Dort geschehen
a) und b) immer in einem Schritt, also atomisch.

Nun ist aber "mkdir" auf allen Betriebssystemen vorhanden, während
die konkrete Realisierung von exklusiven Dateien von System zu System
abweicht. Hinzu kommen Probleme mit buggy Implementierungen von
Lock-Files. Ich höre z.B. jeden darüber jammern, der NFS einsetzt.


Wenn ein "mkdir" sowohl portabel ist, als auch super für Locking-
Zwecke funktioniert, wieso wird es nicht benutzt? Oder gibt es
Projekte, die das so machen, aber dadurch noch mehr Verwirrung
und Schaden angerichtet haben?

Wäre schön, wenn mich jemand darüber aufklären könnte.


Viele Grüße,

    Volker

-- 
Volker Grabsch
---<<(())>>---
Administrator
NotJustHosting GbR



Mehr Informationen über die Mailingliste linux-l