Перейти к содержанию

Блочные хранилища

Описание

Раздел Хранилища — Сетевые хранилища основного меню содержит два подраздела - Файловые и Блочные.

К блочным хранилищам относят хранилища, предоставляемые по протоколам iSCSI и FC.

Сетевые хранилища типов iSCSI и FC основаны на принципе предоставления блочных устройств, которые после подключения воспринимаются системой как локальные диски. Основное отличие данных хранилищ — это метод подключения к ним серверов.

Технология iSCSI работает поверх протокола TCP/IP. На стороне СХД настраиваются точки подключения, именуемые «цели» (iSCSI target), в которых презентуются блочные устройства (LUN). Подключение к ним со стороны сервера осуществляется «инициатором» (iSCSI initiator). В качестве «инициатора» может выступать клиентское ПО или физический сетевой адаптер, настроенный в режим iSCSI-инициатора. Возможность настройки адаптера как «инициатора» следует уточнять у производителя. Блочные устройства становятся доступными на сервере после запуска «инициатора» и, в случае работы программного клиента, доступны только после загрузки ОС гипервизора.

Блочный доступ FC основывается на собственной технологии передачи данных, требует установки специализированных адаптеров (карт расширения), специализированных коммутаторов и систем хранения с поддержкой данной технологии. За счёт собственных адаптеров использование «инициатора» не требуется и блочные устройства презентуются серверу на аппаратном уровне и воспринимаются как локальные диски. При использовании FC необходимо учитывать данный момент, так как добавление LUN может изменить порядок подключенных физических носителей в ОС гипервизора.

Правила предоставления блочных устройств от СХД к серверам для FC настраиваются в коммутаторе и в ПО управления самой СХД, так как основными идентификаторами «клиентов» и портов на СХД являются WWN - аналог MAC-адреса для обычного сетевого адаптера. Другие идентификаторы для данной технологии не предусмотрены.

На сервере или в ВМ работа с подключенным блочным устройством LUN происходит так же, как и с НЖМД — его можно отдать под управление LVM, отформатировать в файловую систему. При использовании коллективного доступа к LUN необходимо форматировать его в кластерную файловую систему, которая будет следить за конкурентным доступом к ресурсам устройства.

Существенным плюсом использования доступа к блочным устройствам является то, что многие системы хранения имеют механизмы повышения отказоустойчивости. Некоторые СХД также предоставляют возможность объединения их в кластер и настройки репликации одного блочного устройства LUN таким образом, что при выходе из строя одного сервера, подключенная система автоматически переключится на резервную копию.

Подключение

При подключении блочного сетевого хранилища необходимо внести все параметры подключения в соответствии с выбранным типом хранилища.

При подключении к хранилищу iSCSI необходимо знать IP-адреса или доменные имена хранилища (sources), порты подключения, имена целей (iSCSI target), логин и пароль подключения (если требуется). Имена целей должны соответствовать формату, установленному стандартом, и иметь ви:

iqn.2018-11.com.raidix:target0

eui.0123456789abcdef

naa.0123456789abcdef

naa.0123456789abcdef0123456789abcdef

. В рамках одной цели может предоставляться несколько блочных устройств.

Для подключения блочного хранилища iSCSI необходимо перейти в раздел Хранилища - Сетевые хранилища - Блочные основного меню и нажать кнопку Добавить блочное хранилище. В открывшемся окне необходимо заполнить следующие поля:

  • название сетевого хранилища;

  • определить возможность подключения узлов сети хранения данных с использованием нескольких маршрутов (состояние Multipath I/O);

  • тип подключения (выбор из раскрывающегося списка);

  • имя сервера для монтирования сразу после создания (выбор из раскрывающегося списка);

  • IP-адрес или доменное имя сервера хранения и порт;

  • проверить доступность сервера и получить список доступных таргетов по кнопке Получить доступные таргеты (target);

  • имя iSCSI target;

  • логин и пароль для подключения (если требуется);

  • производитель (выбор из раскрывающегося списка);

  • описание хранилища.

Для подтверждения операции необходимо нажать кнопку ОК.

Для подключения серверов к созданному хранилищу необходимо:

  • нажать на название хранилища в списке;

  • в открывшемся окне во вкладке Информация рядом с надписью «Серверы» нажать кнопку добавления сервера. При этом открывается окно с возможностью выбора серверов, к которым будет подключено данное хранилище. После заполнения окна необходимо подтвердить операцию, нажав кнопку ОК.

После добавления серверов рядом с надписью «Серверы» появится количество серверов и кнопка раскрытия списка серверов.

При использовании хранилища, подключаемого по FC, СХД предоставляет блочные устройства LUN на аппаратном уровне в соответствии с правилами, настроенными на FC коммутаторе и на стороне СХД. Для настройки правил подключения (презентации) LUN с СХД к серверам необходимо обратиться к документации производителя СХД и FC коммутатора. При использовании схемы прямого подключения СХД к серверам SpaceVM (схема DAS - Direct Attached Storage) настройка производится на самом СХД.

Для регистрации в системе управления подключенных LUN необходимо знать адрес WWN порта СХД, с которого происходит обслуживание подключений от серверов SpaceVM. Это необходимо для того, чтобы система управления SpaceVM собрала в группу только те LUN, которые подключены от этого WWN. Это сделано для возможности группировки LUN по WWN СХД, если по FC доступно более одного СХД. При регистрации система опрашивает все блочные устройства, подключенные к серверу, находит имеющие пометку о подключенных по шине FС и презентованные от указанного WWN.

После подключения блочных хранилищ к серверам SpaceVM видимые активные LUN можно использовать как LVM-shared хранилища, как часть ZFS-пула, форматировать их в кластерную файловую систему (OCFS2/GFS2) и подключать их напрямую к ВМ. Не рекомендуется подключать напрямую в ВМ LUN, презентованный по FC. Это связано с тем, что ВМ создаст на этом LUN загрузочную область, которая будет доступна аппаратному серверу, так как FC LUN подключается на уровне основной системы ввода-вывода (BIOS/UEFI).

При установке SpaceVM на сервер с уже подключенным по FC СХД следует обратить внимание на то, что при установке FC LUN могут отображаться в конце списка доступных к установке накопителей, но при загрузке гипервизора могут переместиться в начало списка (занять место диска /dev/sda). Для предотвращения такого поведения необходимо корректно настроить FC карту сервера (FC HBA) и параметры презентуемых LUN на стороне СХД.

Окно состояния блочного хранилища

В окне состояния блочного хранилища содержится информация, разделенная на группы:

  • информация;
  • LUN;
  • события;
  • задачи;
  • теги.

В окне ХранилищаСетевые хранилищаБлочные – <имя блочного хранилища> – Информация содержатся следующие сведения:

  • название (редактируемый параметр);

  • описание (редактируемый параметр);

  • тип подключения;

  • локация;

  • дата и время создания;

  • дата и время обновления;

  • target;

  • состояние Multipath I/O (редактируемый параметр);

  • производитель (редактируемый параметр);

  • опции iSCSI;

  • sources (редактируемый параметр);

  • серверы (раскрывающийся список, с возможностью добавления (передобавления) и удаления. При добавлении сервера в открывшемся окне необходимо для проверки соединения с сервером нажать кнопку Проверить, после чего выбрать сервер из доступных и нажать кнопку ОК.

В окне ХранилищаСетевые хранилищаБлочные – <имя блочного хранилища> – LUN содержится информация о LUNs на хранилище (device, подключение, размер и статус). Имеется возможность обновления, сканирования хранилища, а также поиск дискового устройства в сетях хранения по адресу.

При нажатии на существующий LUN в открывшемся окне доступны следующие операции:

  • обновление информации по кнопке image

  • форматирование в файловую систему. При нажатии на кнопку Форматировать в ФС в открывшемся окне необходимо выбрать из раскрывающегося списка тип файловой системы, после чего подтвердить операцию, нажав кнопку ОК. Подробности смотрите в HOWTO создать общий(е) для кластера пул(ы) данных GFS2 на LUN(s), если уже есть кластерный транспорт gfs2;

  • монтирование. При нажатии на кнопку Монтировать необходимо подтвердить операцию, нажав кнопку ОК;

  • размонтирование. При нажатии на кнопку Размонтировать необходимо подтвердить операцию, нажав кнопку ОК.

Также в данном окне содержится следующая информация:

  • ID;
  • путь;
  • target_dev;
  • тип шины;
  • размер;
  • тип файловой системы;
  • тип кэширования;
  • статус;
  • хранилище;
  • серийный номер;
  • серверы (раскрывающийся список);
  • сообщения о работе LUN с возможностью их сортировки по признакам – «По всем типам», «Ошибки», «Предупреждения», «Информационные».

Пример информации блочного хранилища: image

События

В окне ХранилищаСетевые хранилищаБлочные – <имя блочного хранилища> – События содержится события, зарегистрированные в системе, возникающие при работе с блочными сетевыми хранилищами с возможностью их сортировки по признакам - «По всем типам», «Ошибки», «Предупреждения», «Информационные».

Теги

В окне ХранилищаСетевые хранилищаБлочные – <имя блочного хранилища> – Теги содержится список присвоенных хранилищу меток. Также имеется возможность обновления, создания и применения тега.

Настройки multipath

Для просмотра настроек multipath в CLI есть команда storage multipath-conf.

Для сканирования доступных путей в CLI есть команда storage scsi-host-discovery.

Для изменения политики группировки путей LUN в CLI есть команда storage modify-multipath-path-grouping-policy [policy].

По умолчанию path_grouping_policy = failover.

Варианты path_grouping_policy:

  • failover - One path per priority group.
  • multibus - All paths in one priority group.
  • group_by_serial - One priority group per serial number.
  • group_by_prio - One priority group per priority value. Priorities are determined by callout programs specified as a global, per-controller or per-multipath option in the configuration file.
  • group_by_node_name - One priority group per target node name. Target node names are fetched in /sys/class/fc_transport/target*/node_name.

Для изменения политики выбора путей LUN в CLI есть команда storage modify-multipath-path-selector [path_selector].

По умолчанию path_selector = service-time 0.

Варианты path_selector:

  • service-time 0 - Send the next bunch of I/O down the path with the shortest estimated service time, which is determined by dividing the total size of the outstanding I/O to each path by its relative throughput.
  • round-robin 0 - Loop through every path in the path group, sending the same amount of I/O to each.
  • queue-length 0 - Choose the path for the next bunch of I/O based on the amount of outstanding I/O to the path.

Подключение FC хранилища

  1. При физическом подключении блочного хранилища по FC к серверу контроллер выдаст подсказку у сервера о том, что есть неизвестные блочные хранилища.

  2. Если есть подсказка, то стоит перейти во вкладку сервера ХранилищаБлочные хранилища и нажать кнопку Сканировать. Если на сервера найдутся незарегистрированные в базе контроллера хранилища, то они создадутся в базе или обновится связь с теми, что есть в базе.

  3. Если хранилище подключено к разным узлам по разным wwn (путям), то стоит включить в настройках Multipath I/O и выставить Режим использования Multipath I/O в failover. Тогда при подключении узлов будет проверяться наличие хотя бы одного активного пути из всех.

  4. Командой storage hba-npiv в CLI можно увидеть имеющиеся FC карточки, включая состояние их портов (port_state и speed);

  5. Увидеть FC LUNs можно в CLI командой storage fc-luns;

  6. Командой storage multipath в CLI можно увидеть LUN и пути, по которым они доступны;

  7. Просмотр wwns подключенных хранилищ возможен во вкладке сервера ХранилищаБлочные хранилища по кнопке WWNS или в CLI командой storage fc-wwns;

  8. Просмотр локальных wwns сервера возможен во вкладке сервера ХранилищаБлочные хранилища по кнопке Локальные WWNS или в CLI командой storage local-wwns;

  9. Пересканировать scsi шину узла можно в CLI командой storage rescan-scsi-bus.

  10. В некоторых случаях (например, этого требуют FCoE адаптеры HPE630FLB) для включения FC функционала на них необходимо выполнить команду CLI net fcoe enable <adapter>, например, net fcoe enable eno3.

Действия после изменения размера LUN на хранилище или его удаления.

В том случае, если LUN был сначала виден на серверах Space, а потом его удалили в хранилище или изменили его размер, то автоматически обновление информации об этом действии не произойдет. Стоит попробовать:

  1. Пересканировать scsi шину узла можно в CLI командой storage rescan-scsi-bus. Так как размер LUN проверяется на всех узлах, где он виден, то стоит пересканировать шину на всех них. Для удобства можно это делать из CLI контроллера через node nodes-cli 'storage rescan-scsi-bus'.

  2. Рестартовать сервис multipathd в CLI командой services restart multipath. Так как размер LUN проверяется на всех узлах, где он виден, то стоит рестартовать сервис на всех них. Для удобства можно это делать из CLI контроллера через node nodes-cli 'services restart multipath'.

Проверить изменение размера LUN можно, посмотрев в CLI вывод команды storage luns (storage fc-luns, storage iscsi-luns). Необходимо учитывать, что размер в CLI выводится в Гибибайтах (Тебибайтах и т.д.). В Web-интерфейсе контроллера размер LUN выводится в Гигабайтах (для удобства, так как в других местах выводится в таких же единицах) и изменяется автоматически после того, как узел увидел новый размер LUN.

Пример из CLI вывода команды storage iscsi-luns: image

Именование LUN (iqn)

Именование LUN должно происходить согласно стандартам:

RFC3721 (IQN part)

The following is an example of an iSCSI name string from a storage
service provider:

            Organization            String
               Naming            Defined by Org.
Type  Date    Authority          Naming Authority
+-+ +-----+ +-------------+ +----------------------+
| | |     | |             | |                      |
iqn.1995-11.com.example.ssp:customers.4567.disks.107

RFC3721 (EUI part)

The details of
   constructing EUI-64 identifiers are specified by the IEEE
   Registration Authority (see https://www.rfc-editor.org/rfc/rfc3721.html#ref-EUI64).

      Example iSCSI name:

      Type  EUI-64 identifier (ASCII-encoded hexadecimal)
      +--++--------------+
      |  ||              |
      eui.02004567A425678D
RFC3980
An example of an iSCSI name with a 64-bit NAA value follows:

         Type  NAA identifier (ASCII-encoded hexadecimal)
         +--++--------------+
         |  ||              |

         naa.52004567BA64678D

      An example of an iSCSI name with a 128-bit NAA value follows:

         Type  NAA identifier (ASCII-encoded hexadecimal)
         +--++------------------------------+
         |  ||                              |

         naa.62004567BA64678D0123456789ABCDEF

В случае несоблюдении стандарта можно попробовать отредактировать файл /etc/multipath.conf

В /etc/multipath.conf надо добавить секцию multipaths с подсекцией multipath, где вписать сопоставления wwid и alias, например:

multipaths {
        multipath {
            wwid                    8iqn.1998-01.com.vmware:529f9d5bdb8ebd45-cf97c35adc6ecc5f,L,0x0000000000000000
            alias                   360000000000000000e00000000120001
        }
}

После редактирования необходимо рестартовать сервис multipath командой в CLI services restart multipath.

Пример из CLI вывода команды storage iscsi-luns с измененным именем LUN: image

Проверка подключения

# create iscsi target record
ISCSIADM = 'sudo /sbin/iscsiadm -m'
cleandb = f'{ISCSIADM} node --targetname {target} --portal {source} -o delete'
newcmd = f'{ISCSIADM} node --targetname {target} --portal {source} -o new'

# enable CHAP if needed
if username and password:
    cmd = f"{ISCSIADM} node --targetname {target} --portal {source} " \
          f"-o update -n node.session.auth.authmethod -v CHAP " \
          f"-o update -n node.session.auth.username -v {username} " \
          f"-o update -n node.session.auth.password -v {password}"

# connect
cmd = f'{ISCSIADM} node --targetname {target} --portal {source} -l'
cmd = f'{ISCSIADM} node --targetname {target} --portal {source} -o update -n node.startup -v automatic'

# check
cmd = 'multipath -ll'