====== GlusterFS ====== Распределённая отказоустойчивая файловая система. Нужно как минимум 3 ноды (5,7,9 и т. д.). Под ФС нужен отдельный диск (sdb) {{:service:pasted:20211216-131642.png}} https://docs.gluster.org/en/latest/Quick-Start-Guide/Quickstart/ gluster help # справка gluster volume get volume1 all # вывести все настройки тома ls /var/log/glusterfs # логи ===== Установка ===== apt update && apt install glusterfs-server # nfs-common samba systemctl start glusterd && systemctl enable glusterd # с первого сервера ввести в пул второй (или наоборот, неважно) gluster peer probe srv-gluster2 # проверка статуса gluster peer status # Создать том. Ноды нужно как минимум 3 и размещать том не на системном диске (добавить force для создания на системном диске) mkdir -p /glusterfs # Если не указать параметр replica, то получится Distributed volume gluster volume create volume1 replica 2 srv-gluster1:/glusterfs/vol1-brick1 srv-gluster2:/glusterfs/vol1-brick1 # force gluster volume start volume1 # инфо gluster volume list gluster volume info # На клиенте apt install glusterfs-client # nfs-common mkdir /mnt/volume1 # можно указывать любую ноду, например, srv-gluster2:volume1 mount -t glusterfs srv-gluster1:volume1 ===== Квоты ===== Задаются для тома в целом (/) и на уровне отдельных папок. gluster volume quota volume1 enable gluster volume quota volume1 limit-usage / 20GB # hard limit, soft limit - 80% by default gluster volume quota volume1 list # список квот ===== Расширение / сжатие тома ===== # Добавить кирпич на другой ноде gluster volume add-brick volume1 srv-gluster2:/glusterfs/vol1-brick1 # Если том распределённый, то после расширения надо бы перераспределить данные gluster volume rebalance volume1 start # Статус прогресса балансировки gluster volume rebalance volume1 start # Убрать данные с кирпича gluster volume remove-brick volume1 srv-gluster2:/glusterfs/vol1-brick1 start # Удалить кирпич gluster volume remove-brick volume1 srv-gluster2:/glusterfs/vol1-brick1 commit ===== Ограничение доступа ===== gluster volume get volume1 auth.allow # кому разрешено gluster volume get volume1 auth.reject # кому запрещено gluster volume set volume1 auth.restrict 192.168.1.10,172.16.20.5,10.2.4.*,comp3,comp5 gluster volume reset volume1 auth.reject # сбросить auth.reject в настройки по умолчанию ===== Удаление ===== Размонтировать на клиенте, потом на сервере gluster volume stop volume1 gluster volume delete volume1 # Данные на /glusterfs/vol1-brick1 останутся ===== Доступ по SMB ===== Для отказоустойчивости SMB используется сервис CTDB (Cluster Trivial Database). Рекомендуемая настройка для прода: * Сеть SMB, к которой подключаются клиенты, и внутренняя сеть Gluster должны быть разными, иначе будут проблемы с производительностью. * Сети SMB и Gluster нужно посадить на разные сетевые интерфейсы. * Интерфейсы должны быть одинаковыми по пропускной способности. Тестовый вариант # Создать отдельный том для lock-файла mkdir /gluster/ctdb # На каждой ноде # Создать том gluster volume create ctdb replica 3 gluster{1..3}:/gluster/ctdb # force (на одной ноде) # Прописать имя тома в конфиг. файлах sed -i '/META="all"/c META="ctdb"' /var/lib/glusterd/hooks/1/start/post/S29CTDBsetup.sh sed -i '/META="all"/c META="ctdb"' /var/lib/glusterd/hooks/1/stop/pre/S29CTDB-teardown.sh # Включить кластеризацию в конфиге самбы sed -i '/\[global\]/a clustering=yes' /etc/samba/smb.conf # На каждой ноде vi /etc/samba/smb.conf [global] clustering = yes idmap backend = tdb2 kernel share modes = no kernel oplocks = no map archive = no map hidden = no map read only = no map system = no store dos attributes = yes # Прописать ноды, участвующие в кластере (реальные IP) printf "192.168.1.11\n192.168.1.12\n192.168.1.13\n" > /etc/ctdb/nodes # На каждой ноде # Создать файл с публичным виртуальным адресом (для клиентского доступа) на каждой ноде. Можно прописать несколько адресов. echo "192.168.1.20/24 eth0" > /etc/ctdb/public_addresses # Запустить ctdb systemctl start ctdb # Инфо ctdb status # состояние кластера ctdb ip # виртуальный адрес # For Samba-4.8.5-104 or later - To export gluster volume as SMB share via Samba, # one of the following volume options, user.cifs or user.smb is required. gluster volume set VOLNAME user.smb enable # These commands will enable optimized options for Samba-CTDB setup gluster volume set VOLNAME group samba gluster volume set VOLNAME storage.batch-fsync-delay-usec 0 gluster volume set VOLNAME client.event-threads 4 gluster volume set VOLNAME server.event-threads 4 # Uncomment CTDB_SAMBA_SKIP_SHARE_CHECK=yes to disable checking of the shares by ctdb. sed -i 's/# CTDB_SAMBA_SKIP/CTDB_SAMBA_SKIP/' /etc/ctdb/script.options https://docs.gluster.org/en/latest/Administrator-Guide/Accessing-Gluster-from-Windows/\\ https://wiki.samba.org/index.php/CTDB_and_Clustered_Samba\\ https://access.redhat.com/documentation/en-us/red_hat_gluster_storage/3.5/html/administration_guide/sect-smb