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

Сбой многопутевого оптоволокна: Результат: hostbyte = DID_ERROR driverbyte = DRIVER_OK

Я пытаюсь скопировать (~ 7 ТБ данных с помощью rsync) между двумя серверами в одном центре обработки данных в бэкэнде, используя EMC VMAX3

После копирования ~ 30-40ГБ данных начинается сбой многопутевости

Dec 15 01:57:53 test.example.com multipathd: 360000970000196801239533037303434: Recovered to normal mode
Dec 15 01:57:53 test.example.com multipathd: 360000970000196801239533037303434: remaining active paths: 1
Dec 15 01:57:53 test.example.com kernel: sd 1:0:2:20: [sdeu]  Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK 

[root@test log]# multipath -ll |grep -i fail
 |- 1:0:0:15 sdq  65:0   failed ready running
  - 3:0:0:15 sdai 66:32  failed ready running

Мы используем multipath.conf по умолчанию

HBA driver version  8.07.00.26.06.8-k

HBA model QLogic Corp. ISP8324-based 16Gb Fibre Channel to PCI Express Adapter

OS: CentOS 64-bit/2.6.32-642.6.2.el6.x86_64
Hardware:Intel/HP ProLiant DL380 Gen9

Уже проверил это решение и проверил в EMC, все в порядке https://access.redhat.com/solutions/438403

Дополнительная информация

- На сетевой стороне нет пакетов отбрасывания / ошибки.

Vmcore собрано за время выдачи

Могу собрать vmcore во время выдачи

  KERNEL: /usr/lib/debug/lib/modules/2.6.32-642.6.2.el6.x86_64/vmlinux
DUMPFILE: vmcore  [PARTIAL DUMP]
    CPUS: 36
    DATE: Fri Dec 16 00:11:26 2016
  UPTIME: 01:48:57
  LOAD AVERAGE: 0.41, 0.49, 0.60
   TASKS: 1238
NODENAME: test.example.com
 RELEASE: 2.6.32-642.6.2.el6.x86_64
 VERSION: #1 SMP Wed Oct 26 06:52:09 UTC 2016
 MACHINE: x86_64  (2297 Mhz)
  MEMORY: 511.9 GB
   PANIC: "BUG: unable to handle kernel NULL pointer dereference at 0000000000000018"
     PID: 15840
 COMMAND: "kjournald"
    TASK: ffff884023446ab0  [THREAD_INFO: ffff88103def4000]
     CPU: 2
   STATE: TASK_RUNNING (PANIC)

После включения режима отладки на qlogic sid

qla2xxx [0000:0b:00.0]-3822:5: FCP command status: 0x2-0x0 (0x70000) nexus=5:1:0 portid=1f0160 oxid=0x800 cdb=2a200996238000038000 len=0x70000 rsp_info=0x0 resid=0x0 fw_resid=0x0 sp=ffff882189d42580 cp=ffff88276d249480.
qla2xxx [0000:84:00.0]-3822:7: FCP command status: 0x2-0x0 (0x70000) nexus=7:0:3 portid=450000 oxid=0x4de cdb=2a20098a5b0000010000 len=0x20000 rsp_info=0x0 resid=0x0 fw_resid=0x0 sp=ffff882189d421c0 cp=ffff8880237e0880.

Это HP ProLiant DL380 Gen9 сервер. Довольно стандартный сервер корпоративного класса.

Можете ли вы дать мне информацию о версии прошивки сервера?
Установлен ли EMC PowerPath? Если так, проверьте здесь.

У вас установлены агенты управления HP? Если да, то есть ли у вас возможность опубликовать результаты hplog -v.

Вы видели что-нибудь в журнале ILO4? Доступна ли МОТ?

Можете ли вы описать все карты PCIe, установленные в слотах системы?

Для настройки, специфичной для RHEL6, я настоятельно рекомендую XFS, запустив tuned-adm profile enterprise-storage и убедитесь, что ваши файловые системы смонтированы nobarrier (настроенный профиль должен справиться с этим).

Для томов убедитесь, что вы используете dm (многопутевые) устройства вместо /dev/sdX. Видеть: https://access.redhat.com/solutions/1212233


Глядя на то, что вы уже представили, и на чек, указанный на Сайт поддержки Redhatописание здесь), Я не могу исключить возможность отказа HBA или проблем с переходной платой PCIe. Кроме того, существует небольшая вероятность того, что проблема связана с VMAX.

Можете ли вы поменять местами слоты PCIe и попробовать снова? Можете ли вы поменять местами карты и попробовать еще раз?

Текущая прошивка на HBA? Вот самый последний пакет от Декабрь 2016 г..

Прошивка 6.07.02 BIOS 3.21

DID_ERROR обычно указывает, что программное обеспечение драйвера обнаружило какой-либо тип аппаратной ошибки через аномалию в данных, возвращаемых с HBA.

В подсистеме хранения присутствует проблема с оборудованием или с точки зрения безопасности, так как полученные кадры ответа волоконно-оптического канала содержат недопустимую или противоречивую информацию, которую драйвер не может использовать или согласовать.

Просмотрите оборудование системы, счетчики ошибок переключателей и т. Д., Чтобы увидеть, есть ли какие-либо указания на то, где может заключаться проблема. Наиболее вероятный кандидат - это сам HBA.

Мне кажется, что у одного из ваших SFP произошел программный сбой ... Посмотрите в коммутаторе хранилища на наличие ошибок порта, пока вы делаете большую копию.

Недавно у меня была аналогичная проблема, когда все выглядело отлично. Поставщик серверов отказался от своих материалов, поставщик хранилищ сказал, что их вещи выглядят хорошо, поклялся, что с SFP все в порядке ... SFP все еще показывал себя как работоспособный, пока через интерфейс MPIO не были отправлены большие объемы данных и не появилось много ошибок на порт коммутатора хранилища начнет регистрироваться.

Мне пришлось заменить все оптоволоконные кабели на новые, а затем переключить SFP на запасные, которые у меня были под рукой, чтобы доказать поставщику, что SFP плохой, хотя в остальном он выглядел нормально.

Наконец проблема решена

Ошибка: TECH PREVIEW: поддержка DIF / DIX может поддерживаться не полностью.

Я постоянно видел это сообщение в dmesg во время выдачи и продолжаю игнорировать это сообщение

При дальнейшей отладке я обнаружил, что ядро ​​находится в испорченном состоянии

 cat /proc/sys/kernel/tainted **So it's a combination of  TAINT_TECH_PREVIEW and TAINT_WARN**
 536871424

 lsmod |egrep -i "dif|dix" 
 crc_t10dif              1209  1 sd_mod

 modinfo crc_t10dif
 filename:       /lib/modules/2.6.32-642.6.2.el6.x86_64/kernel/lib/crc-t10dif.ko
 softdep:        pre: crct10dif
 license:        GPL
 description:    T10 DIF CRC calculation
 srcversion:     52BC47DEA6DD58B87A2D9C1
 depends:        
 vermagic:       2.6.32-642.6.2.el6.x86_64 SMP mod_unload modversions

Согласно RedHat

DIF - это новая функция, недавно добавленная в стандарт SCSI. Он увеличивает размер обычно используемого 512-байтового блока диска с 512 до 520 байтов. Дополнительные байты составляют поле целостности данных (DIF). Основная идея состоит в том, что HBA вычисляет значение контрольной суммы для блока данных при записи и сохраняет его в DIF. Устройство хранения подтвердит контрольную сумму при получении и сохранит данные плюс контрольную сумму. При чтении контрольная сумма будет проверена запоминающим устройством и принимающим HBA.

Расширение целостности данных (DIX) позволяет этой проверке перемещаться вверх по стеку: приложение вычисляет контрольную сумму и передает ее HBA для добавления к 512-байтовому блоку данных. Это обеспечивает полную сквозную проверку целостности данных.

Некоторые поставщики приняли название Protection Information (PI) для обозначения функциональности DIF / DIX. Есть одна трудность, связанная с DIF / DIX в Linux - система управления памятью может изменить буфер данных, пока он находится в очереди на запись. Если это происходит, то система управления памятью должна помнить, что эта страница должна быть помечена как грязная после успешного ввода-вывода. Если система управления памятью изменяет данные в буфере после вычисления контрольной суммы, но до того, как запись будет выполнена, то проверка контрольной суммы завершится ошибкой, запись завершится неудачно, и файловая система перейдет в режим только для чтения, или произойдет подобный сбой. происходят.

Из-за этого пользователи Red Hat Enterprise Linux 6 должны обратить внимание на следующее: Функция контрольной суммы оборудования DIF / DIX должна использоваться только с приложениями, которые выполняют исключительно ввод-вывод O_DIRECT. Эти приложения могут использовать необработанное блочное устройство или файловую систему XFS в режиме O_DIRECT. (XFS - единственная файловая система, которая не использует буферизованный ввод-вывод при выполнении определенных операций выделения памяти). Только приложения, предназначенные для использования с оборудованием O_DIRECT I / O и DIF / DIX, должны включать эту функцию.

DIF / DIX - это предварительная версия RHEL 6.0. В настоящее время есть только две комбинации драйвер / hba, которые поддерживают эту поддержку: Emulex lpfc и LSI mpt2sas. Его поддерживают всего несколько поставщиков систем хранения: RAID-массив Netapp Engenio FC и некоторые диски Hitachi SAS. Мы ожидаем, что дополнительные поставщики хранилищ будут поддерживать эту функцию в будущем.

Поскольку мы используем EMC, мы решили отключить эту функцию, и это помогло.

   cat /etc/modprobe.d/qla2xxx.conf
   options qla2xxx ql2xenabledif=0 ql2xenablehba_err_chk=0
   Back up existing initramfs:  cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
   Rebuild initramfs:  dracut -f -v
   Verify that /etc/modprobe.d/qla2xxx.conf is the same as the one in initramfs (time and size should be the same):     lsinitrd | grep qla2xxx.conf; ls -al /etc/modprobe.d/qla2xxx.conf

Я знаю, что если ты изменишься / и т.д. / sysconfig / mkinitrd / multipath MULTIPATH =Нет на MULTIPATH =ДА и в файл /etc/multipath.conf - следующий комментарий:

черный список {devnode "*"}

Включите автозагрузку:

chkconfig multipathd на

Включите загрузку модуля:

modprobe dm-multipath

modprobe dm-round-robin

В autocfg:

multipath -v2

Перезагрузите сервер, подбадривая всех:

lsmod | grep dm_

просмотр многопутевого:

multipath -ll