Настройка NAS с помощью GlusterFS
Что такое GlusterFS в одном предложении: GlusterFS агрегирует дисковое пространство нескольких серверов в единый глобальный namespace и предоставляет доступ по файловым протоколам.
Что нужно:
- Сеть (рекомендуется Gigabit Ethernet)
- GlusterFS (сервер и клиенты)
- Linux-серверы или виртуальные машины
Основные понятия
GlusterFS — распределённая система хранения. Брик (brick) — каталог на сервере, используемый как хранилище для тома. Тома (volume) объединяют брики и экспортируются клиентам.
1. Подготовка сети
Лучше всего использовать Gigabit Ethernet и несколько серверов с отдельными дисками. Для изучения достаточно двух физических машин или двух виртуальных машин. Всегда назначайте серверам статические IP-адреса или используйте стабильные DNS-имена.
Важно
- Разделите трафик кластера и клиентский трафик при возможности (две сети).
- Проверьте прохождение ICMP и открытые порты между узлами.
2. Установка сервера
Во многих дистрибутивах GlusterFS доступен в репозиториях. Проверьте версию на сайте проекта и, при необходимости, обновите пакеты вручную. На Debian/Ubuntu установка сервера выглядит так:
sudo apt-get update
sudo apt-get install glusterfs-serverПосле установки запустите и включите службу:
sudo systemctl enable --now glusterd
sudo systemctl status glusterdПримечание: при несовпадении версий между серверами рассогласования могут привести к ошибкам, поэтому желательно поддерживать одинаковые версии glusterd на всех нодах.
3. Переключение на статический IP и работа с томами
Откройте файл сетевых интерфейсов (пример для классических /etc/network/interfaces):
sudo nano /etc/network/interfacesЗамените запись динамического адреса на статический, например:
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
broadcast 192.168.0.255
network 192.168.0.0Перезагрузите сеть или машину и проверьте доступность.
Создание тома
На одной из нод создайте директорию для брика и затем том:
sudo mkdir -p /data
sudo gluster volume create testvol 192.168.0.100:/dataЗапустите том для использования:
sudo gluster volume start testvolОстановка и удаление тома:
sudo gluster volume stop testvol
sudo gluster volume delete testvolПояснение: в этом примере “testvol” — имя тома, а “/data” на сервере рассматривается как brick.
Критерии приёмки
- Том успешно создаётся без ошибок.
- Том стартует и принимает подключения.
- Данные записываются и читаются с клиента.
4. Монтирование тома локально
Создайте точку монтирования и смонтируйте том на клиенте:
sudo mkdir -p /mnt/gluster
sudo mount.glusterfs 192.168.0.100:/testvol /mnt/glusterПроверьте запись:
echo "It works" | sudo tee /mnt/gluster/test.txt
cat /mnt/gluster/test.txtЕсли всё работает, вы увидите содержимое файла.
Совет
- Для автоматического монтирования добавьте запись в /etc/fstab или используйте systemd mount unit.
5. Экспорт через NFS
В более новых версиях GlusterFS присутствует NFS-клиент/серверная интеграция, но для работы NFS через Gluster может потребоваться портмап или пакет rpcbind на сервере.
Создайте точку монтирования для NFS-теста и смонтируйте:
sudo mkdir -p /mnt/nfstest
sudo mount -t nfs 192.168.0.100:/testvol /mnt/nfstest -o tcp,vers=3Чтобы клиент монтировал NFS при загрузке, добавьте строку в /etc/fstab, например:
192.168.0.100:7997:/testvol /mnt/nfstest nfs defaults,_netdev 0 0Примечание
- Номер порта 7997 использован как пример. Уточняйте порт, если вы использовали нестандартную настройку NFS через Gluster.
Проверка пиров и добавление нод
Чтобы добавить новый сервер в Trusted Pool, выполните на управляющей ноде:
sudo gluster peer probe 192.168.0.101
sudo gluster peer statusЕсли предпочитаете имена, добавьте соответствующие строки в /etc/hosts на админ-машине:
192.168.0.101 node2.example.local node2Когда GlusterFS не подходит
- Нужна очень низкая задержка и высокая производительность на уровне блочного хранилища — лучше смотреть в сторону Ceph RBD или SAN.
- Требуется POSIX-блокировка в полной мере для специализированных баз данных — в таких сценариях стоит рассмотреть другие решения.
- Малый кластер (1 узел) — избыточно; проще использовать локальный диск или LVM.
Альтернативные подходы
- Ceph — для блокового, объектного и файлового хранения с высокой масштабируемостью.
- NFS/SMB с кластерными файловыми системами — проще, но менее масштабируемо.
- Сетевые устройства хранения (NAS appliances) — готовые turnkey-решения.
Чек-листы по ролям
Инженер по установке:
- Проверить доступность репозиториев и версий glusterd
- Установить и запустить glusterd
- Настроить статические IP и firewall
Администратор хранилища:
- Создать и запустить тома
- Настроить резервное копирование критичных данных
- Мониторить состояние бриков и p2p-соединений
Операционный инженер:
- Настроить автоматическое монтирование клиентов
- Проверить производительность и задержки
- Планировать capacity и добавление нод
Краткая методология развертывания
- Подготовьте сеть и одинаковые версии ПО на нодах.
- Назначьте статические IP или DNS-имена.
- Установите glusterd и убедитесь в его работе.
- Создайте брики и тома, стартуйте том.
- Смонтируйте на клиенте, протестируйте запись/чтение.
- Подключите дополнительные ноды и протестируйте отказоустойчивость.
Отладка и распространённые ошибки
- Проверяйте логи: /var/log/glusterfs/ и systemd-journal.
- Убедитесь, что на всех нодах совпадают версии пакетов.
- Симптомы «Stale inode» или «Split-brain» требуют ручного вмешательства и восстановления из резервной копии.
Глоссарий
- Том — логическая единица хранения в GlusterFS.
- Брик — каталог на сервере, используемый как часть тома.
- Peer — узел кластера GlusterFS.
Итог
GlusterFS — удобный инструмент для организации NAS на Linux, подходящий для случаев, когда нужна отказоустойчивость и простота масштабирования. Для небольших тестовых сред достаточно двух узлов. В продакшене планируйте минимум три узла для отказоустойчивости и убедитесь в согласованности версий.
Важное
Перед развёртыванием в продуктивной среде протестируйте операции записи/чтения и сделайте план резервного копирования.
Похожие материалы
Создать стикеры и стикерпак для Telegram
Как сменить значок приложения Reddit
Шаблон заметок о встрече в Google Docs
Напоминания на Amazon Echo — как настроить
Как починить клавиатуру ноутбука самостоятельно