@ Карта сайта News Автора!

Bog BOS: Сетевая файловая система GlusterFS

Последние изменения:
2024.11.22: sysadmin: systemd-journald (централизованное хранение)
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL

Последнее изменение файла: 2016.02.26
Скопировано с www.bog.pp.ru: 2024.11.23

Bog BOS: Сетевая файловая система GlusterFS

Сетевая файловая система GlusterFS разработана компанией Gluster Inc. Агрегирует файловые пространства (bricks, кирпичи) большого количества серверов в единую распределённую файловую систему (volume, том). Это объектная (не блочная) распределённая файловая система без центрального сервера метаданных. Для соединения можно использовать TCP/IP или Infiniband RDMA (OFED 1.4 для версии 3.0, OFED 1.5 для версии 3.1; кстати, в RHEL5.5 - OFED 1.4). Эффективна при десятках узлов. Файлы можно восстанавливать из локального файлового пространства (если не использовались тома с расщеплением). Реализована на прикладном уровне (нет модулей ядра, требуется поддержка FUSE для клиентов, ядро 2.6.18 и выше для 2.0, ядро 2.6.27 и выше для версии 3.0.2; FUSE появился только в RHEL5.4). Проблема одновременного доступа к данным решается на уровне подлежащей файловой системы (к каждой файловой системе обращается ровно один сервер). Можно использовать различные подлежащие файловые системы (рекомендуется ext3 или ext4). Постоянно работающая фоновая служба самопроверки. Имеется библиотека libglusterfs, которую можно встроить в приложение для прямого обращения к серверу, минуя уровень файловой системы и FUSE. Сервер может работать под Linux, FreeBSD, OpenSolaris, Solaris или Mac OS X. Клиент может работать под Linux с поддержкой FUSE. При отсутвии клиента (не Linux, нет FUSE) можно воспользоваться специальной версией NFS сервера (FUSE в 3.0 - не держит нагрузку, встроенный в 3.1), модулем для Apache и т.д.. Лицензия - GPLv3 (GNU Affero General Public License). Версия 3.2.4 от сентября 2011 (3.0.6 от октября 2010; 2.0.9 от декабря 2009; 1.3.12 от сентября 2008; в EPEL5 - 2.0.8, в EPEL4 - 1.3.12).

Ежегодная плата за подписку (от $1500 за сервер). NAS Gluster Storage Platform объединяет ОС, GlusterFS, установщик и веб-интерфейс настройки (включая доступ по NFS и CIFS). Настораживает обилие в документации маркетингового булшита вместо вменяемого описания архитектуры системы, которое необходимо для оптимизации конфигурации (причём часть документации исчезала прямо по ходу чтения). Зато есть официальный перевод на русский язык. Неприятно поразила несовместимость клиентов 2.0.9 и серверов 2.0.8 (не работала команда ls). Отсутствует сбор статистики (iostat), динамическое управление кешированием и readahead-ом (readahead в некоторых ситуациях - например, bonnie++ rewrite - просто безумствует забивая канал). Нет привычного по NFS мягкого монтирования в фоне, аккуратной обработки ситуации с временным пропаданием сервера, стандартных параметров монтирования. Подозреваю, что на доработку обещанных функций (replicate) уйдёт несколько лет (в 3.1 реализована такая более простая для отладки возможность, как миграция) и только потом начнут настраивать производительность, затем улучшать эксплуатационные характеристики, затем вспомнят про безопасность (кстати, в версии 3.1 исчезли имена и пароли) и только потом этим можно будет пользоваться. А пока можно использовать (не версию 3.1.0!) для кластерного /tmp ;)

Компания Red Hat купила компанию Gluster Inc. осенью 2011 и выпустила продукт Red Hat Storage Software Appliance.

Архитектура 3.0

Сетевая файловая система GlusterFS состоит из следующих компонент:

Архитектура 3.1

Сетевая файловая система GlusterFS состоит из следующих компонент:

Модули (трансляторы)

Модули (трансляторы) выстраиваются в цепочку обслуживания, на входе и выходе транслятора - том. Самый нижний модуль сервера (типа storage/posix) указывает на подлежащую файловую систему. Описание томов (модулей) на сервере обычно находится в файле /etc/glusterfs/glusterfsd.vol (/etc/glusterd/ для версии 3.1). Файл имеет построчный формат, комментарии начинаются с '#'. Описание модуля начинается с команды volume и указанием имени получающегося тома, тип и подтип модуля (через '/') указываются командой type, ссылки на подлежащие тома указываются командой subvolumes с указанием имён томов нижнего уровня, параметры модуля задаются командами option, завершается описание модуля командой end-volume. Имена регистрозависимые. Подтома должны быть описаны до своего использования. Возможно написание единого конфигурационного файла как для сервера, так и для клиента. В версии 3.1 разбит на /etc/glusterd/vols/имя-тома/info, /etc/glusterd/vols/имя-тома/имя-тома-fuse.vol, /etc/glusterd/nfs/nfs-server.vol, /etc/glusterd/vols/имя-тома/имя-тома.имя-сервера.имя-кирпича.vol.

Модули:

Утилита командной строки (версия 3.1)

Утилита gluster позволяет настраивать и управлять томами GlusterFS без остановки работы. Имеет интерактивный режим. Команды (журнал в /etc/glusterd/.cmd_log_history):

replica - позволяет создавать тома, данные которых хранятся на 2 серверах, что позволяет продолжать обслуживание при падении одного из серверов (а brain split?).

stripe - позволяет распределять части одного файла по нескольким серверам для ускорения чтения и записи. Эффективен только при работе с очень большими файлами.

Конфигурационные файлы, созданные (отредактированные) вручную более не поддерживаются, хотя и не запрещаются.

Генерация конфигурации с помощью glusterfs-volgen

С версии 2.0.9 поддерживаются только конфигурации, созданные с помощью glusterfs-volgen (результат помещается в текущий каталог в файл ИмяТома-ТипТранспорта.vol для клиентов и ИмяХоста-ИмяТома-export.vol для сервера):

Сервер GlusterFS glusterfsd (3.0)

Сервер GlusterFS glusterfsd. Журнал в /var/log/glusterfs/-etc-glusterfs-glusterfsd.vol.log.

Сервер glusterd (3.1)

Сервер GlusterFS glusterd. Ключи:

Ускоритель NFSv3

Ускоритель NFSv3 (пакет unfs3) - работает в пространстве пользователя в обход FUSE, что позволяет избежать двойного перемещения между пространствами ядра и пользователя. Набор возможностей урезан относительно стандарта: при создании объекта нельзя указать владение, размер и время создания; не реализованы функции блокировки (клиент должен монтировать с ключом nolock); только режим nohide.

Ключи unfsd:

Сигналы:

Под большой нагрузкой зависает клиент (RHEL4) - не клиент NFS, а хост целиком.

Модуль fuse из дистрибутива RHEL5.4 не поддерживает ре-экспорт в NFS (--disable-direct-io-mode?).

Монтирование через FUSE

Монтирование файловой системы на клиентском хосте с помощью FUSE - /sbin/mount.glusterfs, т.е. монтировать надо командой mount с ключом "-t glusterfs"

Ключи:

Опции монтирования для /etc/fstab (модуль fuse не грузится автоматически; надо в /sbin/mount.glusterfs вставить /sbin/modprobe fuse):

Опции монтирования FUSE (/sbin/mount.glusterfs - скрипт на bash, параметры для FUSE из /etc/fstab не передаются; можно использовать mount -o remount?):

Развёртывание распределённого хранилища для временных файлов (RHEL5.4/CentOS5.4)

Требуется обеспечить узлы счётного кластера общим файловым пространством для хранения временных файлов с автоматическим распределением нагрузки по узлам хранения данных. Имеется 4 сервера с излишками дискового пространства (серверов имеется больше, но предполагается, что извлекаемого с 4 хостов дискового пространства и скорости будет достаточно, а связывать все узлы кластера в неразъёмную конструкцию нежелательно). Половина клиентских хостов не может быть непосредственным клиентом glusterfs (Solaris, RHEL4), так что потребуется ускоритель NFS. Ситуация осложняется разбиением узлов кластера на 2 территории, связанные медленным (1 Гбит) каналом.

Установка сервера:

Установка FUSE клиентов (в том числе и на серверах):

Установка ускорителей NFS:

Установка NFS клиентов:

Развёртывание распределённого хранилища для временных файлов (RHEL5.5/CentOS5.5) на GlusterFS 3.1

Требуется обеспечить узлы счётного кластера общим файловым пространством для хранения временных файлов с автоматическим распределением нагрузки по узлам хранения данных. Имеется 2 сервера с излишками дискового пространства (для начала). Ситуация осложняется разбиением узлов кластера на 2 территории, связанные медленным (1 Гбит) каналом вместо InfiniBand.

Установка сервера:

  • проверить журналы /var/log/glusterfs/daemon.log, /var/log/glusterfs/nfs.log, /var/log/glusterfs/bricks/*.log
  • том сразу доступен по NFS (требуется сервис portmap/rpcbind на сервере/клиенте и rpc.statd на клиенте) при обращении к любому серверу (права доступа - '*')
  • Установка NFS клиентов (распределить клиентов по серверам):

    Установка FUSE клиентов (в том числе и на серверах):

    Изменения

    Изменения в 3.1.1 относительно 3.1.0

    Изменения в 3.1.0 относительно 3.0.6

    Изменения в 3.0.6 относительно 2.0.8

    Ссылки

    @ Карта сайта News Автора!

    Bog BOS: Сетевая файловая система GlusterFS

    Последние изменения:
    2024.11.22: sysadmin: systemd-journald (централизованное хранение)
    2024.11.11: sysadmin: Linux: пространства имён
    2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост
    2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL



    Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru