GFS2 на iSCSI с Multipath
GFS2 - кластерная файловая система обеспечивающая одновременный доступ к общим хранилищам в кластере. GFS2 позволяет всем узлам иметь прямой одновременный доступ к одному общему хранилищу.
Введение
В данной статье рассмотрим развертывание GFS2 на устройстве, подключенном по интерфейсу iSCSI c использованием двух сетевых подключений.
Тестовый стенд:
1. Server-iSCSI (ip: 10.10.10.202; ip: 192.168.155.100) - сервер предоставляющий блочное устройство через iSCSI
2. iSCSI1 (ip: 10.10.10.164; ip: 192.168.155.111) - Первая нода кластера ALT PVE
3. iSCSI2 (ip: 10.10.10.211; ip: 192.168.155.112) - Вторая нода кластера ALT PVE
На двух нодах iSCSI1 и iSCSI2 штатно развернут кластер ALT PVE.
Настройка iSCSI target
iSCSI-target - сервер предоставляющий блочное устройство.
Устанавливаем пакет scsitarget-utils, запускаем и добавляем в автозагрузку сервис tgt:
# apt-get install scsitarget-utils # systemctl enable tgt # systemctl start tgt
В файле /etc/tgt/conf.d/sample.conf находятся примеры target-ов.
Настроим отдачу по iSCSI блочного устройства /dev/sdb для этого добавим в файл /etc/tgt/targets.conf следующие строки:
<target iqn.2016-12.com.example:server.target1>
direct-store /dev/sdb
</target>
iqn.2016-12.com.example:server.target1 - это IQN (iSCSI qualified name) имя длиной до 255 символов в следующем формате:
iqn.<год-месяц>.<имя домена в обратном порядке>:<имя сервера>.<имя цели>
Перезагрузим сервис:
# systemctl reload tgt
Проверим конфигурацию:
# tgtadm --lld iscsi --op show --mode target Target 1: iqn.2016-12.com.example:server.target1 System information: Driver: iscsi State: ready I_T nexus information: I_T nexus: 100 Initiator: iqn.2017-01.ua.alt:01:9daa1def62d3 alias: iSCSI3 Connection: 0 IP Address: 10.10.10.201 LUN information: LUN: 0 Type: controller SCSI ID: IET 00010000 SCSI SN: beaf10 Size: 0 MB, Block size: 1 Online: Yes Removable media: No Prevent removal: No Readonly: No SWP: No Thin-provisioning: No Backing store type: null Backing store path: None Backing store flags: LUN: 1 Type: disk SCSI ID: IET 00010001 SCSI SN: beaf11 Size: 10737 MB, Block size: 512 Online: Yes Removable media: No Prevent removal: No Readonly: No SWP: No Thin-provisioning: No Backing store type: rdwr Backing store path: /dev/sdb Backing store flags: Account information: ACL information: ALL
iSCSI-target по умолчанию работает на порту 3260/tcp. На этом базовая настройка iSCSI-target окончена.
Настройка iSCSI initiator
iSCSI-initiator - клиент подключающийся к iSCSI-target. Установим пакет open-iscsi запустим и добавим в автозагрузку сервис iscsid:
# apt-get install open-iscsi # systemctl enable iscsid # systemctl start iscsid
Присоединим iSCSI хранилище к нашему кластеру с помощью web-интерфейса ALT PVE. Зайдем в меню Datacenter -> Storage -> Add -> iSCSI:
Аналогично добавим через второй IP-адрес. В итоге на обоих нодах будет доступно два устройства, это одно и тоже устройство, подключенное через разные маршруты.
Так же можно подключить target-ы вручную, для этого выполним команды:
Посмотреть доступные для подключения target-ы можно с помощью команды:
# iscsiadm -m discovery -t sendtargets -p 10.10.10.202
Подключить target-ы:
# iscsiadm -m node --login
Можно настроить автоматическое подключение iSCSI-target-ов с помощью штатных средств open-iSCSI. Для этого необходимо поменять следующие параметры:
В файле /etc/iscsi/iscsid.conf:
node.startup = automatic
В файле /etc/iscsi/send_targets/<TargetServer>/st_config
discovery.sendtargets.use_discoveryd = Yes
Настройка Multipath
Сам по себе open-iscsi не умеет подключаться к нескольким IP одного target-а. При одновременном подключении мы получили два блочных устройства. Для решения этой проблемы существует multipath, который находит диски с одинаковым идентификаторами и обрабатывает их как один диск. Установим необходимый пакет:
# apt-get install multipath-tools
Редактируем файл /etc/multipath.conf:
defaults { user_friendly_names yes }
Добавляем сервис в автозагрузку и запускаем его:
# systemctl enable multipathd # systemctl start multipathd
Multipath обработает наши iSCSI устройства, сделать из них одно, и положить его в каталог /dev/mapper
Посмотреть обработанные multipath устройства можно командой:
# multipath -ll mpatha (360000000000000000e00000000010001) dm-0 QEMU,QEMU HARDDISK size=10G features='0' hwhandler='0' wp=rw |-+- policy='service-time 0' prio=1 status=active | `- 3:0:0:1 sdb 8:16 active ready running `-+- policy='service-time 0' prio=1 status=enabled `- 4:0:0:1 sdc 8:32 active ready running
Отключить устройство можно командой:
# multipath -f mpatha
Настройка GFS2
Установим необходимые пакеты:
# apt-get install gfs2-utils clvm
На всех нодах добавим в автозагрузку и запустим сервис lvm2-cluster-activation:
# systemctl enable lvm2-cluster-activation # systemctl start lvm2-cluster-activation
Отформатируем наше multipath устройство в GFS2:
# mkfs.gfs2 -p lock_dlm -t gfs2pve:mydata1 -j 2 /dev/mapper/mpatha
В данном примере файловая система использует протокол lock_dlm. Кластер имеет имя gfs2pve, имя файловой системы — mydata1. Файловая система создана на /dev/mapper/mpatha и содержит 2 журнала.
Примонтируем файловую систему gfs2:
# mount /dev/mapper/mpatha /mnt/gfs2
Добавим в /etc/fstab строчку для монтирования нашей файловой системы при загрузке системы:
/dev/mapper/mpatha /mnt/gfs2 gfs2 defaults 0 0