Для ядра 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 прочитано 1040 раз
