Вопрос или проблема
Когда диск начинает медленно выходить из строя, multipath начинает отключать и восстанавливать пути, и это продолжается вечно.. (Я использую карту LSI-3008HBA с SAS-JBOD, а не FC-сеть)
Dmesg;
13 сен 11:20:17 DEV2 kernel: sd 0:0:190:0: попытка прервать задачу! scmd(ffff88110e632948)
13 сен 11:20:17 DEV2 kernel: sd 0:0:190:0: [sdft] tag#3 CDB: opcode=0x0 00 00 00 00 00 00
13 сен 11:20:17 DEV2 kernel: scsi target0:0:190: обрабатывается(0x0037), sas_address(0x5000c50093d4e7c6), phy(38)
13 сен 11:20:17 DEV2 kernel: scsi target0:0:190: enclosure_logical_id(0x500304800929ec7f), слот(37)
13 сен 11:20:17 DEV2 kernel: scsi target0:0:190: уровень enclosure(0x0001), имя разъема(1)
13 сен 11:20:17 DEV2 kernel: sd 0:0:190:0: прерывание задачи: УСПЕХ scmd(ffff88110e632948)
13 сен 11:20:18 DEV2 kernel: device-mapper: multipath: Отключение пути 130:240.
13 сен 11:25:34 DEV2 kernel: device-mapper: multipath: Восстановление пути 130:240.
Как видно, ядро прервало выполнение задачи, и после этого multipath вышел из строя. Поэтому я хочу избавиться от этой проблемы, заставив Multipath “не восстанавливать путь”.
Этот метод позволит оставить мертвый зомби-диск.
Как я могу это сделать?
Нам нужно понять, как multipath определяет, что путь функционирует. Если вы посмотрите на multipath.conf, вы увидите, что имеется опциональный path_checker
, вы можете увидеть их список (по умолчанию это readsector0
). Также следует установить приоритеты для путей, чтобы группировка путей была такой, чтобы отключение авто-восстановления предотвратило его использование, если не произойдет экстренной ситуации. Согласно https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/storage_administration_guide/removing-path-to-storage-device, после удаления ручных ссылок на sdft
вы можете использовать следующее (но замените sdft
на sda
, чтобы соответствовать вашему случаю):
Выведите путь из строя с помощью
echo offline > /sys/block/sda/device/state
.Это приведет к тому, что все последующие операции ввода-вывода, отправленные на устройство по этому пути, будут немедленно отменены. Device-mapper-multipath продолжит использовать оставшиеся пути к устройству.
Ответ или решение
Чтобы решить проблему с постоянным отключением и повторным восстановлением путей в настройках Device-Mapper (Multipath), когда диск начинает медленно выходить из строя, необходимо внести изменения в конфигурацию multipath и состояние поврежденного пути. Вот последовательность шагов, которые помогут вам отключить проблемный путь и избежать его восстановления:
-
Проверьте конфигурацию multipath:
Найдите файл конфигурацииmultipath.conf
, который обычно расположен в/etc/multipath.conf
. В этом файле вы можете настроить параметрыpath_checker
и определить способ, которым multipath определяет работоспособность путей. Для этого можно установить параметрpath_checker
, чтобы использовать более строгие методы проверки. Например, вы можете использоватьnone
, чтобы полностью отключить проверки на этом пути.Пример секции конфигурации:
devices { device { vendor "LSI" product ".*" path_checker "none" # Отключает проверку } }
-
Отключите путь вручную:
Чтобы отключить проблемный путь, выполните следующую команду, заменивsdft
на ваш конкретный путь (например,sda
):echo offline > /sys/block/sdft/device/state
Это действие приведет к тому, что все последующие операции ввода-вывода на этом пути будут немедленно завершаться с ошибкой, и
device-mapper-multipath
продолжит использовать оставшиеся работающие пути. -
Измените приоритеты путей:
Если у вас есть несколько путей к диску, вы можете изменить их приоритет в конфигурации multipath. Установите более высокий приоритет для рабочих путей:multipath { wd_path { path_grouping policies "group_by_prio" path_priority "1" # Высокий приоритет для рабочего пути } }
Это поможет гарантировать, что multipath будет использовать только надежные и работающие пути.
-
Перезапустите службы multipath:
После внесения этих изменений необходимо перезапустить службы multipath, чтобы они вступили в силу:systemctl restart multipathd
-
Мониторинг состояния путей:
После выполнения вышеуказанных действий полезно будет периодически проверять состояние путей. Используйте команду:multipath -ll
Эта команда отобразит текущее состояние всех путей и поможет вам убедиться, что проблемный путь был отключен и далее не восстанавливается.
Эти действия должны помочь вам справиться с проблемой постоянного восстановления и отключения путей multipath. Важно следить за состоянием оборудования и заменить диск, если он продолжает показывать признаки сбоя.