GlusterFS

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 — транслятор обеспечивает возможность шифрования и дешифрования данных по примитивному одноименному алгоритму.
Метки: GlusterFS, GPL, Infiniband, кластер, Масштабируемость, файловая система
-
http://www.sitnik.ru A.I.
-
http://www.insight-it.ru Иван Блинков
-
Rauan
-
http://www.insight-it.ru Иван Блинков
-
Alexey Kupershtokh
-
http://www.insight-it.ru Иван Блинков