В центрах обработки данных (ЦОД) широко используются дисковые подсистемы (ДП) для надежного хранения информации и оперативной работы с БД. Системы хранения данных аналогичны вычислительным системам, т.е. массивы большой емкости имеют стойки с дисками, контроллер взаимодействия с компьютером, управляющий контроллер, контроллер взаимодействия с дисками, микропроцессор и оперативную память.
Использование параллельно работающих модулей контроллеров позволяет компьютерам обращаться к любому из них для выполнения операции чтения или записи информации. В свою очередь диски организуются таким образом, чтобы любой из модулей контроллеров мог последовательно выполнять операции с любым диском ДП. Такая организация ДП предполагает использования нескольких путей между персональным компьютером и дисковой подсистемой (т.е. между компьютером и каждым из модулей контроллеров). Эти пути могут использоваться параллельно или последовательно.
Существующие алгоритмы различаются способами поиска, при этом каждый процесс должен учитывать параметры всех остальных процессов.
Алгоритм голосования, предназначенный для функционирования в отказоустойчивой системе, должен отвечать следующим требованиям:
- не должно быть предположений о количестве узлов кластера и времени их подключения или отключения от системы (масштабируемость);
- отказ любого из узлов в процессе голосования не должен приводить к некорректной работе алгоритма и системы;
- алгоритм должен учитывать возможную перегруженность каналов, приводящую к задержкам в передаче и потерям пакетов.
В реальных системах из-за возможного временного или полного отказа сетевой инфраструктуры может произойти ложное срабатывание алгоритма голосования. Если в состав этой группы ресурсов входит файловая система, то ложное переключение приведёт к одновременной записи на общий дисковый массив, что повлечёт за собой нарушение целостности данных. Для предотвращения этой ситуации служба управления ресурсами кластера дополнена алгоритмом взаимоисключения через общую внешнюю память, которая гарантированно позволит только одному узлу завладеть группой ресурсов, исключив попытки всех остальных.
Существующие алгоритмы недостаточно учитывают требования масштабирования из-за необходимости учета информации обо всех узлах кластера (т.е. параметрах остальных процессов), и отказоустойчивости, так как приведённые методы не учитывают узкие по пропускной способности места и возможность перегруженности каналов, которая может быть вызвана одновременной работой узлов или общим использованием сетевых ресурсов. Перегруженность сети и эффективность использования ресурса всегда относятся к самым важным вопросам в компьютерных сетях.
Все узлы кластера равноправны, и одинаково рассматриваются в качестве кандидатов в координаторы группы ресурсов. При этом из нескольких претендентов выбирается узел с максимальным параметром. В целях оптимизации также введено состояние заместителя координатора. Заместитель становится координатором в случае отказа последнего, либо при ручном переходе в связи с необходимостью проведения плановых работ с сервером, выполняющего обязанности предыдущего координатора. Это позволяет сократить время восстановления системы за счёт исключения необходимости в голосовании.
Для достижения масштабируемости (при неизвестном количестве узлов) все сообщения рассылаются широковещательным методом. Для обеспечения надёжности во всех состояниях, требующих отправки сообщений, используется повторная посылка пакетов с некоторым интервалом времени (информационная избыточность).
Выборы заместителя происходят в двух случаях:
1) при выбывании из голосования за главного, узел, в случае отсутствия заместителя, выдвигает себя в качестве кандидата на его роль;
2) находясь в состоянии опроса и не получая ответа от заместителя в течение заданного интервала времени узел инициирует соответствующее голосование, также принимая в нём участие.
Сбои в функционировании сетевой инфраструктуры и перегруженность каналов могут вызвать задержку доставки передаваемых пакетов и даже потерю их части. Это, в свою очередь, может привести к ситуации, при которой в голосовании победит несколько кандидатов. Для разрешения этого конфликта владелец группы ресурсов и его заместитель реагируют на поступление ответов от серверов в аналогичном состоянии.
В системе по команде может состояться переход на заместителя, при котором владелец группы ресурсов и его заместитель меняются ролями. В процессе работы алгоритма узел может находиться в одном из четырёх состояний: оценка состояния, кандидат, ведущий, контроль. Для возможности функционирования алгоритма, конкурирующие узлы должны иметь возможность взаимодействия друг с другом в условиях недоступности сети. Для этой цели на общем дисковом массиве выделяется доступная всем узлам ячейка известной структуры и размера.
В начале работы узел производит чтение ячейки, а затем повторяет операцию через заданный интервал времени. Поменявшаяся за это время информация в ячейке означает присутствие в системе узлов-кандидатов или узла, уже завладевшего группой ресурсов. В этом случае рассматриваемый узел прекращает дальнейшее функционирование по описываемому алгоритму. Если же с ячейкой не произошло никаких изменений, то узел переходит в состояние кандидата, модифицируя ячейку соответствующей информацией.
В обратном случае кандидат становится ведущим, уведомляя об этом остальные конкурирующие узлы записью в ячейку, после чего переходит в состояние контроля, в котором следит за состоянием ячейки, и при её модификации также обновляет её, прерывая тем самым дальнейшие попытки захвата группы ресурсов.
Благодаря преобладанию операций чтения над операциями записи разработанный подход обладает ключевой особенностью: так как периодически выполняющиеся запросы происходят к одному и тому же блоку, то чтение происходит из кэша общего дискового массива, обеспечивая следующие преимущества:
- скорость обмена данными значительно увеличивается (с миллисекунд до микросекунд) за счёт исключения необходимости работы с дисками, при которой для обращения к блоку необходимо позиционировать головку, находя необходимые дорожку и сектор;
- на работу алгоритма не расходуется ресурс дисков;
- передача служебной информации не оказывает влияния на работу приложений с общим дисковым массивом, так как не сказывается на и без того относительно низкой скорости работы жёстких дисков, позволяющих выполнить около 150-200 операций в секунду.
Таким образом, создание надежного хранилища данных с использованием дисковой подсистемы требует наличия не только модульной организации ДП с возможностью параллельной работы модулей, но и поддержкой в кластерном ПО как выбора пути следования запросов, так и выбора сервера.