Настраиваем распределённую файловую систему GlusterFS на CentOS 7
GlusterFS это распределённая, параллельная файловая система с открытым исходным кодом и линейной масштабируемостью. Работает в пользовательском пространстве при помощи технологии FUSE.
Основным преимуществом GlusterFS является то, что мы можем масштабировать хранилище до нескольких петабайт без какого-либо простоя, а также обеспечивает избыточность и высокую доступность хранилища.
Доступ к Gluster-ресурсу можно получать как с использованием FUSE, так и через NFS-протокол версии не ниже третьей. В последнем случае (доступ по NFS) демон Gluster подгружает соответствующий транслятор, который выступает в роли NFS-сервера и не может работать совместно с другими NFS-серверами. Несмотря на то, что разработчики Gluster декларируют совместимость с CIFS, в действительности такая совместимость средствами самого Gluster не обеспечивается, поэтому для экспорта Windows-клиентам необходимо создать разделяемый ресурс средствами Samba. Wikipedia
Ознакомиться с терминологией GlusterFS можно в официальной документации
В статье будет рассмотрен один из примеров построения отказоустойчивого и масштабируемого хранилища. В качестве хостов будут использованы виртуальные с сервера с минимальной установкой CentOS 7.
1 | 172.16.1.7 gfs01 |
Заранее добавим эти записи в файл /etc/hosts
на каждом сервере.
Установка GlusterFS
Установка дополнительных пакетов.
1 | yum install epel-release -y |
GlusterFS доступен в репозитории CentOS SIG, установим его:
1 | yum install centos-release-gluster |
Запускаем сервис и добавляем в автозапуск.
1 | systemctl start glusterd |
Добавляем правила на firewall для корректной работы сервиса.
1 | # firewall-cmd --zone=public --add-service=nfs --add-service=samba --add-service=samba-client --permanent |
Настройка Volume
Формируем доверенный пул хранения
На первом хосте выполняем команды для формирования доверенного пула хранения с соседними хостами.
1 | gluster peer probe gfs01 |
Проверям статус:
1 | [root@gfs01 ~]# gluster peer status |
Создаём брики
В данной статье рассмотрен вариант в обычными директориями, рекомендуется использовать разделы или тома LVM.
1 | mkdir -p /folder-one && mkdir -p /folder-two |
После этого создаём общий ресурс с именем files-one
и files-two
с репликой 3 (обратите внимание, что количество реплик равно количеству серверов).
1 | gluster volume create files-one replica 3 gfs01:/folder-one gfs02:/folder-one gfs03:/folder-one force |
Запускаем тома
Выполняем запуск созданных томов
1 | gluster volume start files-one |
Проверяем их статус:
1 | [root@gfs01 ~]# gluster volume status files-one |
Настраиваем отказоустойчивость пулов
1 | gluster volume set files-one network.ping-timeout 5 |
1 | gluster volume set files-two network.ping-timeout 5 |
network.ping-timeout
- устанавливаем период опроса в 5 секунд, вместо 42 по умолчанию.cluster.quorum-type(нет|auto|fixed)
- Если установлено значение fixed
, этот параметр разрешает запись в файл, только если количество активных блоков в этом наборе реплик (к которому принадлежит файл) больше или равно количеству, указанному в параметре quorum-count
.cluster.quorum-count
- количество блоков, которые должны быть активны в наборе реплик, чтобы разрешить запись.performance.quick-read(on|off)
- включение быстрого чтения для транслятора пула.
Монтируем пулы
Монтируем пулы к рабочим директориям.
К примеру пул files-one
будет использоваться для директории /home/pictures
, равно как пул files-two
для /home/docs
. Обратите внимание, что маунт выполняется каждый на своём сервере локально.
1 | # On gfs01 |
Для автоматического монтирования пулов при загрузке необходимо добавить соответствующие записи в /etc/fstab
.
1 | # On gfs01 |