GlusterFS
GlusterFS | |
---|---|
Тип | Распределённая файловая система |
Разработчик | Gluster Inc |
Написана на | Си[1] |
Операционные системы | Linux, Mac OS X, FreeBSD, OpenSolaris |
Первый выпуск | 2005 |
Последняя версия | 7.5 (апрель 2020) |
Репозиторий | github.com/gluster/glust… |
Лицензия | GPLv3 (до версии 3.1) AGPL (с версии 3.1) |
Сайт | gluster.org |
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 не требуется отдельный сервер метаданных, что улучшает масштабируемость и надёжность системы. Метаданные хранятся вместе с данными (в расширенных атрибутах файлов).
Клиенты
[править | править код]Доступ к Gluster-ресурсу можно получать как с использованием FUSE, так и через NFS-протокол версии не ниже третьей. В последнем случае (доступ по NFS) демон Gluster подгружает соответствующий транслятор, который выступает в роли NFS-сервера и не может работать совместно с другими NFS-серверами. Несмотря на то, что разработчики Gluster декларируют совместимость с CIFS, в действительности такая совместимость средствами самого Gluster не обеспечивается, поэтому для экспорта Windows-клиентам необходимо создать разделяемый ресурс средствами Samba.
Примечания
[править | править код]Ссылки
[править | править код]- Сайт GlusterFS (англ.)
- GlusterFS Вики (англ.)