GlusterFS



GlusterFS — это распределённая, параллельная, линейно масштабируемая файловая система с возможностью защиты от сбоев. С помощью InfiniBand RDMA или TCP/IP GlusterFS может объединить хранилища данных, находящиеся на разных серверах, в одну параллельную сетевую файловую систему. GlusterFS работает в пользовательском пространстве при помощи технологии FUSE, поэтому не требует поддержки со стороны ядра операционной системы и работает поверх существующих файловых систем (ext3, ext4, XFS, reiserfs и т. п.). В отличие от других распределённых файловых систем, таких как Lustre и Ceph, для работы GlusterFS не требуется отдельный сервер для хранения метаданных.

Архитектура

GlusterFS разделена на серверную и клиентскую части. На каждом сервере работает демон glusterfsd который делает доступным для клиентов локальное хранилище в качестве тома. Клиентский процесс glusterfs соединяется с одним или несколькими серверами посредством TCP/IP или InfiniBand и объединяет все доступные серверные тома в один, используя расширяемые трансляторы (функциональные модули системы). Получившийся том монтируется на клиентском хосте при помощи механизма Filesystem in Userspace (FUSE).

Большая часть функциональности GlusterFS реализована в виде трансляторов (модулей). Использование необходимых трансляторов и их настройка позволяет гибко конфигурировать режим работы системы. Трансляторы реализуют следующую функциональность:

  • Синхронная репликация между серверами (нельзя расширить уже существующий том, добавив сервер для репликации)
  • Чередование порций данных между серверами (Striping)
  • Распределение файлов между серверами
  • Балансировка нагрузки
  • Восстановление после отказа узла (в ручном режиме с помощью опроса файлов (ls -lR или find на смонтированом томе))
  • Опережающее чтение (read-ahead) и запаздывающая запись (write-behind) для увеличения быстродействия
  • Дисковые квоты

Подробное описание трансляторов (англ.).

Сервер GlusterFS реализован довольно просто: он предоставляет в пользование клиенту своё хранилище данных, оставляя за клиентом право решать каким образом организовать хранение. Все клиенты одного кластера должны быть настроены одинаково, во избежание проблем с консистентностью данных. Такая архитектура позволяет масштабировать GlusterFS до хранилищ, общий объём которых может измеряться петабайтами данных, используя аппаратное обеспечение средней производительности. Также, архитектура GlusterFS позволяет избежать узких мест, которые свойственны распределённым системам с более тесной модульной интеграцией.

Для работы GlusterFS не требуется отдельный сервер метаданных, что улучшает масштабируемость и надёжность системы. Метаданные хранятся вместе с данными (в расширенных атрибутах файлов).

Более подробная информация находится на GlusterFS Вики (англ.)

Клиенты

Доступ к Gluster -ресурсу можно получать как с использованием FUSE, так и через NFS-протокол версии не ниже третьей. В последнем случае (доступ по NFS) демон Gluster подгружает соответствующий транслятор, который выступает в роли NFS-сервера и не может работать совместно с другими NFS-серверами. Несмотря на то, что разработчики Gluster декларируют совместимость с CIFS, в действительности такая совместимость средствами самого Gluster не обеспечивается, поэтому для экспорта Windows-клиентам необходимо создать разделяемый ресурс средствами Samba.