Glus­terFS часть 2. Архитектура

GlusterFS. Все статьи цикла

GlusterFS имеет клиент-серверную архитектуру расширяемую за счет различных модулей(трансляторов).
Серверы здесь — это узлы хранения (Storage Node). На каждом таком узле работает служба glusterd которая предоставляет доступ клиентам к локальным файловым системам. Одна экспортируемая файловая система узла хранения называется «brick» (кирпич). В рамках статьи я так же буду использовать термин «под том». Таких кирпичей на одном сервере может быть множество. Например на одном диске или массиве может быть несколько разделов с различными файловыми системами каждая из которых будет отдельным кирпичом.
Несколько серверов объединяются в кластер или пул хранения данных (Trusted Storage Pool), в терминологии GlusterFS. В рамках пула хранения, под тома на различных узлах объединяются в логические тома(volumes) различной конфигурации. Клиентская часть, взаимодействуя с узлами кластера, совершенно прозрачно для приложений монтирует логический том посредством механизма FUSE.

На одном компьютере допускается работа как серверной так и клиентской части.

Трансляторы

Практически вся функциональность GlusterFS реализуется с помощью специальных модулей, называемых трансляторами. Это бинарные динамические объекты(.so) каждый из которых реализует определённую функциональность. По сути данные, записываемые и считываемые с виртуального тома проходят через целую цепочку трансляторов которые обрабатывают их по принципу конвейера. Разные тома могут иметь свои наборы трансляторов в зависимости от задачи. Параметры трансляторов определяется в файле конфигурации тома о которых ниже.

Стандартные трансляторы:

storage – низкоуровневый транслятор, производит запись и чтение данных с локальной файловой системы;
cluster – занимается репликацией данных и их распределением по кирпичам;
debug – предоставляет интерфейс и статистику ошибок для отладки;
encryption – занимается шифрованием и расшифровкой данных на лету;
protocol – производит аутентификацию между клиентом и сервером;
pеrformance – транслятор для оптимизации производительности(опережающее чтение (read-ahead) и запаздывающая запись (write-behind));
system – управление ACL;
scheduler – глобальный планировщик операций I/O;
features –квоты, фильтры, и прочее;
bindings – различные API.

Кроме этого есть возможность написать свой собственный транслятор для какой-то особой задачи. Например, есть сторонние реализации хранилища GlusterFS по аналогии с массивом RAID5.