Für den Linux-Kernel wurde das Dateisystem DLMPFS vorgeschlagen

Alexander Aring von der Firma Red Hat, der die Subsysteme IEEE 802.15.4, DLM und flock/fcntl im Linux-Kernel betreut, hat in der Mailingliste der Kernel-Entwickler ein spezialisiertes Dateisystem DLMPFS vorgestellt. Das vorgeschlagene Dateisystem bietet eine Schicht für verteilte Datei-Sperren, die auf DLM (Distributed Lock Manager) und ramfs basiert. Die Implementierung von DLMPFS ist in Form eines Patch-Sets für den Linux-Kernel 6.19 verfügbar.

DLMPFS ermöglicht die Arbeit mit einer für mehrere Hosts gemeinsamen Dateihierarchie, das Erstellen und Löschen von Dateien und Verzeichnissen sowie das Setzen und Aufheben von Sperren auf Dateien mithilfe der Standardfunktionen flock() und fcntl(). Dabei erlaubt DLMPFS weder das Schreiben noch das Lesen von Daten aus Dateien, sondern beschränkt sich ausschließlich auf Sperrvorgänge. Eine Einschränkung ist auch, dass der Status einer Sperre nur ermittelt werden kann, wenn der vollständige Dateipfad zur gesperrten Datei bekannt ist (DLM erfordert den Ressourcennamen zur Bestimmung der Sperre).

Mit DLMPFS können bestehende Anwendungen, die auf das Setzen von Sperren über die API flock/fcntl angewiesen sind, leicht an die Verwendung von verteilten Sperren angepasst werden, die mehrere Hosts im Cluster abdecken, ohne spezielle verteilte Dateisysteme zur Datenspeicherung einbeziehen zu müssen.

DLMPFS unterscheidet sich von dem bereits bestehenden ähnlichen Dateisystem DLMFS dadurch, dass es die API flock/fcntl anstelle der für das Dateisystem OCFS2 spezifischen API verwendet. Geplant ist die Hinzufügung von verteilten Sperren, die in der POSIX-Spezifikation bezeichnet sind, sowie die Möglichkeit, verschiedene Backends anzuschließen, um nicht nur mit DLM, sondern auch mit anderen Verwaltern verteilter Sperren wie NFS lockd zu integrieren.

Beispielanwendung (am zweiten Knoten wird die Sperre auf die Datei /mnt/lock nach 20 Sekunden aufgehoben): Knoten 1: mount -t dlmpfs -o clname=$CLUSTERNAME none /mnt touch /mnt/lock flock /mnt/lock -c "echo 'erworben'; sleep 20; echo 'freigegeben'" Knoten 2: mount -t dlmpfs -o clname=$CLUSTERNAME none /mnt touch /mnt/lock flock /mnt/lock -c "echo 'erworben'; sleep 20; echo 'freigegeben'"

Quelle: opennet.ru

60GB SSD 8Gb DDR4