Multipath I/O — технология, позволяющая задействовать нескольких контроллеров или шин для доступа к одному устройству хранения данных. Например, один SCSI диск может быть подсоединён к двум SCSI контроллерам. В случае отказа одного из них, операционная система будет продолжать работать по другому. Это дает возможность повысить производительность и отказоустойчивость среды передачи данных.
- Установим iSCSI и multipath utilities to your host:
- RHEL/CentOS:
yum install iscsi-initiator-utils device-mapper-multipath
- Ubuntu/Debian:
sudo apt-get update
sudo apt-get install multipath-tools
- Создадим или отредактируем конфигурационный файл.
- Редактируем /etc/multipath.conf
- Внимание: В RHEL7/CentOS7,
multipath.conf
может быть пустым.
defaults {
user_friendly_names no
max_fds max
flush_on_last_del yes
queue_without_daemon no
dev_loss_tmo infinity
fast_io_fail_tmo 5
}
# All data under blacklist must be specific to your system.
blacklist {
wwid "SAdaptec*"
devnode "^hd[a-z]"
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^cciss.*"
}
devices {
device {
vendor "NETAPP"
product "LUN"
path_grouping_policy group_by_prio
features "3 queue_if_no_path pg_init_retries 50"
prio "alua"
path_checker tur
failback immediate
path_selector "round-robin 0"
hardware_handler "1 alua"
rr_weight uniform
rr_min_io 128
}
}
- Загрузим multipath модуль, запустим multipath службы и добавим в автозагрузку.
- RHEL 6:
modprobe dm-multipath
service multipathd start
chkconfig multipathd on
- CentOS 7:
modprobe dm-multipath
systemctl start multipathd
systemctl enable multipathd
- Ubuntu:
service multipath-tools start
- RHEL 6:
- Проверим, что multipath работает.
- RHEL 6:
multipath -l
Если получаем пустоту – значит работает.
- CentOS 7:
multipath -ll
RHEL 7/CentOS 7 может вернуть No fc_host device, это можно проигнорировать.
- RHEL 6:
- Обновим /etc/iscsi/initiatorname.iscsi файл с IQN (значение должно быть в нижнем регистре)
InitiatorName=<value-from-the-Portal>
- Отредактируем CHAP настройки в /etc/iscsi/iscsid.conf
node.session.auth.authmethod = CHAP
node.session.auth.username = <Username-value-from-Portal>
node.session.auth.password = <Password-value-from-Portal>
discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = <Username-value-from-Portal>
discovery.sendtargets.auth.password = <Password-value-from-Portal>
- Настроим автозапуск iSCSI.
- RHEL 6:
chkconfig iscsi on
chkconfig iscsid on
service iscsi start
service iscsid start
- CentOS 7:
systemctl enable iscsi
systemctl enable iscsid
systemctl start iscsi
systemctl start iscsid
- RHEL 6:
- Обнаружим цели по IP адресу портала.
iscsiadm -m discovery -t sendtargets -p <ip-value-from-SL-Portal>
Установим автоматическое подкючение iSCSI:
iscsiadm -m node -L automatic
- Подтвердим подключение к сессии iSCSI.
iscsiadm -m session
multipath -l
Получим отчет по подключениям.
- Убедимся что устройство подключено. Оно находится по-умолчанию в виде /dev/mapper/mpathX где X сгенерированный ID.
fdisk -l | grep /dev/mapper
Получим что-то вроде,
Disk /dev/mapper/3600a0980383030523424457a4a695266: 73.0 GB, 73023881216 byte