- Подключение Multipath LUN СХД к VMware ESXi и Debian GNU/Linux
- ISCSI Multipath
- Contents
- Introduction
- Update your iSCSI configuration
- Activate Multipath
- Install multipath tools
- Configuration
- Prioritizing a Certain TCP/IP Path
- Query device status
- Performance test with fio
- Vendor specific settings
- Настройка ISCSI initiator в linux
- ISCSI
- NAS vs SAN
- scsi over tcp
- Терминология
- target
- Initiator
- Блочное устройство
- Авторизация
- Файл конфигурации
- Краткий справочник
- mulitpath
Подключение Multipath LUN СХД к VMware ESXi и Debian GNU/Linux
Друзья и коллеги!
У одного из наших клиентов, который приобретал сервера и лезвия HP, а сейчас прикупил HP MSA 2040, недавно возник вопрос:
Почему сервер видит презентованный ему лун, как 4 отдельных диска одинакового объема (ОС Linux)?
Ответ прост:
Подключение к серверу в данном случае происходит по 4 независимым каналам и каждый из этих дисков представляет собой отдельный канал.
Чтобы в итоге получить один диск, для работы нужно использовать службу multipath IO.
Multipath LUN СХД к VMware ESXi
Multipath LUN СХД к Debian GNU/Linux
Немного сложнее:
На начальном этапе установки Debian GNU/Linux, мы можем столкнуться с проблемой невозможности обнаружить системой firmware ql2400_fw.bin. Решается это просто:
На рабочей Linux системе скачиваем пакет firmware-qlogic, распаковываем, записываем в образ и монтируем через ILO (действия производятся на сервере HP Proliant). Выглядит это примерно так:
Подключаем qlfw.raw через меню Virtual Device->Image File Removable Media. Если инсталятор по-прежнему не может найти firmware, это можно сделать вручную, смонтировав образ в каталог /lib/firmware и перезагрузив модуль qla2xxx. Переключаемся на текстовую консоль ( нижеследующие действия производятся в ILO. Меню Keyboard->CTRL-ALT-Fn->CTRL-ALT-F2):
После чего, возвращаемся к инсталятору (меню Keyboard->CTRL-ALT-Fn->CTRL-ALT-F5), и доустанавливаем систему в штатном режиме.
На рабочей системе, нам потребуется установить пакет multipath-tools со всеми зависимостями:
Определяем автозапуск сервиса:
Посмотрим, как сгруппировались устройства:
Создадим файловую систему на нужном нам LUN’e:
Смонтируем, и посмотрим, что получилось:
LUN смонтирован и готов к использованию. Осталось дописать строчку в fstab:
В данном случае мы рассмотрели пример подключения к VMware ESXi и Debian GNU/Linux.
Систему выделения LUNов к серверам мы также используем у себя на ort/arenda/»>хостинге
В данном случае мы используем:
1. Блейд шасси HP C7000 в максимальной комплектации, с двумя административными модулями.
2. FC коммутаторы в шасси С7000 для подключения внешних СХД — HP Brocade 8Gb 8/24c SAN Switch. Внешние FC коммутаторы — HP StorageWorks 8/40 Base 24, (24) порта Full Fabric SAN Switch.
3. СХД HPE 3PAR StorServ 7400 (4-node), HPE 3PAR StorServ 7450c (4-node), HPE 3PAR StorServ 7400c (2-node) и СХД HPE EVA P6550.
Где мы выделяем луны:
ALLFlash — only SSD
AO — смешанный SSD+SAS
NL — only SAS
В следующей статье мы рассмотрим Подключение Multipath LUN СХД к Windows Server 2008 и Windows Server 2012.
Источник
ISCSI Multipath
Contents
Introduction
Main purpose of multipath connectivity is to provide redundant access to the storage devices, i.e to have access to the storage device when one or more of the components in a path fail. Another advantage of multipathing is the increased throughput by way of load balancing. Common example for the use of multipathing is a iSCSI SAN connected storage device. You have redundancy and maximum performance.
If you use iSCSI, multipath is recommended — this works without configurations on the switches. (If you use NFS or CIFS, use bonding, e.g. 802.ad)
The connection from the Proxmox VE host through the iSCSI SAN is referred as a path. When multiple paths exists to a storage device (LUN) on a storage subsystem, it is referred as multipath connectivity. Therefore you need to make sure that you got at least two NICs dedicated for iSCSI, using separate networks (and switches to be protected against switch failures).
This is a generic how-to. Please consult the storage vendor documentation for vendor specific settings.
Update your iSCSI configuration
It is important to start all required iSCSI connections at boot time. You can do that by setting ‘node.startup’ to ‘automatic’.
The default ‘node.session.timeo.replacement_timeout’ is 120 seconds. We recommend using a much smaller value of 15 seconds instead.
You can set those values in ‘/etc/iscsi/iscsid.conf’ (defaults). If you are already connected to the iSCSI target, you need to modify the target specific defaults in ‘/etc/iscsi/nodes/ /
A modified ‘iscsid.conf’ file contains the following lines:
Please configure your iSCSI storage on the GUI if you have not done that already («Datacenter/Storage: Add iSCSI target»).
Activate Multipath
Install multipath tools
The default installation does not include this package, so you first need to install the multipath-tools package:
Configuration
Then you need to create the multipath configuration file ‘/etc/multipath.conf’. You can find details about all setting on the manual page:
We recommend to use ‘wwid’ to identify disks (World Wide Identification). You can use the ‘scsi_id’ command to get the ‘wwid’ for a specific device. For example, the following command returns the ‘wwid’ for device ‘/dev/sda’
In the following a typical example.
We normally blacklist all devices, and only allow specific devices using ‘blacklist_exceptions’:
We also use the ‘alias’ directive to name the device, but this is optional:
And finally you need reasonable defaults. We normally use the following multibus configuration (PVE 4.x and higher):
The wwids have also to be added into /etc/multipath/wwids. For this run e.g. the following commands:
Also check your SAN vendor documentation.
To activate those settings you need to restart they multipath daemon with:
Prioritizing a Certain TCP/IP Path
If e.g. path to destination IP address 192.168.99.99 should be prioritized (where other IP routes will be used as failover) default section has to be as follows:
Query device status
You can view the status with:
To get more information about used devices use:
Performance test with fio
In order to check the performance, you can use fio.
Example read test:
Vendor specific settings
Please add vendor specific recommendations here.
You need to load a Dell specific module scsi_dh_rdac permanently, in order to do this, just edit:
Источник
Настройка ISCSI initiator в linux
Abstract: как работает open-iscsi (ISCSI initiator в linux), как его настраивать и чуть-чуть про сам протокол ISCSI.
Лирика: В интернете есть множество статей довольно хорошо объясняющих, как настроить ISCSI target, однако, почему-то, практически нет статей про работу с инициатором. Не смотря на то, что target технически сложнее, административной возни с initiator больше — тут больше запутанных концепций и не очень очевидные принципы работы.
ISCSI
Перед тем, как рассказать про ISCSI — несколько слов о разных типах удалённого доступа к информации в современных сетях.
NAS vs SAN
scsi over tcp
Одним из протоколов доступа к блочным устройствам является iscsi. Буква ‘i’ в названии относится не к продукции эппл, а к Internet Explorer. По своей сути это ‘scsi over tcp’. Сам протокол SCSI (без буквы ‘i’) — это весьма сложная конструкция, поскольку он может работать через разные физические среды (например, UWSCSI — параллельная шина, SAS — последовательная — но протокол у них один и тот же). Этот протокол позволяет делать куда больше, чем просто «подтыкать диски к компьютеру» (как это придумано в SATA), например, он поддерживает имена устройств, наличие нескольких линков между блочным устройством и потребителем, поддержку коммутации (ага, SAS-коммутатор, такие даже есть в природе), подключение нескольких потребителей к одному блочному устройству и т.д. Другими словами, этот протокол просто просился в качестве основы для сетевого блочного устройства.
Терминология
В мире SCSI приняты следующие термины:
target — тот, кто предоставляет блочное устройство. Ближайший аналог из обычного компьютерного мира — сервер.
initiator — клиент, тот, кто пользуется блочным устройством. Аналог клиента.
WWID — уникальный идентификатор устройства, его имя. Аналог DNS-имени.
LUN — номер «кусочка» диска, к которому идёт обращение. Ближайший аналог — раздел на жёстком диске.
ISCSI приносит следующие изменения: WWID исчезает, на его место приходит понятие IQN (iSCSI Qualified Name) — то есть чистой воды имя, сходное до степени смешения с DNS (с небольшими отличиями). Вот пример IQN: iqn.2011-09.test:name.
IETD и open-iscsi (сервер и клиент под линукс) приносят ещё одну очень важную концепцию, о которой чаще всего не пишут в руководствах по iscsi — portal. Portal — это, если грубо говорить, несколько target’ов, которые анонсируются одним сервером. Аналогии с www нет, но если бы веб-сервер можно было попросить перечислить все свои virtualhosts, то это было бы оно. portal указывает список target’ов и доступные IP, по которым можно обращаться (да-да, iscsi поддерживает несколько маршрутов от initiator к target).
target
Статья не про target, так что даю очень краткое описание того, что делает target. Он берёт блочное устройство, пришлёпывает к нему имя и LUN и публикет его у себя на портале, после чего позволяет всем желающим (авторизация по вкусу) обращаться к нему.
Вот пример простенького файла конфигурации, думаю, из него будет понятно что делает target (файл конфигурации на примере IET):
(сложный от простого отличается только опциями экспорта). Таким образом, если у нас есть target, то мы хотим его подключить. И тут начинается сложное, потому что у initiator’а своя логика, он совсем не похож на тривиальное mount для nfs.
Initiator
В качестве инициатора используется open-iscsi. Итак, самое важное — у него есть режимы работы и состояние. Если мы дадим команду не в том режиме или не учтём состояние, результат будет крайне обескураживающий.
Итак, режимы работы:
- Поиск target’ов (discovery)
- Подключение к target’у
- Работа с подключенным target’ом
Из этого списка вполне понятен жизненный цикл — сначала найти, потом подключиться, потом отключиться, потом снова подключиться. Open-iscsi держит сессию открытой, даже если блочное устройство не используется. Более того, он держит сессию открытой (до определённых пределов, конечно), даже если сервер ушёл в перезагрузку. Сессия iscsi — это не то же самое, что открытое TCP-соединение, iscsi может прозрачно переподключаться к target’у. Отключение/подключение — операции, которыми управляют «снаружи» (либо из другого ПО, либо руками).
Немного о состоянии. После discovery open-iscsi запоминает все найденные target’ы (они хранятся в /etc/iscsi/), другими словами, discovery — операция постоянная, совсем НЕ соответствующая, например, dns resolving). Найденные target можно удалить руками (кстати, частая ошибка — когда у open-iscsi, в результате экспериментов и настройки, пачка найденных target’ов, при попытке логина в которые выползает множество ошибок из-за того, что половина target’ов — старые строчки конфига, которые уже давно не существуют на сервере, но помнятся open-iscsi). Более того, open-iscsi позволяет менять настройки запомненного target’а — и эта «память» влияет на дальнейшую работу с target’ами даже после перезагрузки/перезапуска демона.
Блочное устройство
Второй вопрос, который многих мучает по-началу — куда оно попадает после подключения? open-iscsi создаёт хоть и сетевое, но БЛОЧНОЕ устройство класса SCSI (не зря же оно «я сказя»), то есть получает букву в семействе /dev/sd, например, /dev/sdc. Используется первая свободная буква, т.к. для всей остальной системы это блочное устройство — типичный жёсткий диск, ничем не отличающийся от подключенного через usb-sata или просто напрямую к sata.
Это часто вызывает панику «как я могу узнать имя блочного устройства?». Оно выводится в подробном выводе iscsiadm (# iscsiadm -m session -P 3).
Авторизация
В отличие от SAS/UWSCSI, ISCSI доступно для подключения кому попало. Для защиты от таких, есть логин и пароль (chap), и их передача iscsiadm’у — ещё одна головная боль для начинающих пользователей. Она может осуществляться двумя путями — изменением свойств уже найденного ранее target’а и прописываем логина/пароля в файле конфигурации open-iscsi.
Причина подобных сложностей — в том, что пароль и процесс логина — это атрибуты не пользователя, а системы. ISCSI — это дешёвая версия FC-инфраструктуры, и понятие «пользователь» в контексте человека за клавиатурой тут неприменимо. Если у вас sql-база лежит на блочном устройстве iscsi, то разумеется, вам будет хотеться, чтобы sql-сервер запускался сам, а не после минутки персонального внимания оператора.
Файл конфигурации
Это очень важный файл, потому что помимо логина/пароля он описывает ещё поведение open-iscsi при нахождении ошибок. Он может отдавать ошибку «назад» не сразу, а с некоторой паузой (например, минут в пять, чего достаточно для перезагрузки сервера с данными). Так же там контролируется процесс логина (сколько раз пробовать, сколько ждать между попытками) и всякий тонкий тюнинг самого процесса работы. Заметим, эти параметры довольно важны для работы и вам нужно обязательно понимать, как поведёт ваш iscsi если вынуть сетевой шнурок на 10-20с, например.
Краткий справочник
Я не очень люблю цитировать легконаходимые маны и строчки, так что приведу типовой сценарий употребения iscsi:
сначала мы находим нужные нам target, для этого мы должны знать IP/dns-имя инициатора: iscsiadm -m discovery -t st -p 192.168.0.1 -t st — это команда send targets.
iscsiadm -m node (список найденного для логина)
iscsiadm -m node -l -T iqn.2011-09.example:data (залогиниться, то есть подключиться и создать блочное устройство).
iscsiadm -m session (вывести список того, к чему подключились)
iscsiadm -m session -P3 (вывести его же, но подробнее — в самом конце вывода будет указание на то, какое блочное устройство какому target’у принадлежит).
iscsiadm — m session -u -T iqn.2011-09.example:data (вылогиниться из конкретной )
iscsiadm -m node -l (залогиниться во все обнаруженные target’ы)
iscsiadm -m node -u (вылогиниться из всех target’ов)
iscsiadm -m node —op delete -T iqn.2011-09.example:data (удалить target из обнаруженных).
mulitpath
Ещё один вопрос, важный в серьёзных решениях — поддержка нескольких маршрутов к источнику. Прелесть iscsi — в использовании обычного ip, который может быть обычным образом обработан, как и любой другой трафик (хотя на практике обычно его не маршрутизируют, а только коммутируют — слишком уж великая там нагрузка). Так вот, iscsi поддерживает multipath в режиме «не сопротивляться». Сам по себе open-iscsi не умеет подключаться к нескольким IP одного target’а. Если его подключить к нескольким IP одного target’а, то это приведёт к появлению нескольких блочных устройств.
Однако, решение есть — это multipathd, который находит диски с одинаковым идентифиатором и обрабатывает их как положено в multipath, с настраиваемыми политиками. Эта статья не про multipath, так что подробно объяснять таинство процесса я не буду, однако, вот некоторые важные моменты:
- При использовании multipath следует ставить маленькие таймауты — переключение между сбойными путями должно происходить достаточно быстро
- В условиях более-менее быстрого канала (10G и выше, во многих случаях гигабит) следует избегать параллелизма нагрузки, так как теряется возможность использовать bio coalesing, что в некоторых типах нагрузки может неприятно ударить по target’у.
Источник