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

Установка и настройка 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
Автор
Редакция

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство