У меня возникают проблемы с настройкой многопутевого режима с помощью Emulex (lpfc). Хотя я не обнаружил повреждения данных, у администратора SAN есть инструмент, который показывает, что пути меняются каждые 20 секунд или около того. Вот подробности:
# multipath -l
san01 (3600a0b80002a042200002cb44a9a29ca) dm-2 IBM ,1815 FASt
[size=100G][features=0][hwhandler=0]
\_ round-robin 0 [prio=0][active]
\_ 3:0:0:0 sdb 8:16 [active][undef]
\_ round-robin 0 [prio=0][enabled]
\_ 4:0:0:0 sdc 8:32 [active][undef]
Несколько путей подключены к одному LUN.
# /lib/udev/scsi_id -g -u -d /dev/sdb
3600a0b80002a042200002cb44a9a29ca
# /lib/udev/scsi_id -g -u -d /dev/sdc
3600a0b80002a042200002cb44a9a29ca
Вот /etc/multipath.conf
defaults {
udev_dir /dev
polling_interval 5
selector "round-robin 0"
path_grouping_policy failover
getuid_callout "/lib/udev/scsi_id -g -u -d /dev/%n"
path_checker readsector
failback immediate
user_friendly_names yes
}
multipaths {
multipath {
wwid 3600a0b80002a042200002cb44a9a29ca
alias san01
}
}
fdisk -l
Disk /dev/sdb: 107.3 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x61b4bf95
Device Boot Start End Blocks Id System
/dev/sdb1 1 13054 104856223+ 83 Linux
Disk /dev/sdc: 107.3 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x61b4bf95
Device Boot Start End Blocks Id System
/dev/sdc1 1 13054 104856223+ 83 Linux
Я увеличил детализацию для lpfc и теперь на dmesg получаю следующее:
[ 2519.241119] lpfc 0000:07:00.0: 1:0336 Rsp Ring 0 error: IOCB Data: xff000018 x37a120c0 x0 x0 xeb x0 x1b108db xa29b16
[ 2519.241124] lpfc 0000:07:00.0: 1:(0):0729 FCP cmd x12 failed <0/0> status: x1 result: xeb Data: x1b1 x8db
[ 2519.241127] lpfc 0000:07:00.0: 1:(0):0730 FCP command x12 failed: x0 SNS x0 x0 Data: x8 xeb x0 x0 x0
[ 2519.241130] lpfc 0000:07:00.0: 1:(0):0716 FCP Read Underrun, expected 254, residual 235 Data: xeb x12 x0
[ 2519.241275] lpfc 0000:07:00.0: 1:0336 Rsp Ring 0 error: IOCB Data: xff000018 x37a14c48 x0 x0 xd2 x0 x1b208e6 xa29b16
[ 2519.241279] lpfc 0000:07:00.0: 1:(0):0729 FCP cmd x12 failed <0/0> status: x1 result: xd2 Data: x1b2 x8e6
[ 2519.241283] lpfc 0000:07:00.0: 1:(0):0730 FCP command x12 failed: x0 SNS x0 x0 Data: x8 xd2 x0 x0 x0
[ 2519.241286] lpfc 0000:07:00.0: 1:(0):0716 FCP Read Underrun, expected 254, residual 210 Data: xd2 x12 x0
Может кто-нибудь что-то не так видит в этой конфигурации? Спасибо.
Основываясь на комментариях janneb, я изменил конфигурацию в multipath.conf на:
defaults {
udev_dir /dev
polling_interval 5
selector "round-robin 0"
path_grouping_policy multibus
getuid_callout "/lib/udev/scsi_id -g -u -d /dev/%n"
failback immediate
user_friendly_names yes
}
Что теперь дает:
san01 (3600a0b80002a042200002cb44a9a29ca) dm-2 IBM ,1815 FASt
[size=100G][features=0][hwhandler=0]
\_ round-robin 0 [prio=2][active]
\_ 3:0:0:0 sdb 8:16 [active][ready]
\_ 4:0:0:0 sdc 8:32 [active][ready]
Но через некоторое время он все равно становится [активным] [undef], а затем снова становится [готово].
О, я только что кое-что заметил: когда я запускаю 'multipath -l', я получаю [undef], однако, если я запускаю 'multipath -ll', я получаю [готово].
-l show the current multipath topology from information fetched in sysfs and the device mapper
-ll show the current multipath topology from all available information (sysfs, the device mapper, path checkers ...)
Неправильная установка? Как я могу отлаживать? Спасибо.
Спасибо, janneb и zerolagtime за помощь.
Вот как это усложняется, я подумал, что мне не нужно все это объяснять, и в настоящее время склоняюсь к путанице в настройке оборудования.
Фактически к одному LUN с помощью FC подключены два сервера. На уровне ОС только один сервер будет иметь доступ к файловой системе (хотя один и тот же LUN доступен для обоих), поскольку это ext3 (не файловая система кластеризации). Если сервер 1 выходит из строя, запускается сервер 2 (linux-ha) и монтирует файловую систему.
Сервер 1 (multipath -ll):
san01 (3600a0b80002a042200002cb44a9a29ca) dm-2 IBM ,1815 FASt
[size=100G][features=0][hwhandler=0]
\_ round-robin 0 [prio=2][active]
\_ 3:0:0:0 sdb 8:16 [active][ready]
\_ 4:0:0:0 sdc 8:32 [active][ready]
Сервер 2 (multipath -ll):
san01 (3600a0b80002a042200002cb44a9a29ca) dm-2 IBM ,1815 FASt
[size=100G][features=0][hwhandler=0]
\_ round-robin 0 [prio=2][active]
\_ 3:0:0:0 sdb 8:16 [active][ready]
\_ 4:0:0:0 sdc 8:32 [active][ready
Имена портов сервера 1:
# cat /sys/class/fc_host/host3/port_name
0x10000000c96c5fdb
# cat /sys/class/fc_host/host4/port_name
0x10000000c96c5df5
root@web-db-1:~#
Имена портов сервера 2:
#cat /sys/class/fc_host/host3/port_name
0x10000000c97b0917
# cat /sys/class/fc_host/host4/port_name
0x10000000c980a2d8
Это неправильная установка? Является ли LUN доступным для обоих серверов неправильно? Я думаю, что подключение оборудования неправильное, что может быть не так? Может ли server1 path_checker мешать работе server2? Спасибо.
Ваша конфигурация выглядит странно; обычно у вас будет 4 пути к одному и тому же устройству (то есть 4 устройства / dev / sdX на одно устройство с несколькими путями). Контроллер массива обычно может информировать хост о приоритете для каждого пути, поэтому у вас есть 2 пути с более высоким приоритетом и 2 с более низким приоритетом. Затем dm-multipath мультиплексирует ввод-вывод по 2 путям с высоким приоритетом (опция «селектор» со значением по умолчанию rr_min_io = 100). Теперь у вас есть 2 группы путей с одинаковым приоритетом, поэтому, возможно, dm-multipath распределяет ввод-вывод по ним обоим, что может быть не тем, что ваш администратор SAN хочет, чтобы вы делали. Еще одна странность заключается в том, что устройства отмечены «undef», а не «готово». Еще одна странность в том, что нумерация путей выглядит довольно странно (все идет по одному пути?). Вы действительно уверены, что все правильно подключено, правильно зонировано и т. Д.?
Типичный вывод команды "multipath -ll" должен выглядеть так:
sanarch3 (3600508b4000683de0000c00000a20000) dm-6 HP,HSV200 [size=2.0T][features=1 queue_if_no_path][hwhandler=0][rw] \_ round-robin 0 [prio=100][active] \_ 0:0:0:5 sdc 8:32 [active][ready] \_ 1:0:0:5 sdk 8:160 [active][ready] \_ round-robin 0 [prio=20][enabled] \_ 0:0:1:5 sdg 8:96 [active][ready] \_ 1:0:1:5 sdo 8:224 [active][ready]
Там вы видите 4 пути, сгруппированные в 2 группы приоритета, и ввод-вывод выполняется через устройства sdc и sdk, в то время как sdg и sdo простаивают и используются только во время сбоя.
РЕДАКТИРОВАТЬ Итак, причина, по которой вы должны увидеть 4 пути, заключается в том, что у вас есть 2 порта HBA, а в массиве есть 2 избыточных контроллера. Затем у вас есть 2 резервные сети с последним уровнем коммутации, обеспечивающим межсетевые соединения. Таким образом, оба HBA видят оба контроллера, следовательно, 4 пути для каждого LUN. Вы можете видеть это в приведенном выше примере для нумерации идентификаторов SCSI, которые выглядят как [идентификатор хост-контроллера]: [идентификатор канала]: [идентификатор целевого контроллера]: [идентификатор LUN]. Затем вы можете увидеть, что оба активных пути находятся на контроллере №0, поскольку в этом случае контроллер №0 «владеет» LUN; Ввод-вывод возможен через другой контроллер, но это снижает производительность, так как другому контроллеру (в зависимости от реализации контроллера) необходимо перенаправить ввод-вывод контроллеру-владельцу. Следовательно, контроллер сообщает, что пути, которые идут к контроллеру №0, имеют более высокий приоритет.
Итак, из вашего вопроса видно, что к другому контроллеру вообще нет пути. И, если у вас нет избыточных контроллеров и сетей, зачем вообще беспокоиться о многопутевости?
В документации IBM SAN обычно есть четко определенные примеры multipath.conf, разве вы не начали с них? Я оставлю эту часть как упражнение для читателя. Кроме того, администратор SAN должен вам немного больше поддержки. Некоторые быстрые моменты
Колебания пути, как вы описали, обычно связаны с неправильной настройкой средства проверки пути, в ваших двух итерациях вы, когда из readsector0 к никто, который, вероятно, принимает многолучевое распространение по умолчанию для этой марки и модели, вероятно тур (тестовый образец готов).
Не определено ни одно средство проверки приоритета, ни средство проверки приоритета, ни приоритеты.
Вероятно, потребуется аппаратный обработчик, который четко определен в документации.
Лучшая история войны IBM 1815 года, которую я нашел было это, резюме:
blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z]"
devnode "^sda"
device {
vendor "Maxtor*"
product "OneTouch*"
}
}
blacklist_exceptions {
device {
vendor "IBM"
product "1815*"
}
}
defaults {
failback immediate
no_path_retry queue
user_friendly_names no
path_grouping_policy failover
}
devices {
device {
vendor "IBM"
product "1815*"
failback manual
hardware_handler "1 rdac"
path_checker rdac
prio_callout "/sbin/mpath_prio_rdac /dev/%n"
}
}
Дайте нам знать, как это получается. Удачи!
Прежде всего, вы определяете multibus, уверены ли вы, что ваше хранилище поддерживает это? Спросите своего администратора SAN, действительно ли ваше хранилище является активным / активным, активное пассивное хранилище не позволяет постоянно переключаться с контроллера, это требует затрат на хранилище и также создаст проблемы на стороне клиента. В первой конфигурации он не был определен в конфигурации, то есть вы принимаете конфигурацию по умолчанию, определенную в multipath (проверьте /usr/share/doc/mulitpath.conf.anotted), или посмотрите на вывод multipathd -k show config, чтобы получить лучший вид. (в любом случае просмотрите конфигурацию по умолчанию со спецификациями хранилища, потому что они не всегда самые лучшие: у меня была проблема с HDS et rhel)
Во-вторых, вы сказали, что на FS нет проблем с целостностью. Вы уверены, что ваша FS использует многопутевое устройство ??? Если я предполагаю, что вы используете LVM, проверяли ли вы настройки фильтра в lvm.conf? если это не правильно настроено, lvm будет использовать устройство напрямую вместо использования MPIO, это может быть еще более серьезной проблемой с активным / пассивным хранилищем, поскольку lvm принудительно использует контроллер, который может быть не предпочтительным. .. Надеюсь, это поможет.