VMFS и Distributed Lock Management

VMWareВ данном посту я попытаюсь вкратце рассказать про одну  из особенностей файловой системы VMFS, которая называется DLM. Сразу прошу простить меня за некоторые технические неточности, я попробую рассказать про технологию DLM  так, как это понимаю я.

Что такое VMFS?

Согласно Википедии VMFS – это кластерная файловая система VMware, в которой несколько серверов (хостов) могут одновременно выполнять операции чтения/записи на одной файловой системе (datastore), причем на файлы индивидуальных машин могут накладываться блокировки.

Т.е. в файловой системе VMFS реализован механизм пофайловой блокировки. Сразу стоит отметить, что существует еще один механизм блокировки данных, называемый  «meta data locking mechanism» (механизм блокировки метаданных), который применяется при использовании SCSI Reservations (например, когда происходит обновление метаданных на хранилище – LUN).

Если вы хотите обратиться к первоисточникам, рекомендую познакомиться со следующим документом: «VMware® vStorage Virtual Machine File System Technical Overview and Best Practices», в котором говорится об управлении Distributed Lock (или Distributed Lock Server, или Distributed Lock Service).

Distributed Lock Management в VMFS

На картинке приведен пример типовой вид кластерной среды Vmware. LUN1  – это наш кластерный диск, на нем находится хранилище VMFS. Функцию DLM (Distributed Lock Management) реализует специальный драйвер VMFS, который управляет доступом и является арбитром, позволяющим сразу нескольким серверам ESX разделять кластеризованное хранилище.

Что такое Distributed Lock Management

Опять, обратившись к Википедии, узнаем, что DLM (Distributed Lock Manager) позволяет распределенным программным средства синхронизировать доступ к общим кластерным ресурсам. Ключевым моментом здесь является распределенность блокировки. DLM  работает на каждом узле кластера (хосте), и управление блокировками  распространяется на все ноды кластера.

Как работает блокировка на VMFS:

1. Сервер  ESX монтирует  себе том VMFS.
2. Каждый сервер ESX  помещает свой ID в специальный раздел (heartbeat) на томе VMFS
3. ESX1   создает так называемый  VMFS-lock в указанном выше heartbeat разделе.
4. Временная метка блокировки  (timestamp) обновляется каждые 3 секунды.
5. Если ESX2 захочет обратиться к занятому VMDK-диску, он должен сначала проверить наличие блокировки на файле, и если в течение 15 секунд сервер ESX1 не обновлял временную метку, то ESX2 считает, что ESX1   – недоступен, и его блокировку файла можно снять.
6. После этого сервер ESX2  ставит свою блокировку на файл и проверяет на целостность журнал VMFS.

В другой архитектуре (без использования метода распределенной блокировки), в кластере должна имеется отдельная нода, которая бы управляла доступом к общим ресурсам и отвечала бы за блокировку файлов. Естественный недостаток такой архитектуры – наличие единой точки отказа всего кластера.

VMFS часто называют симметричной файловой системы для общих дисков, где метаданные распределяются среди множества узлов кластера. Ей в противовес можно привести симметричную систему с централизованным сервером метаданных, такую как EMC Celerra HighRoad.

Есть еще ряд файловых систем, которые используют механизм Distributed Lock Management:

  • GPFS,
  • GFS,
  • Melio FS,
  • Microsoft CSV
  • OCFS

Думаю, также стоит отметить, что в файловой системе VMFS  реализована функция распределенного журналирования изменений в метаданных, благодаря чему обеспечивается общая «живучесть» и быстрота восстановления метаданных VMFS в случае выхода одного из узлов кластера.

Драйвер VMFS это достаточно серьезный технологический прорыв VMware, однако стоит отметить, что он накладывает и ряд ограничений на масштабирование кластера VMware, например, это заключается в ограничение на 32 сервера ESX/ESXi в кластере, или в максимальном размере хранилища в 2TB. Надеюсь, что в следующих версиях  VMFS  эти ограничения будут сняты!

Опубликовано в VMWare

1 thought on “VMFS и Distributed Lock Management”

Комментарии закрыты.