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 →