GlusterFS Logo
GlusterFS представляет собой кластерную файловую систему, способную масштабироваться для хранения далеко не одного петабайта данных. Как и многие другие кластерные файловые системы, GlusterFS аггрегирует дисковое пространство большого количества машин в одну общую параллельную сетевую файловую систему через Infiniband RDMA или TCP/IP соединение. Обычно в качестве аппаратной основы для этой файловой системы используется ничем не выдающееся недорогое серверное оборудование, в полной мере реализуя принцип программного построения стабильности при использовании на ненадежном оборудовании.

 

 

Кластерные файловые системы еще не достаточно приспособлены для использования на крупных предприятиях: обычно процесс их развертывания и поддержания в работающем состоянии не так уж прост. Но зато они отлично масштабируются и достаточно дешевы, ведь для них достаточно самого простого серверного оборудования и opensource операционных систем и програмного обеспечения. Основной целью разработчиков GlusterFS как раз и является построение кластерной файловой системы, адаптированной для использования в рамках серьезных компаний.

 

Список основных ее особенностей по большей части мало чем отличается от других кластерных файловых систем:

 

  • Состоит из клиентской и серверной частей. Клиентская часть позволяет монтировать файловую систему, а серверная — glusterfsd — экспортировать в нее локальное дисковое пространство.
  • Масштабируемость близка к O (1).
  • Широкий спектр возможностей за счет использования модульной архитектуры.
  • Имеется возможность восстановления файлов и директорий из файловой системы даже без ее инициализации.
  • Отсутствие централизованного сервера метаданных, что делает ее более устойчивой к потенциальным сбоям.
  • Расширяемый интерфейс выполнения задач, с поддержкой загрузки модулей в зависимости от особенностей выполнения пользователями операций по работе с данными.
  • Расширяющий функциональность механизм трансляторов.
  • Поддержка Infiniband RDMA и TCP/IP.
  • Возможность автоматического восстановления в случае сбоев.
  • Полностью реализована на уровне приложений, что упрощает ее поддержание в рабочем состоянии, портирование и дальнейшую разработку.

 

Но некоторые моменты все же заслуживают отдельного внимания:

 

Совместимость
Как уже упоминалось, файловая система реализована полностью на уровне пользовательских приложений, что делает возможным ее монтирование без каких-либо дополнительных патчей в ядре операционной системы, единственное требование к нему: поддержка FUSE. Серверная часть GlusterFS может функционировать на любой POSIX-совместимой операционной системе и протестирована на Linux, FreeBSD, OpenSolaris, в отличии от клиентской части, которая может работать только в Linux.
Модули
В виде модулей реализованы различные варианты выполнения основополагающих операций: передачи данных и балансировки нагрузки в рамках кластера. Транспортные модули обеспечивают передачу данных по различным типам соединений:
  • TCP/IP;
  • Infiniband-verbs;
  • Infiniband-SDP.
Балансировка нагрузки может выполняться по следующим алгоритмам:
  • ALU — использует целый ряд факторов, включающий объем свободного локального дискового пространства, активность операций чтения и записи, количество одновременно открытых файлов, скорость физического вращения дисков. Значимость, придаваемая каждому из показателей, может достаточно гибко настраиваться.
  • RR — по очереди размещает файлы последовательно на каждом узле, после чего начинает процесс заново, образуя своеобразный цикл. Этот метод эффективен если файлы имеют примерно одинаковый размер, а узлы кластера — одинаковый размер экспортированного локального дискового пространства.
  • Random — распределяют файлы случайным образом.
  • NUFA — приоритет отдается созданию файлов локально, а не на других узлах кластера.
  • Switch — располагает файлы по определенным указанным особенностям имен файлов, по аналогии со switch (filename) в программировании, обычно в качестве критерия распределения файлов имеет смысл использовать их расширение.
Трансляторы
Они представляют собой очень мощный механизм для расширения возможностей GlusterFS, сама идея трансляторов бала позаимствована у GNU/Hurd и заключается она в загрузке бинарных библиотек (.so) в процессе работы системы в зависимости от использованных настроек и использовании их в виде своеобразной цепочки обработчиков при работе с файлами как на серверной, так и на клиентской стороне. В GlusterFSпрактически все дополнительные возможности реализованы именно виде трансляторов, начиная от дополнений, увеличивающих производительность, заканчивая средствами отладки. Вкратце перечислю основные из них:
  • AFR — автоматическая репликация файлов.
  • Stripe — разбивает файлы на блоки фиксированного размера.
  • Unify — объединяет несколько узлов кластера в один большой виртуальный узел, один узел выделяется для обеспечения внутреннего namespace. Директории создаются на всех узлах, составляющих unify, а каждый файл — лишь на одном (если не используется AFR).
  • Trace — предоставляют информацию для отладки в виде дополнительных записей в лог.
  • Filter — фильтрация файлов на основании их имен и/или атрибутов.
  • Posix-locks — обеспечивает POSIX блокировку записей независимую от используемой системы хранения.
  • Trash — предоставляет функциональность сопоставимую с libtrash (или «корзиной» — если так понятнее).
  • Fixed-id — обеспечивает доступ только для пользователей с определенными UID и GUID.
  • Posix — соединяет GlusterFS с низлежащей локальной файловой системой.
  • rot-13 — транслятор обеспечивает возможность шифрования и дешифрования данных по примитивному одноименному алгоритму.

 

Список возможностей, обеспечиваемых широким набором модулей и транслятором, впечатляет, большинство других opensource кластерных файловых систем не могут похвастаться подобной функциональностью (GlusterFS выпускается под GPL). Благодаря возможности работы через Infiniband производительность передачи данных также достаточно высока — она может достигать десятков гигабит в секунду. Обработка сбоев в отдельных узлах также осуществляется достаточно эффективно, так как может быть автоматизирована. Из потенциальных недостатков можно назвать некоторое количество редко проявляющих себя багов в коде, а также достаточно большой размер заголовков в используемом протоколе (несколько сотен байт). В целом эта система вполне работоспособна и полноценно выдерживает конкуренцию со стороны своих opensource «коллег».

www.insight-it.ru/masshtabiruemost/glusterfs/

Вверх