Распределённый менеджер блокировок


Операционные системы используют менеджеры блокировок (англ.) для организации и координации доступа к ресурсам. Распределённый менеджер блокировок (англ. Distributed lock manager, DLM[1]) работает на каждой машине в кластере, с идентичной копией базы данных блокировок кластера. Таким образом, DLM является пакетом программного обеспечения, который позволяет компьютерам в кластере координировать доступ к совместно используемым ресурсам.

Различные реализации DLM были использованы в качестве основы для нескольких успешных кластерных файловых систем, в которых машины в кластере можно использовать для хранения файлов друг друга с помощью единой файловой системы, со значительными преимуществами в плане повышения производительности и доступности. Основное преимущество производительности достигается за счёт решения проблемы когерентности дискового кэша между участвующими компьютерами. DLM используется не только для блокировки файлов, но и для координации всех видов дискового доступа. VMS Сluster (ранее именовавшийся VAX Cluster) — первая система кластеризации, получившая широкое распространение, основывается на VAX/VMS (в последующем OpenVMS) DLM именно таким образом.

DEC VAX/VMS была первой широкодоступной операционной системой с реализацией DLM. Данный функционал появился в версии 4, хотя пользовательский интерфейс был таким же, как у однопроцессорного менеджера блокировки, который впервые был реализован в версии 3.

DLM использует обобщённое понятие ресурса как некоего объекта, к которому должен контролироваться общий доступ. Это может быть файл, запись, область общей памяти, или что-нибудь ещё по выбору разработчика приложения. Разработчик сам описывает иерархию ресурсов, так что он может определить необходимое количество уровней блокировки. Например, гипотетическая база данных могла бы описывать иерархию ресурсов следующим образом:

Таким образом, процесс в рамках выполнения получает возможность устанавливать необходимые блокировки на базу данных в целом (родительский ресурс), а потом и на отдельные части базы данных (подчинённые ресурсы).

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