Назад | Перейти на главную страницу

lpfc + multipath + ubuntu - путь продолжает переключаться

У меня возникают проблемы с настройкой многопутевого режима с помощью 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 года, которую я нашел было это, резюме:

  • Установите драйвер rdac, modprobe scsi_dh_rdacи добавьте его в свой initrd
  • Используйте следующий файл multipath.conf:

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 ​​принудительно использует контроллер, который может быть не предпочтительным. .. Надеюсь, это поможет.