Ubuntu 10.04 и IBM DS3524 с многолучевым FC, неактивный путь [сбой][сбой] вместо [активный][призрак]
ОК, это мои настройки:
FC Коммутаторы IBM/Brocade, Switch1 и Switch2, независимые матрицы.
Сервер IBM x3650 M2, 2x QLogic QLE2460, 1 подключен к каждому коммутатору FC.
Хранилище IBM DS3524, 2 контроллера по 4 порта FC каждый, но только 2 подключенных к каждому.
+-----------------------------------------------------------------------+
| HBA1 Server HBA2 |
+-----------------------------------------------------------------------+
| |
| |
| |
+-----------------------------+ +------------------------------+
| Switch1 | | Switch2 |
+-----------------------------+ +------------------------------+
| | | |
| | | |
| | | |
| | | |
| | | |
+-----------------------------------+-----------------------------------+
| Contr A, port 3 | Contr A, port 4 | Contr B, port 3 | Contr B, port 4 |
+-----------------------------------+-----------------------------------+
| Storage |
+-----------------------------------------------------------------------+
Мой /etc/multipath.conf из справочника IBM для DS3500, за исключением того, что я использую другой параметр prio_callout, IBM использует / sbin / mpath_prio_tpc, но в соответствии с http://changelogs.ubuntu.com/changelogs/pool/main/m/multipath-tools/multipath-tools_0.4.8-7ubuntu2/changelog, этот файл был переименован в / sbin / mpath_prio_rdac, который я использую.
devices {
device {
#ds3500
vendor "IBM"
product "1746 FAStT"
hardware_handler "1 rdac"
path_checker rdac
failback 0
path_grouping_policy multibus
prio_callout "/sbin/mpath_prio_rdac /dev/%n"
}
}
multipaths {
multipath {
wwid xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
alias array07
path_grouping_policy multibus
path_checker readsector0
path_selector "round-robin 0"
failback "5"
rr_weight priorities
no_path_retry "5"
}
}
Выход из multipath -ll
с контроллером A в качестве предпочтительного пути:
root@db06:~# multipath -ll
sdg: checker msg is "directio checker reports path is down"
sdh: checker msg is "directio checker reports path is down"
array07 (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) dm-2 IBM ,1746 FASt
[size=4.9T][features=1 queue_if_no_path][hwhandler=0]
\_ round-robin 0 [prio=2][active]
\_ 5:0:1:0 sdd 8:48 [active][ready]
\_ 5:0:2:0 sde 8:64 [active][ready]
\_ 6:0:1:0 sdg 8:96 [failed][faulty]
\_ 6:0:2:0 sdh 8:112 [failed][faulty]
Если я изменю предпочтительный путь с помощью IBM DS Storage Manager на Controller B, выходные данные меняются соответственно:
root@db06:~# multipath -ll
sdd: checker msg is "directio checker reports path is down"
sde: checker msg is "directio checker reports path is down"
array07 (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) dm-2 IBM ,1746 FASt
[size=4.9T][features=1 queue_if_no_path][hwhandler=0]
\_ round-robin 0 [prio=2][active]
\_ 5:0:1:0 sdd 8:48 [failed][faulty]
\_ 5:0:2:0 sde 8:64 [failed][faulty]
\_ 6:0:1:0 sdg 8:96 [active][ready]
\_ 6:0:2:0 sdh 8:112 [active][ready]
По мнению IBM, неактивный путь должен быть "[активный][призрак]", а не "[сбой][неисправен]".
Несмотря на это, у меня, похоже, нет проблем с вводом / выводом, но мой системный журнал рассылается спамом каждые 5 секунд:
Jun 1 15:30:09 db06 multipathd: sdg: directio checker reports path is down
Jun 1 15:30:09 db06 kernel: [ 2350.282065] sd 6:0:2:0: [sdh] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Jun 1 15:30:09 db06 kernel: [ 2350.282071] sd 6:0:2:0: [sdh] Sense Key : Illegal Request [current]
Jun 1 15:30:09 db06 kernel: [ 2350.282076] sd 6:0:2:0: [sdh] <<vendor>> ASC=0x94 ASCQ=0x1ASC=0x94 ASCQ=0x1
Jun 1 15:30:09 db06 kernel: [ 2350.282083] sd 6:0:2:0: [sdh] CDB: Read(10): 28 00 00 00 00 00 00 00 08 00
Jun 1 15:30:09 db06 kernel: [ 2350.282092] end_request: I/O error, dev sdh, sector 0
Jun 1 15:30:10 db06 multipathd: sdh: directio checker reports path is down
Jun 1 15:30:14 db06 kernel: [ 2355.312270] sd 6:0:1:0: [sdg] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Jun 1 15:30:14 db06 kernel: [ 2355.312277] sd 6:0:1:0: [sdg] Sense Key : Illegal Request [current]
Jun 1 15:30:14 db06 kernel: [ 2355.312282] sd 6:0:1:0: [sdg] <<vendor>> ASC=0x94 ASCQ=0x1ASC=0x94 ASCQ=0x1
Jun 1 15:30:14 db06 kernel: [ 2355.312290] sd 6:0:1:0: [sdg] CDB: Read(10): 28 00 00 00 00 00 00 00 08 00
Jun 1 15:30:14 db06 kernel: [ 2355.312299] end_request: I/O error, dev sdg, sector 0
Кто-нибудь знает, как я могу получить неактивный путь, чтобы показать "[активный][призрак]" вместо "[не удалось][неисправен]"? Я предполагаю, что как только я смогу сделать это правильно, спам в моем системном журнале также прекратится.
И еще одна вещь, о которой стоит упомянуть: документация IBM посвящена SLES 11, так что я предполагаю, что в Ubuntu есть что-то немного другое, чего я еще не понял.
Обновление: по предложению Mitch, я попытался удалить /etc/multipath.conf, и теперь вывод multipath -ll
выглядит так:
root@db06:~# multipath -ll
sdg: checker msg is "directio checker reports path is down"
sdh: checker msg is "directio checker reports path is down"
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdm-1 IBM ,1746 FASt
[size=4.9T][features=0][hwhandler=0]
\_ round-robin 0 [prio=1][active]
\_ 5:0:2:0 sde 8:64 [active][ready]
\_ round-robin 0 [prio=1][enabled]
\_ 5:0:1:0 sdd 8:48 [active][ready]
\_ round-robin 0 [prio=0][enabled]
\_ 6:0:1:0 sdg 8:96 [failed][faulty]
\_ round-robin 0 [prio=0][enabled]
\_ 6:0:2:0 sdh 8:112 [failed][faulty]
Таким образом, это более или менее то же самое, с тем же сообщением в системном журнале каждые 5 минут, как и раньше, но группировка изменилась.
2 ответа
Я наконец нашел конфигурацию, которая работает здесь: http://pig.made-it.com/multipath.html. Подводя итог здесь на случай, если кто-то еще имеет это в будущем.
device {
vendor "IBM"
product "1745|1746"
path_grouping_policy group_by_prio
# getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
path_selector "round-robin 0"
path_checker rdac
features "2 pg_init_retries 50"
hardware_handler "1 rdac"
prio_callout "/sbin/mpath_prio_rdac /dev/%n"
failback immediate
rr_weight uniform
no_path_retry 15
rr_min_io 1000
}
Я прокомментировал getuid_callout
потому что Ubuntu помещает scsi_id
программа в /lib/udev
не /sbin
и значение по умолчанию Ubuntu для getuid_callout
является /lib/udev/scsi_id -g -u -s
, так что я не включил это в мою конфигурацию явно.
Никаких особых настроек не требуется в multipath { ... }
блок, но вы можете создать дружественные псевдонимы, если это необходимо, используя:
multipaths {
multipath {
wwid xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
alias array07
}
}
multipath -ll
вывод теперь выглядит так:
root@db06:~# multipath -ll
array07 (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) dm-1 IBM ,1746 FASt
[size=4.9T][features=3 queue_if_no_path pg_init_retries 50][hwhandler=1 rdac]
\_ round-robin 0 [prio=0][enabled]
\_ 5:0:1:0 sdd 8:48 [active][ghost]
\_ 5:0:2:0 sde 8:64 [active][ghost]
\_ round-robin 0 [prio=6][active]
\_ 6:0:1:0 sdg 8:96 [active][ready]
\_ 6:0:2:0 sdh 8:112 [active][ready]
Я больше не получаю спам в /var/log/syslog, и отработка отказа / отработка работают отлично.
Я действительно не знаю много о IBM DS3524. Но если это что-то похожее на EMC Clariion CX-4, то:
Попробуйте переместить multipath.conf
от папки etc и перезагрузите multipath-tools
,