Гид по технологиям

Установка и настройка GlusterFS на Rocky Linux — пошаговый гид

8 min read Storage Обновлено 26 Nov 2025
GlusterFS на Rocky Linux — установка и настройка
GlusterFS на Rocky Linux — установка и настройка

Введение

GlusterFS (Gluster File System) — это свободная распределённая файловая система от Red Hat. Она объединяет несколько серверов в единый логический том и подходит для крупных объёмов данных. GlusterFS поддерживает масштабирование, репликацию и простую установку.

Краткое определение: GlusterFS — распределённая сеть файловых кирпичей (bricks), объединённых в том (volume).

В этой инструкции показано, как установить GlusterFS 9 на две машины Rocky Linux, создать реплицируемый том и смонтировать его на клиенте. Приведён полный набор шагов: подготовка хостов, настройка дисков, добавление репозитория, установка, настройка брандмауэра, создание и проверка тома, а также рекомендации по следующим операциям и отладке.

Требования

  • Две машины с Rocky Linux. У каждой должен быть дополнительный диск для данных.
  • Настроен root-пароль или доступ через sudo.
  • Статические IP-адреса и корректные записи в /etc/hosts.

Пример конфигурации, используемой в руководстве:

  • server1.localdomain.lan — 192.168.10.15
  • server2.localdomain.lan — 192.168.10.20

Содержание этой статьи

  • Подготовка FQDN и /etc/hosts
  • Настройка разделов и монтирование дисков
  • Добавление репозитория GlusterFS для Rocky Linux
  • Установка и запуск сервера GlusterFS
  • Открытие портов в firewalld
  • Инициализация кластера и проверка пиров
  • Создание реплицируемого тома myvolume
  • Монтирование тома на клиенте и проверка записи
  • Тестирование отказоустойчивости
  • Рекомендации по производительности, безопасности и резервированию
  • Чек-листы, сценарии тестирования и план реагирования на инциденты

Настройка FQDN и /etc/hosts

Установите полные имена (FQDN) на каждой машине и добавьте соответствующие записи в /etc/hosts.

На server1:

sudo hostnamectl set-hostname server1.localdomain.lan

На server2:

sudo hostnamectl set-hostname server2.localdomain.lan

Отредактируйте /etc/hosts на обеих машинах:

sudo nano /etc/hosts

Добавьте строки:

192.168.10.15 server1.localdomain.lan
192.168.10.20 server2.localdomain.lan

Сохраните и проверьте связь:

ping -c3 server1.localdomain.lan
ping -c3 server2.localdomain.lan

Изображение: Настройка FQDN и файла hosts на примере двух серверов

Важно: корректный DNS или /etc/hosts необходим для корректной работы peer probe и клиентского монтирования.

Настройка разделов и точек монтирования

Рекомендуется выделить отдельный диск или раздел для данных GlusterFS. В учебном примере на обеих машинах есть второй диск /dev/vdb1 размером ~5 ГБ.

Добавьте точки монтирования в /etc/fstab. На server1 используем /data/vol1, на server2 — /data/vol2.

На server1:

sudo nano /etc/fstab
# Добавьте строку
/dev/vda1 /data/vol1 ext4 defaults 0 0

На server2:

sudo nano /etc/fstab
# Добавьте строку
/dev/vda1 /data/vol2 ext4 defaults 0 0

Примените монтирование:

sudo mount -a
sudo df -h

Создайте директории для «кирпичей» (bricks):

На server1:

sudo mkdir -p /data/vol1/brick0

На server2:

sudo mkdir -p /data/vol2/brick0

Примечание: путь к brick должен указывать на пустую файловую систему или каталог, предназначенный только для GlusterFS.

Настройка разделов и создание директорий для brick

Добавление репозитория GlusterFS для Rocky Linux

На момент написания Rocky Linux напрямую не поставлял GlusterFS 9 в основном репозитории. Мы используем пакет «centos-release-gluster9» и корректируем URL репозитория под Rocky Vault.

Установите пакет репозитория:

sudo dnf install centos-release-gluster9

Отредактируйте файл /etc/yum.repos.d/CentOS-Gluster-9.repo и замените или добавьте baseurl на зеркало Rocky Vault. Пример содержимого:

# CentOS-Gluster-9.repo
[centos-gluster9]
name=CentOS-$releasever - Gluster 9
#mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=$releasever&repo=storage-gluster-9
baseurl=https://dl.rockylinux.org/vault/centos/8.5.2111/storage/x86_64/gluster-9/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage

Затем обновите список репозиториев:

sudo dnf repolist

Изображение: Файл репозитория CentOS-Gluster-9.repo отредактирован для Rocky Linux

Совет: сохраняйте резервную копию оригинального .repo файла перед изменением.

Установка GlusterFS Server

Установите пакеты GlusterFS на обеих серверах:

sudo dnf install glusterfs glusterfs-libs glusterfs-server

После установки включите и запустите службу:

sudo systemctl enable glusterfsd.service
sudo systemctl start glusterfsd.service
sudo systemctl status glusterfsd.service

Ожидаемый статус: active (exited) — это нормальное поведение systemd для данного процесса: сервис доступен.

Запуск службы glusterfsd и проверка статуса

Открытие портов в firewalld

GlusterFS использует ряд портов; проще всего добавить сервис glusterfs в firewalld:

sudo firewall-cmd --add-service=glusterfs --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-services

Проверьте, что в списке присутствует glusterfs.

Сервис glusterfs добавлен в firewalld

Если вы используете нестандартные сети — откройте порты вручную или настройте соответствующие интерфейсы.

Инициализация кластера GlusterFS (peer probe)

На server1 выполните peer probe для добавления server2 в кластер:

sudo gluster peer probe server2.localdomain.lan

Вы должны увидеть: peer probe: success

Проверьте статус пиров на server1 и server2:

sudo gluster peer status

Ожидается состояние одного пира (server2). Повторите на второй ноде.

Проверка состояния пиров GlusterFS

Пояснение: команда peer probe инициирует обмен ключами и настройку пиринга. Она должна выполняться только с одной ноды для добавления конкретного пира.

Создание реплицируемого тома (volume)

В примере создаём том myvolume с типом replica 2: по одному brick’у на каждой машине.

На одной из нод (обычно на server1) выполните:

sudo gluster volume create myvolume replica 2 server1.localdomain.lan:/data/vol1/brick0 server2.localdomain.lan:/data/vol2/brick0

Если команда вернёт подтверждение, введите y и нажмите Enter. Затем запустите том:

sudo gluster volume start myvolume
sudo gluster volume status
sudo gluster volume info

Проверьте, что том в состоянии Started и Online.

Изображение: Статус тома myvolume — online

Важно: если вы используете репликацию, количество replica должно равняться количеству кирпичей в репликации и нечётному для quorum в больших кластерах.

Монтирование GlusterFS на клиенте

На клиентской машине (client) добавьте те же записи в /etc/hosts и проверьте связь:

sudo nano /etc/hosts
# Добавьте
192.168.10.15 server1.localdomain.lan
192.168.10.20 server2.localdomain.lan

ping -c3 server1.localdomain.lan

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

sudo dnf install glusterfs-client

Создайте точку монтирования и смонтируйте том:

sudo mkdir /data
sudo mount.glusterfs server1.localdomain.lan:/myvolume /data

Проверьте монтирование:

df -h | grep myvolume

Изображение: Клиент успешно смонтировал том GlusterFS

Совет: для автоподключения на перезагрузке используйте fstab с опцией netdev:

server1.localdomain.lan:/myvolume /data glusterfs defaults,_netdev 0 0

Тестирование записи и отказоустойчивости

На клиенте создайте файлы:

cd /data
touch file{1..5}.md

На server1 проверьте содержимое brick:

ls /data/vol1/brick0

Затем перезагрузите server1:

sudo shutdown -r now

На server2 проверьте статус пиров:

sudo gluster peer status
# ожидаем состояние disconnected или peer down

Проверьте наличие файлов на server2:

ls /data/vol2/brick0

На клиенте доступ к томy сохраняется — это подтверждает репликацию и работу высокой доступности.

Изображение: Один из пиров отключён, но данные доступны на другом пира

Проверка целостности и синхронизации

После восстановления server1 запустите проверку status и при необходимости rebalance или heal.

Проверка информации о репликации и состоянии:

sudo gluster volume heal myvolume info
sudo gluster volume heal myvolume info split-brain

Запуск синхронизации и ребаланса (если нужно):

sudo gluster volume rebalance myvolume start
sudo gluster volume rebalance myvolume status

Короткое определение: heal — механизм самовосстановления реплик; rebalance — перераспределение хэшей и данных.

Частые проблемы и отладка

  • Проблема: «peer probe: timed out» — проверьте /etc/hosts, firewall, SELinux и сетевую связность.
  • Проблема: том не стартует — проверьте журналы systemd и /var/log/glusterfs/.
  • split-brain — возникает при одновременной записи на обе ноды при сетевом разрыве; решается проверкой и ручным слиянием.

Полезные команды для дебага:

journalctl -u glusterfsd.service -b
sudo gluster volume status myvolume detail
sudo tail -n 200 /var/log/glusterfs/glusterd.log

Важно: перед выполнением destructive операций (удаление тома, форматирование) сделайте резервную копию.

Производительность и оптимизация

Рекомендации:

  • Используйте отдельные диски/тома для brick’ов.
  • В продакшене применяйте RAID или LVM поверх физических дисков.
  • Настройте network tuning (MTU, offloading) при необходимости.
  • Отключайте nfs/other services на томах, если они не используются.

Параметры, влияющие на производительность:

  • io-threading и quick-read/ write-behind — настраиваются через gluster volume set.
  • Установка cache.size и performance.cache-size в зависимости от памяти.

Пример изменения опции:

sudo gluster volume set myvolume performance.cache-size 512MB

Замечание: тестируйте изменения на тестовой среде перед продакшеном.

Безопасность и SELinux

  • Если у вас включён SELinux, убедитесь, что контексты файлов и точек монтирования корректны.
  • Для межузловой аутентификации используйте защищённые сети или VPN.
  • Ограничьте доступ к серверу по IP-адресам в брандмауэре.

Если SELinux блокирует операции, временно проверьте состояние:

sestatus
sudo setenforce 0  # только для теста, не рекомендуется в продакшене

Для постоянной работы лучше настроить соответствующие boolean и контексты.

Когда GlusterFS не подходит

  • Если вам нужна тонкая POSIX-совместимая блок-ориентированная система с миллионами мелких файлов и крайне низкой задержкой — рассмотрите специализированные решения.
  • Для очень больших распределённых хранилищ с огромной масштабируемостью (сотни нод) может подойти Ceph, а не GlusterFS.

Альтернативы

  • Ceph — блок/объект/файловая система с высокой масштабируемостью.
  • NFS с DRBD — простая репликация между двумя нодами, но менее гибкая на масштаб.
  • S3-совместимые объектные хранилища — для приложений, ориентированных на объектный доступ.

Модель зрелости и рекомендации по развёртыванию

  • Уровень 0 (POC): 2 ноды, репликация, тесты на отказ.
  • Уровень 1 (Production small): 3 ноды, реплика 3, мониторинг, бэкапы.
  • Уровень 2 (Enterprise): 3+ нод, гео-репликация, интеграция с LDAP/ACL, мониторинг и SLA.

Чек-лист перед вводом в эксплуатацию

Для системного администратора:

  • Проверена сетевая связность между всеми нодами
  • Диски выделены и смонтированы корректно
  • Репозиторий и пакеты установлены одинаковых версий
  • Firewalld открыл сервис glusterfs
  • Создан и запущен том, проверен статус
  • Настроено автоматическое монтирование на клиентах
  • Выполнено тестирование записи и отказоустойчивости

Для DevOps / владельца приложения:

  • Приложение протестировано на совместимость с сетевой файловой системой
  • Выполнены тесты производительности и IO
  • Составлен план бэкапа и восстановления

Критерии приёмки

  • Том myvolume доступен с клиента и монтируется автоматически.
  • Данные, записанные на клиенте, видны на обоих brick’ах.
  • При отключении одного из серверов клиент продолжает работать без ошибок.
  • После восстановления ноды выполняется heal и синхронизация данных.

План реагирования на инциденты (runbook)

  1. Симптом: нода не отвечает (network timeout).

    • Проверить состояние пиров: sudo gluster peer status
    • Проверить сетевую доступность: ping, traceroute
    • Проверить файервол: sudo firewall-cmd –list-all
  2. Симптом: split-brain

    • Выполнить: sudo gluster volume heal myvolume info split-brain
    • Ручная проверка конфликтующих файлов и разрешение путём выбора корректной версии.
  3. Симптом: данные отсутствуют на всех нодах

    • Остановить запись клиентов
    • Проверить логи glusterd и brick’ов
    • Восстановить из резервной копии

Тестовые сценарии и критерии приёмки

  1. Создание файлов: создать 1000 файлов разного размера и проверить репликацию.
  2. Нагрузочный тест: запустить fio/bonnie++ с типичными профилями приложения.
  3. Отказ ноды: отключить server1 и проверить работу клиента.
  4. Восстановление: вернуть server1 онлайн и проверить heal и rebalance.

Критерии: все тесты проходят без потери данных и с приемлемой производительностью для вашего приложения.

Примеры полезных команд (cheat sheet)

  • Добавление пира:
sudo gluster peer probe 
  • Список пиров:
sudo gluster peer status
  • Создание тома:
sudo gluster volume create  replica  host1:/path host2:/path
  • Запуск тома:
sudo gluster volume start 
  • Статус тома:
sudo gluster volume status
sudo gluster volume info
  • Heal и rebalance:
sudo gluster volume heal  info
sudo gluster volume rebalance  start

Словарь — 1 строка каждое определение

  • Brick: место хранения данных на конкретной ноде (обычно каталог или раздел).
  • Volume: логический том GlusterFS, объединяющий несколько brick’ов.
  • Peer: узел кластера GlusterFS.
  • Heal: восстановление синхронизации реплик.
  • Rebalance: перераспределение данных между brick’ами.

Рекомендации по обслуживанию

  • Регулярно проверяйте состояние томов и пиров.
  • Настройте мониторинг (Prometheus, Grafana) для ключевых метрик (latency, IOPS, network).
  • Планируйте окно обслуживания для обновлений версий GlusterFS.
  • Делайте регулярные бэкапы критичных данных и проверяйте процедуру восстановления.

Заключение

Поздравляем! Вы развернули кластер GlusterFS на двух серверах Rocky Linux. Вы настроили реплицируемый том myvolume, смонтировали его на клиенте, протестировали запись и отказоустойчивость. Дальше рекомендуется настроить мониторинг, регулярные бэкапы, протестировать производительность под нагрузкой и подготовить план обновления для production-среды.

Важно: перед переводом в промышленную эксплуатацию протестируйте сценарии восстановления, split-brain и обновлений на копии окружения.

Ключевые действия: поддерживайте одинаковые версии пакетов на всех узлах, контролируйте сеть и регулярно проверяйте heal/rebalance.

Контактные рекомендации

Если вы управляете несколькими кластерами, ведите реестр версий, конфигураций и заметки об инцидентах. Это значительно ускорит диагностику и восстановление в будущем.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Тёмная тема в популярных приложениях Windows
Советы

Тёмная тема в популярных приложениях Windows

Изменение имени учётной записи в Windows
Windows

Изменение имени учётной записи в Windows

Настройка iptables в Linux — базовый файл правил
Безопасность

Настройка iptables в Linux — базовый файл правил

Исправить "This version of Netflix is not compatible"
Технологии

Исправить "This version of Netflix is not compatible"

Как настроить беспроводные наушники USB
Гаджеты

Как настроить беспроводные наушники USB

Приватный Docker Registry: запуск и настройка
DevOps

Приватный Docker Registry: запуск и настройка