Alexander Aring di Red Hat, responsabile delle sottosistemi IEEE 802.15.4, DLM e flock/fcntl nel kernel Linux, ha presentato nella mailing list degli sviluppatori del kernel un file system specializzato DLMPFS. Il file system proposto fornisce uno strato per i blocchi di file distribuiti, realizzato sulla base del DLM (Distributed Lock Manager) e ramfs. L'implementazione di DLMPFS è disponibile sotto forma di un insieme di patch per il kernel Linux 6.19.
DLMPFS consente di lavorare con una gerarchia di file condivisa tra più host, creare ed eliminare file e directory, impostare o rimuovere blocchi sui file tramite le funzioni standard flock() e fcntl(). Tuttavia, DLMPFS non consente di scrivere e leggere dati dai file, limitandosi solo alle operazioni di blocco. Un'altra limitazione è la possibilità di definire lo stato di un blocco solo conoscendo il percorso completo del file bloccato (DLM richiede il nome della risorsa per definire il blocco).
Con DLMPFS è possibile adattare facilmente le applicazioni esistenti che si basano sull'impostazione dei blocchi tramite l'API flock/fcntl per utilizzare i blocchi distribuiti che coprono più host in un cluster, senza la necessità di utilizzare file system distribuiti specializzati per la memorizzazione dei dati.
DLMPFS si differenzia dal già esistente file system simile DLMFS per l'uso dell'API flock/fcntl invece di un'API specifica per il file system OCFS2. È previsto di aggiungere a DLMPFS blocchi distribuiti, contrassegnati nella specifica POSIX, e la possibilità di collegare diversi backend per l'integrazione non solo con il DLM, ma anche con altri gestori di blocchi distribuiti, come NFS lockd.
Esempio di utilizzo (nel secondo nodo il blocco sul file /mnt/lock verrà rimosso dopo 20 secondi): Nodo 1: mount -t dlmpfs -o clname=$CLUSTERNAME none /mnt touch /mnt/lock flock /mnt/lock -c «echo 'acquired'; sleep 20; echo 'released'» Nodo 2: mount -t dlmpfs -o clname=$CLUSTERNAME none /mnt touch /mnt/lock flock /mnt/lock -c «echo 'acquired'; sleep 20; echo 'released'»
Fonte: opennet.ru
