Обычно мы используем СХД на базе CentOS или Fedora в качестве репозиториев для Veeam Backup&Replication, но иногда стоит задача обеспечить резервную СХД с блочным доступом. В этом случае удобнее всего использовать targetcli под Fedora. Targetcli - достаточно удобный инструмент для управления lio-target, ставшего стандартом в ядре Linux (начиная с 2.6.38). Данный пост, как всегда, предназначен для тех случаев, когда первоисточник читать некогда и нужна простая пошаговая инструкция.
Зачем нужен MPIO
MPIO (multipath input/output, многопутевой ввод-вывод) применительно к хранению данных используется для масштабирования производительности и увеличения надежности. Принцип работы очевиден из названия: используется несколько путей от хоста к блочному устройству. Целью является повышение надежности соединения за счет отсутствия единых точек отказа в виде HBA на стороне инициатора, контроллеров на стороне таргета и прочих компонентов: трансиверов, кабелей, коммутаторов и т.д. На нижеприведенной схеме мы видим классический пример отказоустойчивого подключения: 2-контроллерную СХД с подключением к двух хостам через два коммутатора. Для каждого хоста в данном случае существует 8 путей: линк через 1-й коммутатор -> 1-й линк к первому контроллеру, линк через 1-й коммутатор -> 2-й линк к первому контроллеру и т.д. При правильной настройке многопутевого доступа мы можем сохранить доступ к СХД (а значит, избежать возможной потери данных при аварийном отключении) до тех пор, пока есть хотя бы один путь. Задетый кабель, выход из строя одного из коммутаторов, запланированное (например, для обновления прошивки) отключение отдного из контроллеров, задетый кабель — все это не приведет к отключению и простоям. Работа с блочным устройством через MPIO обеспечивается средствами операционной системы, особенности работы зависят от конкретной ОС и используемого оборудования. Может использоваться стандартная реализация MPIO в ОС, при необходимости с использованием специальных модулей (DSM в случае Windows), учитывающих специфику работы СХД, например, существование оптимальных и неоптимальных путей для ALUA.Алгоритм использования путей доступа определяется политиками MPIO, штатно реализованными в ОС или в сторонних DSM для Windows/Linux, PSP для VMware ESXi. Некоторые из политик, например Round Robin (циклическое переключение путей), обеспечивают балансировку нагрузки между путями. С описанием политик MPIO для Windows Server 2008R2/2012 можно ознакомиться тут.
Общие рекомендации по использованию iSCSI
Основное и важное правило: не используейте аггрегацию портов с iSCSI. Для повышения отказоустойчивости и масштабирования полосы пропускания используйте только MPIO. Для некоторых случаев есть возможность использования такой специфичной для iSCSI технологии как MCS (Multiple Connections per Session).Gladius Storage L и Gladius Storage RTS
Различие между этими платформами заключается в том, что в Gladius Storage RTS используется RTS OS, коммерческий дистрибутив Linux от компании RisingTide Systems, разработчика LIO Target для ядра Linux. В RTS OS есть поддержка VAAI, active/passive кластеров и прочего полезного функционала. Gladius Storage L — это Fedora Linux, со свободной реализацией утилиты управления для LIO Target — targetcli, как уже упоминалось выше, для использования в качестве основной СХД не рекомендуется, только в качестве резервной или использования совместно с Veeam Backup&Replication, в роли backup repository.LVM
Для привязывания к LUN'ам можно использовать несколько видов т.н. backstores:- block (в RTS OS - iblock). Блочное устройство. Обеспечивает максимальную производительность.
- fileio. Обычный файл.
- pscsi. Режим проброса SCSI команд напрямую к блочному устройству. Предназначен исключительно для тестовых целей.
- ramdisk. Как и следует из названия — это рамдиск, блочное устройство, эмулироемое в ОЗУ. Можно использовать для выявления узких мест в используемых HBA или коммутаторах.
Инициализируем физический том:
[root@localhost ~]# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created
Создаем группу томов vg00
:
[root@localhost ~]# vgcreate vg00 /dev/sdb Volume group "vg00" successfully created
Создаем логический том lv00
размером в 20ГиБ: lvcreate -L 20GiB vg00 -n lv00
/dev/vg00/lv00
.
targetcli
Предполагается, что у вас уже настроены два сетевых интерфейса 10.12.12.3 и 10.12.12.4.
Запускаемtargetcli
. Это оболочка, позволяющая управлять бэксторами, таргетами, правами и другими настройками для таргетов и LUNов. Вместо громоздкого конфигурационного файла вы работаете с наглядной древовидной структуров объектов, выводится она по команде ls
:
/> ls o- / .......................................................................................... [...] o- backstores ............................................................................... [...] | o- block ................................................................... [Storage Objects: 0] | o- fileio .................................................................. [Storage Objects: 0] | o- pscsi ................................................................... [Storage Objects: 0] | o- ramdisk ................................................................. [Storage Objects: 0] o- iscsi ............................................................................. [Targets: 0] o- loopback .......................................................................... [Targets: 0] o- vhost ............................................................................. [Targets: 0]Все изменения сохраняются при выходе из targetcli автоматически (в RTS OS по умолчанию — только вручную, по команде
saveconfig
). Если сохраненная конфигурация не загружается при запуске сервера, проверьте, запущен ли сервис target
, при необходимости активируйте его:
systemctl enable targetcli.service systemctl start targetcli.service
Создаем backstore
Добавляем созданный логический том в качестве бэкстора:/> /backstores/block create disk00 /dev/vg00/lv00 Created block storage object disk00 using /dev/vg00/lv00.
Создаем iSCSI порталы и LUNы
/> /iscsi create Created target iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.147e78151036. Created TPG 1.Появятся новый iSCSI IQN (назначается автоматически, при необходимости можно задать IQN вручную) и группа порталов.
Создаем два портала, соответствующих двум сетевым интерфейсам:
/> /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.147e78151036/tpg1/portals create 10.12.12.3 /> /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.147e78151036/tpg1/portals create 10.12.12.4
Создаем LUN, привязанный к ранее созданному бэкстору:
/> /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.147e78151036/tpg1/luns create /backstores/block/disk00Далее правила хорошего тона предписывают задать права доступа для LUN'а, настроить CHAP, ведь повреждение данных при случайном подключении и использовании не того LUN'а — обычное дело. Для целей тестирования это можно временно пропустить:
/> /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.147e78151036/tpg1 set attribute authentication=0 demo_mode_write_protect=0 generate_node_acls=1 cache_dynamic_acls=1Проверяем дерево объектов:
/> ls o- / .......................................................................................................... [...] o- backstores ............................................................................................... [...] | o- block ................................................................................... [Storage Objects: 1] | | o- disk00 ..................................................... [/dev/vg00/lv00 (20.0GiB) write-thru activated] | o- fileio .................................................................................. [Storage Objects: 0] | o- pscsi ................................................................................... [Storage Objects: 0] | o- ramdisk ................................................................................. [Storage Objects: 0] o- iscsi ............................................................................................. [Targets: 1] | o- iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.147e78151036 ........................................ [TPGs: 1] | o- tpg1 ................................................................................... [gen-acls, no-auth] | o- acls ........................................................................................... [ACLs: 0] | o- luns ........................................................................................... [LUNs: 1] | | o- lun0 ................................................................... [block/disk00 (/dev/vg00/lv00)] | o- portals ..................................................................................... [Portals: 2] | o- 10.12.12.3:3260 ................................................................................... [OK] | o- 10.12.12.4:3260 ................................................................................... [OK] o- loopback .......................................................................................... [Targets: 0] o- vhost ............................................................................................. [Targets: 0]Мы видим, что у нас есть один LUN (lun0), привязанный к блочному бэкстору
/dev/vg00/lv00
. Этот LUN мы отдаем по iSCSI, у нас есть два портала в группе с адресами 10.12.12.3 и 10.12.12.4.
Устанавливаем MPIO
Предполагается, что для iSCSI настроены два сетевых интерфейса 10.12.12.1 и 10.12.12.2.
Добавляем поддержку MPIO в Windows Server и перезагружаемся:Подключаемся к таргету
Далее нужно подключиться к таргету по одному из путей прежде чем активировать MPIO для iSCSI. Открываем свойства iSCSI-инициатора и на вкладке Discovery добавляем оба адреса порталов: Переходим на вкладку Targets, в списке должен отображаться таргет с нашей СХД. Подключаемся к нему, отметив пункт Enable multi-path: Статус таргета должен смениться в случае успешного подключения на Connected, LUN должен появится в Disk Manager'е:Включаем поддержку MPIO для iSCSI
Открываем свойства MPIO. На вкладке Discover Multi-paths жмем Add support for iSCSI Drives и Add. После перезагрузки штатный инициатор iSCSI должен появится в списке устройств, работающих через MPIO:Добавляем пути
Осталось добавить остальные пути, всего их будет 4:- 10.12.12.1->10.12.12.3
- 10.12.12.1->10.12.12.4
- 10.12.12.2->10.12.12.3
- 10.12.12.2->10.12.12.4
Комментариев нет:
Отправить комментарий