Multipath — это технология, которая позволяет соединить процессор и устройство хранения данных с помощью нескольких контроллеров. Примером может послужить такая схема.

Сегодня, с современными версиями RHEL 5.5, сложностей в установке системы в режиме multipath нет, но в более старых системах, таких как RHEL 4.6, проблема стоит достаточно остро.
В RHEL 5.5 же достаточно перед установкой ввести команду linux text mpath или linux mpath. После установки наше дисковое пространство будет «видно» под двум путям.
При отказе одно из контроллеров ОС будет продолжать работать без сбоев, используя другой path к диску.
Но с RHEL 4.6. все не так просто. Команда linux text mpath в этой версии еще не работает, и система ставиться просто на обычное блочное устройство /dev/sda. Иначе после установки система монтируется в Read-Only mode. Хотя наша задача установить ее на multipath-устройство для того, чтобы система имела бОльшую отказоустойчивость.
Итак приступим. В начале всех начал мы должны сделать backup всех файлов, которые будут подвергаться изменению.
Забегая наперед, скажу, что для того, чтобы правильно собрать все воедино, необходим правильный mkinitrd, собирающий *.img с поддержкой mpath. Скачать его можно по этой ссылке
Файл mkinitrd.mp копируем в /usr/local/sbin для нашего же удобства.
Далее нам необходимо получить wwn устройства для того, чтобы добавить его в конфиг и создать для него alias.
Теперь редактируем файл /etc/multipath.conf
Закомментируем
Раскомментируем
Редатируем /etc/fstab
Исходное:
/etc/fstab после редактирования (LABEL и /dev/sd* меняем на dm-multipath устройства)
Собираем img с поддержкой dm-multipath
Создаем новую точку входа в /boot/grub/grub.conf
Перезагружаемся и проверяем.

Сегодня, с современными версиями RHEL 5.5, сложностей в установке системы в режиме multipath нет, но в более старых системах, таких как RHEL 4.6, проблема стоит достаточно остро.
В RHEL 5.5 же достаточно перед установкой ввести команду linux text mpath или linux mpath. После установки наше дисковое пространство будет «видно» под двум путям.
/sbin/multipath -ll
mpath1 (36001438005dec9060000500000370000) dm-7 HP,HSV450
[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=50][active]
\_ 1:0:0:2 sdd 8:48 [active][ready]
\_ round-robin 0 [prio=10][enabled]
\_ 0:0:0:2 sdb 8:16 [active][ready]
mpath0 (36001438005dec9060000500000230000) dm-0 HP,HSV450
[size=70G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=50][active]
\_ 0:0:0:1 sda 8:0 [active][ready]
\_ round-robin 0 [prio=10][enabled]
\_ 1:0:0:1 sdc 8:32 [active][ready]
При отказе одно из контроллеров ОС будет продолжать работать без сбоев, используя другой path к диску.
Но с RHEL 4.6. все не так просто. Команда linux text mpath в этой версии еще не работает, и система ставиться просто на обычное блочное устройство /dev/sda. Иначе после установки система монтируется в Read-Only mode. Хотя наша задача установить ее на multipath-устройство для того, чтобы система имела бОльшую отказоустойчивость.
Итак приступим. В начале всех начал мы должны сделать backup всех файлов, которые будут подвергаться изменению.
#cp /etc/fstab /etc/fstab.bak
#cp /etc/multipath.conf /etc/multipath.conf.bak
Забегая наперед, скажу, что для того, чтобы правильно собрать все воедино, необходим правильный mkinitrd, собирающий *.img с поддержкой mpath. Скачать его можно по этой ссылке
Файл mkinitrd.mp копируем в /usr/local/sbin для нашего же удобства.
cp ./mkinitrd.mp /usr/local/sbin/mkinitrd.mp
Далее нам необходимо получить wwn устройства для того, чтобы добавить его в конфиг и создать для него alias.
#scsi_id -g -s /block/sda
3600508b4000ce22900015000042c0000
Теперь редактируем файл /etc/multipath.conf
Закомментируем
#devnode_blacklist {
# devnode «*»
#}
Раскомментируем
multipaths {
multipath {
wwid 3600508b4000ce22900015000042c0000 ß наш wwid
alias os
}
}
и
defaults {
udev_dir /dev
polling_interval 10
selector «round-robin 0″
path_grouping_policy multibus
getuid_callout «/sbin/scsi_id -g -u -s /block/%n»
prio_callout /bin/true
path_checker readsector0
rr_min_io 100
rr_weight priorities
failback immediate
no_path_retry fail
user_friendly_names yes
}
Редатируем /etc/fstab
Исходное:
LABEL=/ / ext3 defaults 1 1
LABEL=/data /data ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
LABEL=/home /home ext3 defaults 1 2
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
LABEL=/usr /usr ext3 defaults 1 2
LABEL=/var /var ext3 defaults 1 2
/dev/sdb2 swap swap defaults 0 0
/etc/fstab после редактирования (LABEL и /dev/sd* меняем на dm-multipath устройства)
/dev/mapper/os1 / ext3 defaults 1 1
/dev/mapper/os7 /data ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
/dev/mapper/os6 /home ext3 defaults 1 2
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
/dev/mapper/os5 /usr ext3 defaults 1 2
/dev/mapper/os3 /var ext3 defaults 1 2
/dev/mapper/os2 swap swap defaults 0 0
Собираем img с поддержкой dm-multipath
mkinitrd.mp /boot/initrd-2.6.9-67.ELlargesmp-with-Qlogic-MP.img 2.6.9-67.ELlargesmp
Создаем новую точку входа в /boot/grub/grub.conf
title Red Hat Enterprise Linux AS-with-Qlogic-MP (2.6.9-67.EL)
root (hd0,0)
kernel /boot/vmlinuz-2.6.9-67.ELlargesmp ro root=/dev/mapper/os1 rhgb quiet
initrd /boot/initrd-2.6.9-67.ELlargesmp-with-Qlogic-MP.img
Перезагружаемся и проверяем.
/sbin/multipath –ll
os (3600508b4000ce22900015000042c0000)
[size=50 GB][features="0"][hwhandler="0"]
\_ round-robin 0 [prio=1][active]
\_ 0:0:0:1 sda 8:0 [active][ready]
\_ round-robin 0 [prio=1][enabled]
\_ 1:0:0:1 sdb 8:16 [active][ready]