Thank you for reading this post, don't forget to subscribe!
официальный сайт:
https://www.beegfs.io/wiki/TableOfContents
BeeGFS является распределённой файловой системой - аля ceph.
приступим к установке, у нас имеется 3 тачки:
beegfs1 - 192.168.1.170
beegfs2 - 192.168.1.171
beegfs3 - 192.168.1.172
На всех нодах добавляем репозиторий:
1 |
<strong>wget -O /etc/yum.repos.d/beegfs_rhel7.repo https://www.beegfs.io/release/latest-stable/dists/beegfs-rhel7.repo</strong> |
теперь установим пакеты:
yum install beegfs-mgmtd # служба управления
yum install beegfs-meta libbeegfs-ib # служба метаданных; libbeegfs-ib требуется только для RDMA
yum install beegfs-storage libbeegfs-ib # служба хранения; libbeegfs-ib требуется только для RDMA
yum install beegfs-client beegfs-helperd beegfs-utils # утилиты клиента и командной строки
yum install beegfs-admon # admon
yum install kernel-devel gcc
yum install java-1.8* (только на той тачке где ставим beegfs-admon)
Общая команда для установки:
yum install beegfs-mgmtd beegfs-meta libbeegfs-ib beegfs-storage libbeegfs-ib beegfs-client beegfs-helperd beegfs-utils beegfs-admon kernel-devel gcc
remote direct memory access, RDMA Удалённый прямой доступ к памяти (англ. remote direct memory access, RDMA) — аппаратное решение для обеспечения прямого доступа к оперативной памяти другого компьютера при помощи высокоскоростной сети. Такой доступ позволяет получить доступ к данным, хранящимся в удалённой системе без привлечения средств операционных систем обоих компьютеров. Является методом пересылки данных с высокой пропускной способностью и низкой задержкой сигнала, и особенно полезен в больших параллельных вычислительных системах — кластерах.
Описание пакетов:
Роли | пакеты |
---|---|
Сервер управления (один узел)
|
beegfs-mgmtd |
Сервер метаданных (хотя бы один узел)
|
beegfs-meta |
Сервер хранения (хотя бы один узел)
|
beegfs-storage |
клиент
|
beegfs-client beegfs-helperd |
Поддержка RDMA
|
libbeegfs-ib |
Admon - Сервер администрирования и мониторинга (необязательно)
|
beegfs-admon |
Mon - Сервер мониторинга на основе InfluxDB (необязательно)
|
beegfs-mon |
Утилиты BeeGFS для администраторов
|
beegfs-utils |
Общий BeeGFS
|
beegfs-common |
Создаём раздел на каждом сервере куда будем ставить beegfs
[root@beegfs1 ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
[root@beegfs1 ~]# vgcreate beegfs /dev/sdb
Volume group "beegfs" successfully created
[root@beegfs1 ~]# lvcreate -n beegfs -L 2G beegfs
Logical volume "beegfs" created.
[root@beegfs1 ~]# mkfs.ext4 -L beegfs /dev/mapper/beegfs-beegfs
монтируем на каждом сервере:
[root@beegfs1 ~]# mkdir -p /data/beegfs/storage
[root@beegfs1 ~]# mount /dev/mapper/beegfs-beegfs /data/beegfs/storage/
Добавляем в автозагрузку:
vim /etc/fstab
/dev/mapper/beegfs-beegfs /data/beegfs/storage ext4 defaults 1 2
добавляем в /etc/hosts:
192.168.1.170 beegfs1
192.168.1.171 beegfs2
192.168.1.172 beegfs3
создаём ssh ключи и раскидываем их по хостам:
[root@beegfs1 ~]# ssh-keygen
[root@beegfs1 ~]# ssh-copy-id beegfs1
[root@beegfs1 ~]# ssh-copy-id beegfs2
[root@beegfs1 ~]# ssh-copy-id beegfs3
Стартуем админку:
systemctl start beegfs-admon
далее перейдём к установке,
заходим по ссылке:
http://192.168.1.170:8000/
будет скачан jar файл запускаем его.
Если вы хотите запустить графический интерфейс из его местоположения по умолчанию на хосте Admon, используйте следующую команду:
1 |
java -jar /opt/beegfs/beegfs-admon-gui/beegfs-admon-gui.jar |
её можно использовать если у вас настроен например xming.
Мы запустим скачанный jar файл
beegfs-admon-gui.jar, откроется следующее окно:
указываем наш ip адрес:
на откроется следующее окно в котором мы указываем пользователя administrator и пароль admin:
Нажимаем логин и переходим на следующее окно:
слева мы видим панель конфигурации
данный раздел позволяет:
- Определить имя хоста ваших серверов и задачи их файловой системы.
- Используйте правую кнопку мыши для добавления / импорта / удаления хостов
- Возможные варианты выбора системы: «Сервер метаданных», «Сервер хранилища» и Клиенты. Клиенты указываются только для установки rpm / deb пакетов BeeGFS.
- Расположение демона управления и служб администрирования и мониторинга привязано к вашему хосту управления.
Переходим в раздел installation -> (дважды кликаем по) configuration, откроется следующее окно:
в нём мы добавляем сервера метаданных файло хранилища и клиентов, также можем задать имя демона.
Следующим шагом является установка некоторых основных параметров конфигурации для служб BeeGFS.
- Описание каждого параметра конфигурации можно просмотреть, наведя указатель мыши на информационный символ.
- Поля заполнены по умолчанию, поэтому вам не нужно ничего менять, если у вас нет особых потребностей.
- Примечание:
- BeeGFS использует локальную и базовую файловую систему для хранения данных своей файловой системы.
- Эти данные хранятся в «Каталоге метаданных» и «Каталоге хранения»
- Администратор должен либо смонтировать подходящее дисковое пространство и файловые системы в каталоги по умолчанию, либо изменить эти два пути.
- каталог метаданных по умолчанию: /data/beegfs/meta
- рекомендуемый тип файловой системы: ext4
- Каталог хранения по умолчанию: /data/beegfs/storage
- рекомендуемый тип файловой системы: xfs
- каталог метаданных по умолчанию: /data/beegfs/meta
- Примечание:
Для добавления серверов щёлкаем в нужном окне правой клавишей мыши и выбираем add host
появится следующее окно, заполняем его имена хостов на которых будут метаданные
нажимаем add
далее добавляем storage server, выполняем те же действия, правой клавишей мыши в соответствующем поле и выбираем add host, появится окно в которое мы добавим те же 2 сервера и нажимаем add
для окна client добавляем все 3 сервера beegfs1 beegfs2 beegfs3.
После того как все хосты добавлены, нажимаем next
в случае если возникла следующая ошибка:
значит что вы забыли раскидать ssh ключи между хостами, этапом ранее, проверьте есть доступ между тачками.
Если всё корректно, то при нажатии на next появится окно которое предлагает сохранить изменения, соглашаемся и получаем следующее уведомление:
Теперь приступим к настройке:
При создании томов мы указывали в качестве раздела для хранения данных:
/data/beegfs/storage
[root@beegfs1 ~]# df -h | grep beegfs
/dev/mapper/beegfs-beegfs 2.0G 6.0M 1.8G 1% /data/beegfs/storage
директорию для метаданных можно оставить неизменной, А вот точку монтирования для клиентов поправим с
/mnt/beegfs
на
/beegfs-client
создаём данную директорию на всех хостах:
[root@beegfs1 ~]# mkdir /beegfs-client
[root@beegfs2 ~]# mkdir /beegfs-client
[root@beegfs3 ~]# mkdir /beegfs-client
после чего нажимаем NEXT и попадаем на следующее окно:
здесь можно указать какую конфигурацию использовать для всех нод.
я здесь ничего не меняю, нажимаю NEXT соглашаюсь с сохранением конфигурации после чего открывается последнее информационное окно в котором мы можем убедиться, что куда будет установлено:
если всё ок и мы нигде не ошиблись, нажимаем install, соглашаемся с лицензией и нажимаем ОК.
всё, понеслась установка:
у меня установка завершилась с ошибкой:
в логе видим следующее:
Makefile:121: *** Linux kernel build directory not found. Please check if the kernel module development packages are installed for the current kernel version. (RHEL: kernel-devel; SLES: linux-kernel-headers, kernel-source; Debian: linux-headers). Stop.
make: *** [auto_rebuild] Error 2
Failed to compile client module on host beegfs3
доустановим пакет:
yum install kernel-devel
после нажимаем abort - close
и опять пытаемся заинсталиться, нажав next
Как видим всё ок прошло:
после чего на серверах надо запустить демонов в следующем порядке:
[root@beegfs1 ~]# systemctl start beegfs-meta
[root@beegfs1 ~]# systemctl start beegfs-mgmtd
[root@beegfs1 ~]# systemctl start beegfs-storage
[root@beegfs1 ~]# systemctl start beegfs-helperd
[root@beegfs1 ~]# systemctl start beegfs-client
так же это можно сделать из интерфейса, пройдя в :
"Management" -> "Start/Stop Services" и запустив сервисы в следующем порядке:
- management service
- metadata services
- storage services
- client services
данная часть панели работает с /etc/init.d которая на centos7 не работает, поэтому корректно статус не отображается.
если понадобится, то можно установить менеджер на второй сервер следующим образом:
[root@beegfs2 mgmtd]# /opt/beegfs/sbin/beegfs-setup-mgmtd -p /data/beegfs/mgmtd/ -f
Preparing storage directory: /data/beegfs/mgmtd/
* Creating format.conf file…
Updating config file: /etc/beegfs/beegfs-mgmtd.conf
* Setting storage directory in config file…
* Disabling usage of uninitialized storage directory in config file…
All done.
основная установка закончена, как видим нихуяшеньки сложного.
==================================================
Настроим зеркалирование
По умолчанию зеркалирование отключено для нового экземпляра файловой системы. Оба типа зеркалирования могут быть включены с помощью инструмента командной строки beegfs-ctl. (Инструмент beegfs-ctl содержится в пакете beegfs-utils и обычно запускается с клиентского узла.)
Зеркальное отображение хранилища может быть включено для каждого каталога, так что некоторые данные в файловой системе могут быть зеркально отражены, в то время как другие данные могут не зеркально отображаться. Со стороны medatada также возможно активировать или деактивировать зеркалирование для каждого каталога, но применяются определенные логические ограничения. Например, для эффективного зеркального отображения каталога также должен быть отражен весь путь к нему.
Настройки зеркального отображения каталога будут применены к новым записям файлов и будут получены из новых подкаталогов. Например, если зеркалирование метаданных включено для каталога /mnt/beegfs/mydir1, то в новом подкаталоге /mnt/beegfs/mydir1/mydir2 также автоматически будет включено зеркалирование метаданных.
После включения зеркального отображения метаданных для файловой системы с помощью команды
beegfs-ctl –mirrormd
метаданные корневого каталога будут зеркально отображены по умолчанию. Поэтому для вновь созданных каталогов в корневом каталоге также будет включено зеркалирование метаданных. Можно исключить новые папки из зеркального отображения метаданных, создав их с помощью
beegfs-ctl –createdir –nomirror.
Чтобы включить зеркалирование содержимого файла для определенного каталога, см. Встроенную справку инструмента beegfs-ctl.
1 2 |
$ beegfs-ctl --setpattern --buddymirror --help |
Зеркальное отображение содержимого файла впоследствии может быть отключено с помощью режима
beegfs-ctl –setpattern без параметра –buddymirror. Однако файлы, которые уже были созданы при включенном зеркалировании, останутся зеркальными.
автоматическая установка:
beegfs-ctl --addmirrorgroup --automatic --nodetype=meta
beegfs-ctl --addmirrorgroup --automatic --nodetype=storage
[codesyntax lang="php" blockstate="collapsed"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[root@beegfs1 ~]# <strong>beegfs-ctl --addmirrorgroup --automatic --nodetype=meta --force</strong> [WARNING] Odd number of targets detected. One target left without a mirror group. [WARNING] Storage target with targetNumID 3 unused, because no second target available. New mirror groups: BuddyGroupID Node type Node ============ ========= ==== 1 primary 1 @ beegfs-meta beegfs1 [ID: 1] secondary 2 @ beegfs-meta beegfs2 [ID: 2] Mirror buddy group successfully set: groupID 1 -> target IDs 1, 2 [root@beegfs1 ~]# <strong>beegfs-ctl --addmirrorgroup --automatic --nodetype=storage --force</strong> [WARNING] Odd number of targets detected. One target left without a mirror group. [WARNING] Storage target with targetNumID 3 unused, because no second target available. New mirror groups: BuddyGroupID Target type Target ============ =========== ====== 1 primary 1 @ beegfs-storage beegfs1 [ID: 1] secondary 2 @ beegfs-storage beegfs2 [ID: 2] Mirror buddy group successfully set: groupID 1 -> target IDs 1, 2 |
[/codesyntax]
ручная установка
[codesyntax lang="php" blockstate="collapsed"]
1 2 3 4 5 6 7 8 |
Ручное определение групп зеркалирования может быть полезно, если вы хотите установить пользовательские идентификаторы групп или если вы хотите убедиться, что сервера находятся в разных местах (например, в разных стойках). Ручное определение групп зеркалирования выполняется с помощью инструмента beegfs-ctl. С помощью следующей команды вы можете создать группу с идентификатором 100, состоящую из целей 1 и 2: $ beegfs-ctl --addmirrorgroup --nodetype=storage --primary=1 --secondary=2 --groupid=100 Посмотреть полный список параметров можно так: $ beegfs-ctl --addmirrorgroup --help При создании групп метаданных для зеркальных контактов вручную, одна из них содержит корневой каталог, необходимо установить этот каталог в качестве основного. |
[/codesyntax]
Чтобы активировать зеркалирование метаданных, используйте инструмент beegfs-ctl.
Для правильной синхронизации всей информации между различными компонентами BeeGFS клиенты не могут быть подключены во время этого процесса, а серверы метаданных должны быть перезапущены после этого.
Полный ряд шагов в уже работающей системе: остановите все клиенты, выполните beegfs-ctl --mirrormd , перезапустите все серверы метаданных, затем перезапустите все клиенты.
[root@beegfs1 ~]# systemctl stop beegfs-client.service
[root@beegfs2 ~]# systemctl stop beegfs-client.service
[root@beegfs3 ~]# systemctl stop beegfs-client.service
[root@beegfs1 ~]# beegfs-ctl --mirrormd
Operation succeeded.
NOTE:
To complete activating metadata mirroring, please remount any clients and
restart all metadata servers now.
[root@beegfs1 ~]# systemctl restart beegfs-meta
[root@beegfs2 ~]# systemctl restart beegfs-meta
[root@beegfs1 ~]# systemctl restart beegfs-client.service
[root@beegfs2 ~]# systemctl restart beegfs-client.service
[root@beegfs3 ~]# systemctl restart beegfs-client.service
Сконфигурированные группы зеркалирования могут быть перечислены с помощью beegfs-ctl (не забудьте указать тип узла):
1 2 |
$ beegfs-ctl --listmirrorgroups --nodetype=storage |
1 2 3 4 |
[root@beegfs1 ~]# <strong>beegfs-ctl --listmirrorgroups --nodetype=storage</strong> BuddyGroupID PrimaryTargetID SecondaryTargetID ============ =============== ================= 1 1 2 |
1 2 3 4 5 6 |
$ beegfs-ctl --listmirrorgroups --nodetype=meta [root@beegfs1 ~]# <strong>beegfs-ctl --listmirrorgroups --nodetype=meta</strong> BuddyGroupID PrimaryNodeID SecondaryNodeID ============ ============= =============== 1 1 2 |
Также можно перечислить группы зеркальных друзей наряду с другой целевой информацией:
1 2 3 4 5 6 7 |
$ beegfs-ctl --listtargets --mirrorgroups [root@beegfs1 ~]# <strong>beegfs-ctl --listtargets --mirrorgroups</strong> MirrorGroupID MGMemberType TargetID NodeID ============= ============ ======== ====== 1 primary 1 1 1 secondary 2 2 |
Посмотреть информацию о параметрах можно следующим образом:
1 |
$ beegfs-ctl --listtargets --help |
Обратите внимание, что нечетные номера хранилища невозможны на серверах метаданных, поскольку в BeeGFS нет целей метаданных. Необходим четный номер сервера метаданных, чтобы каждый сервер метаданных мог принадлежать группе
Чтобы проверить настройки зеркального отображения метаданных и содержимого файла определенного каталога или файла, используйте:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ beegfs-ctl --getentryinfo /mnt/beegfs/mydir/myfile [root@beegfs1 ~]# touch /beegfs-client/33 [root@beegfs1 ~]# <strong>beegfs-ctl --getentryinfo /beegfs-client/33</strong> EntryID: 0-5DC7BFD0-1 Metadata buddy group: 1 Current primary metadata node: beegfs1 [ID: 1] Stripe pattern details: + Type: <strong>RAID0</strong> + Chunksize: 512K + Number of storage targets: desired: 4; actual: 2 + Storage targets: + 2 @ beegfs2 [ID: 2] + 1 @ beegfs1 [ID: 1] как видим используется raid0 - а это к сожалению не то что надо, правится эта хрень через веб интерфейс, описание будет ниже |
Чтобы проверить целевые состояния хранилищ, используйте:
1 2 3 4 5 6 |
$ beegfs-ctl --listtargets --nodetype=storage --state [root@beegfs1 ~]# <strong>beegfs-ctl --listtargets --nodetype=storage --state</strong> TargetID Reachability Consistency NodeID ======== ============ =========== ====== 1 Online Good 1 2 Online Good 2 |
Следующая команда может быть использована для остановки автоматической ресинхронизации и запуска полной ресинхронизации.
1 |
$ beegfs-ctl --startresync --nodetype=storage --targetid=X --timestamp=0 --restart |
Показать информацию о ресинхронизации:
1 |
beegfs-ctl --resyncstats --help |
Для активации корректного зеркалирования необходимо зайти в панель:
FS Operation -> File Browser -> "…" settings
Get -> Default of targets: 1(наша группа) -> Stripe pattern: BuddyMirror -> Change
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Теперь проверяем: [root@beegfs1 ~]# cp -r /var/log/ /beegfs-client/ [root@beegfs1 ~]# <strong>beegfs-ctl --getentryinfo /beegfs-client/log/</strong> EntryID: 61-5DC7BFD0-1 Metadata <strong>buddy group: 1</strong> Current primary metadata node: beegfs1 [ID: 1] Stripe pattern details: + Type: <span style="font-size: 12pt;"><strong>RAID10</strong></span> + Chunksize: 512K + Number of storage targets: desired: 1 + Storage Pool: 1 (Default) ну вот теперь всё ок, raid10 |