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

Alexander Aring von 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 namens DLMPFS vorgestellt. Das vorgeschlagene FS bietet eine Schicht für verteilte Dateisperren, die auf DLM (Distributed Lock Manager) und ramfs basiert. Die Implementierung von DLMPFS ist in Form von Patch-Sets für den Linux-Kernel 6.19 verfügbar.

DLMPFS ermöglicht die Arbeit mit einer gemeinsamen Dateihierarchie für mehrere Hosts, das Erstellen und Löschen von Dateien und Verzeichnissen sowie das Setzen und Entfernen von Dateisperren über die Standardfunktionen flock() und fcntl(). Bei DLMPFS ist es jedoch nicht möglich, Daten aus Dateien zu lesen oder zu schreiben; es beschränkt sich ausschließlich auf Sperroperationen. Eine weitere Einschränkung besteht darin, dass der Status einer Sperre nur bestimmt werden kann, wenn der vollständige Dateipfad zur gesperrten Datei bekannt ist (DLM benötigt den Ressourcennamen zur Bestimmung der Sperre).

Mit DLMPFS lassen sich bestehende Anwendungen, die Blockierungen über die API flock/fcntl setzen, einfach auf verteilte Sperren umstellen, die mehrere Hosts in einem Cluster abdecken, ohne dass spezielle verteilte Dateisysteme für die Datenspeicherung erforderlich sind.

DLMPFS unterscheidet sich von dem bereits existierenden ähnlichen Dateisystem DLMFS dadurch, dass die API flock/fcntl anstelle der spezifischen API des Dateisystems OCFS2 verwendet wird. Zukünftig sollen in DLMPFS verteilte Sperren implementiert werden, die in der POSIX-Spezifikation aufgeführt sind, sowie die Möglichkeit, verschiedene Backends anzuschließen, um nicht nur mit DLM, sondern auch mit anderen Managern für verteilte Sperren wie NFS lockd zu integrieren.

Beispielanwendung (auf dem zweiten Knoten wird die Datei /mnt/lock nach 20 Sekunden entsperrt): 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

Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы 🔥 Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы | ProHoster