Для ядра Linux предложена файловая система DLMPFS

Александр Аринг (Alexander Aring) из компании Red Hat, сопровождающий в ядре Linux подсистемы IEEE 802.15.4, DLM и flock/fcntl, представил в списке рассылки разработчиков ядра специализированную файловую систему DLMPFS. Предложенная ФС предоставляет слой для распределённых файловых блокировок, реализованный на базе DLM (Distributed Lock Manager) и ramfs. Реализация DLMPFS доступна в форме набора патчей к ядру Linux 6.19.

DLMPFS позволяет работать с общей для нескольких хостов иерархией файлов, создавать и удалять файлы и каталоги, выставлять или снимать блокировки на файлы при помощи штатных функций flock () и fcntl (). При этом DLMPFS не позволяет записывать и читать данные из файлов, ограничиваясь только операциями с блокировками. Ограничением также является возможность определить состояние блокировки только зная полный файловый путь к блокируемому файлу (DLM требует имя ресурса для определения блокировки).

При помощи DLMPFS можно легко адаптировать существующие приложения, завязанные на выставлении блокировок через API flock/fcntl, на использование распределённых блокировок, охватывающих несколько хостов в кластере, без необходимости задействования для хранения данных специализированных распределённых ФС.

DLMPFS отличается от уже существующей похожей ФС DLMFS использованием API flock/fcntl вместо API, специфичного для ФС OCFS2. В планах добавление в DLMPFS распределённых блокировок, отмеченных в спецификации POSIX, и возможность подключения разных бэкендов для интеграции не только с DLM, но и другими менеджерами распределённых блокировок, такими как NFS lockd.

Пример использования (на втором узле блокировка на файл /mnt/lock будет снята через 20 секунд):

Узел 1:

   mount -t dlmpfs -o clname=$CLUSTERNAME none /mnt   
   touch /mnt/lock
   flock /mnt/lock -c "echo 'acquired'; sleep 20; echo 'released'"

Узел 2:

   mount -t dlmpfs -o clname=$CLUSTERNAME none /mnt
   touch /mnt/lock
   flock /mnt/lock -c "echo 'acquired'; sleep 20; echo 'released'"



Источник: http://www.opennet.ru/opennews/art.shtml? num=64796

©  OpenNet