Открыть сервис

GlusterFS

GlusterFS — это свободная распределённая файловая система, способная объединять хранилища нескольких серверов в единое глобальное пространство имён. Относится к классу сетевых файловых систем (NAS) и использует архитектуру без центрального сервера метаданных, что обеспечивает высокую горизонтальную масштабируемость и отказоустойчивость. Разработана компанией Gluster Inc. (позднее приобретена Red Hat, Inc.) и распространяется под лицензией GNU General Public License (GPL) версии 2.

История

Разработка GlusterFS началась в 2005 году в компании Gluster Inc., основанной Анандом Бабу (Anand Babu) и Авинаш Бхатией (Avinash Bhatia). Первоначальная версия (1.0) была выпущена в 2006 году. Система быстро завоевала популярность благодаря своей модульной архитектуре и возможности создания больших распределённых хранилищ на обычном серверном оборудовании.

В 2011 году компания Red Hat, Inc. (в настоящее время — организация, признанная нежелательной на территории РФ) приобрела Gluster Inc. за 136 миллионов долларов США. После приобретения GlusterFS стала частью портфеля продуктов Red Hat, включая Red Hat Gluster Storage (позднее переименованный в Red Hat Ceph Storage, хотя Ceph является другой технологией). В 2016 году Red Hat объявила о прекращении активной разработки GlusterFS в пользу Ceph, однако сообщество продолжает поддерживать проект. Последний стабильный релиз (версия 10) был выпущен в 2020 году.

Архитектура

GlusterFS использует архитектуру «клиент-сервер», где серверы (называемые «кирпичами» или bricks) предоставляют локальные файловые системы, а клиенты (обычно монтирующие файловую систему через FUSE — Filesystem in Userspace) обращаются к ним напрямую. Ключевая особенность — отсутствие единого сервера метаданных (metadata server). Вместо этого метаданные (например, имена файлов, права доступа) хранятся распределённо на самих кирпичах, а клиент, используя алгоритм хеширования (Elastic Hash), определяет, на каком кирпиче находится нужный файл.

Основные компоненты

  • Кирпич (brick) — базовая единица хранения. Представляет собой каталог на локальной файловой системе (например, ext4, XFS), экспортируемый в кластер. Каждый кирпич принадлежит одному серверу.
  • Том (volume) — логическое объединение одного или нескольких кирпичей. Том представляет собой единое пространство имён, доступное клиентам. Тома могут быть разных типов (см. ниже).
  • Клиент (client) — узел, монтирующий том GlusterFS. Обычно это Linux-сервер, использующий модуль ядра FUSE или встроенный клиент (начиная с версии 3.4).
  • Транспорт (transport)протокол передачи данных. Поддерживаются TCP, InfiniBand (RDMA) и Unix-сокеты.

Типы томов

GlusterFS поддерживает несколько типов томов, определяющих способ распределения данных и отказоустойчивость:

  • Distributed (распределённый) — данные распределяются по кирпичам без репликации. Используется для увеличения ёмкости, но не обеспечивает отказоустойчивости. При выходе из строя одного кирпича данные на нём становятся недоступны.
  • Replicated (реплицированный) — каждый файл хранится на нескольких кирпичах (обычно 2 или 3). Обеспечивает отказоустойчивость: при отказе одного кирпича данные доступны с другого. Репликация синхронная.
  • Striped (полосный) — файлы разбиваются на блоки (страйпы) и распределяются по кирпичам. Используется для повышения производительности при работе с большими файлами, но не даёт отказоустойчивости.
  • Distributed-Replicated (распределённо-реплицированный) — комбинация распределённого и реплицированного типов. Данные распределяются по группам кирпичей, внутри каждой группы выполняется репликация. Наиболее распространённый тип для production-сред.
  • Distributed-Striped (распределённо-полосный) — комбинация распределённого и полосного типов. Используется редко.
  • Replicated-Striped (реплицированно-полосный) — комбинация реплицированного и полосного типов.
  • Distributed-Replicated-Striped — комбинация всех трёх типов.

Применение

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

  • Облачные хранилища — используется как бэкенд для OpenStack (модуль GlusterFS для Swift), CloudStack и других платформ.
  • Медиа-архивы — хранение видеофайлов, изображений, аудиозаписей. Благодаря полосным томам обеспечивается высокая пропускная способность.
  • Научные вычисления — хранение результатов моделирования, больших массивов данных.
  • Домашние каталоги пользователей — в крупных организациях GlusterFS может использоваться для централизованного хранения домашних каталогов пользователей.
  • Контейнерные среды — используется как хранилище для Docker и Kubernetes (через драйверы, например, glusterfs-kubernetes).

Преимущества и недостатки

Преимущества

  • Масштабируемость — кластер может состоять из сотен узлов, обеспечивая ёмкость до нескольких петабайт.
  • Отсутствие единой точки отказа — благодаря децентрализованной архитектуре метаданных.
  • Простота настройки — GlusterFS относительно легко разворачивается и настраивается по сравнению с другими распределёнными файловыми системами (например, Ceph или Lustre).
  • Гибкостьподдержка различных типов томов и транспортных протоколов.
  • Совместимость с POSIX — клиенты монтируют том как обычную файловую систему, что позволяет использовать стандартные утилиты Linux (cp, mv, ls, find).
  • Открытый исходный коддоступность кода, активное сообщество.

Недостатки

  • Производительность при большом количестве мелких файлов — из-за распределённого хранения метаданных операции с мелкими файлами (например, создание тысяч файлов в одной директории) могут быть медленными.
  • Сложность управления — при больших кластерах требуется тщательное планирование топологии кирпичей.
  • Ограниченная поддержка ACL — не все расширенные атрибуты POSIX поддерживаются.
  • Прекращение активной разработки — после 2020 года новые версии выпускаются редко, основные усилия сообщества сосредоточены на Ceph.
  • Отсутствие встроенного шифрованияшифрование данных в покое не реализовано на уровне файловой системы (требуется использование шифрования на уровне блочных устройств или приложений).

Интересные факты

  • Название «Gluster» происходит от слов «Global» (глобальный) и «Cluster» (кластер).
  • GlusterFS использует протокол FUSE, что позволяет монтировать её без прав root (в пользовательском пространстве).
  • В 2012 году GlusterFS была выбрана в качестве основы для облачного хранилища компании Rackspace.
  • Максимальный размер одного файла в GlusterFS ограничен только размером кирпича (локальной файловой системы), а не самой файловой системой.

Источники

  • Официальная документация GlusterFS (gluster.org)
  • «GlusterFS: A Distributed File System for the Cloud» — статья в журнале Linux Journal (2012)
  • «Red Hat Gluster Storage Administration Guide» — Red Hat, Inc.
  • «The GlusterFS File System» — A. Babu, 2006
  • «GlusterFS: A Scalable Network Filesystem» — доклад на конференции FOSDEM (2011)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →