Я пытаюсь скопировать (~ 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
Дополнительная информация
- На сетевой стороне нет пакетов отбрасывания / ошибки.
Уже отключил THP
эхо никогда> / sys / kernel / mm / redhat_transparent_hugepage / включен
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 - следующий комментарий:
Включите автозагрузку:
Включите загрузку модуля:
В autocfg:
Перезагрузите сервер, подбадривая всех:
просмотр многопутевого: