FastNetMon

Tuesday 12 October 2010

Что такое кластерные файловые системы и в чем их ключевое отличие от обычных файловых систем?

Давно изучал эту тему, но никак не доходили руки написать что-то целостное. Итак, что же такое кластерная файловая система? Крайне просто - это файловая система, которая примонтирована в нескольких местах.

Пытливый читатель сразу задаст логичный вопрос - как можно один дисковый носитель подключить к несколькими ПК? Разумеется, домашнее железо такого не умеет, а вот серверные SCSI массивы вполне так умеют. Также к вариантам подключения одного носителя к нескольким ПК стоит отнести всевозможные транспортные протоколы типа iSCSI и AoE, которые позволяют экспортировать блочное устройство в сеть и выполнить его подключение к нескольким машинам.

Итак, допустим, у нас есть некое блочное устройство, подключенное к двум серверам по какому-то из перечисленных выше интерфейсов. Допустим, на носителе существовала некая классическая файловая система (скажем, ext3) и мы смогли смонтировать ее на запись на обоих узлах (обращаю внимание, что случай абстрактный, возможно, то, что я описываю сделать невозможно).

Теперь же давайте подумаем, что будет, если два узла попытаются одновременно обратиться к одним и тем же секторам на носителе с попыткой что-либо туда записать? А получиться может все, что угодно - данные запишутся частично от одного узла, частично от другого; один из узлов перепишет данные записанные другим и т.д. Разумеется, что это приведет к тому, что файловая система как минимум потребует проверки своей структуры (fsck), а как максимум полностью выйдет из строя. Очевидно, оба случая фатальны, так как для исправления возникших проблем нужно отключать файловую систему.

Как же победить эту проблему? Тут нам на помощь приходит страшная штука по имени DLM, а расшифровывается она как Distributed Lock Manager. Что же это значит и как работает? Во-первых, работает он на всех узлах, где смонтирована файловая система, во-вторых, DLM, запущенные на всех узлах, обмениваются между собой информацией посредством сети. А суть этого механизма в том, что он позволяет координировать между собой операции, которые могут повлечь за собой конкурентный доступ к какому-либо ресурсу файловой системы или накопителя. То есть, в приведенном выше примере первый узел захватил бы блокировку на запись, начал делать, что ему нужно, в это же время второй узел смиренно бы ждал своей очереди и после этого бы сделал все, что ему требуется. Как результат всей этой операции мы имеем целостную файловую систему и никаких противоречивых изменений.

Итак, какие же кластерные файловые системы существуют? Во-первых, это, конечно же, GFS (GFS2) от RedHat и OCFS2 от Oracle. Также сюда, пожалуй, стоит отнести Lustre (хотя она ко всему прочему еще и распределенная).

Источник: http://en.wikipedia.org/wiki/Clustered_file_system

5 comments :

  1. то есть помимо подключения к 2 системам одного диска нужна еще и хорошая связь, чтобы DLM смог общаться между системами ?

    ReplyDelete
  2. Разумеется. Полагаю, она может быть и плохой, но вот тогда файловая будет работать не лучшим образом.

    ReplyDelete
    Replies
    1. просто и понятно, спасибо

      Delete
    2. Спасибо! рад стараться)

      Delete
  3. а есть active-active файловая система без участия сетевого подключения, только через SAN?

    ReplyDelete

Note: only a member of this blog may post a comment.