Как "исправить" ошибочный путь в device-mapper-multipath
У меня есть многопутевой конфиг, который работал, но теперь показывает "неправильный" путь:
[root@nas ~]# multipath -ll
sdd: checker msg is "readsector0 checker reports path is down"
mpath1 (36001f93000a63000019f000200000000) dm-2 XIOTECH,ISE1400
[size=200G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=1][active]
\_ 1:0:0:1 sdb 8:16 [active][ready]
\_ round-robin 0 [prio=0][enabled]
\_ 2:0:0:1 sdd 8:48 [active][faulty]
В то же время я вижу эти три строки снова и снова в /var/log/messages
Feb 5 12:52:57 nas kernel: sd 2:0:0:1: SCSI error: return code = 0x00010000
Feb 5 12:52:57 nas kernel: end_request: I/O error, dev sdd, sector 0
Feb 5 12:52:57 nas kernel: Buffer I/O error on device sdd, logical block 0
И эта строка появляется довольно часто
Feb 5 12:52:58 nas multipathd: sdd: readsector0 checker reports path is down
Одна вещь, которую я не понимаю, это почему она использует readsector0
метод проверки, когда мой /etc/multipath.conf
файл сказать, чтобы использовать tur
[root@nas ~]# tail -n15 /etc/multipath.conf
devices {
device {
vendor "XIOTECH "
product "ISE1400 "
path_grouping_policy multibus
getuid_callout "/sbin/scsi_id -g -u -d /dev/%n"
path_checker tur
prio_callout "none"
path_selector "round-robin 0"
failback immediate
no_path_retry 12
user_friendly_names yes
}
}
Глядя на вышестоящую документацию здесь, этот абзац представляется актуальным: http://christophe.varoqui.free.fr/usage.html
For each path:
\_ host:channel:id:lun devnode major:minor [path_status][dm_status_if_known]
The dm status (dm_status_if_known) is like the path status
(path_status), but from the kernel's point of view. The dm status has two
states: "failed", which is analogous to "faulty", and "active" which
covers all other path states. Occasionally, the path state and the
dm state of a device will temporarily not agree.
Это было более 24 часов для меня, так что это не временно.
Так что со всем этим в качестве фона мои вопросы
- Как я могу определить причину здесь?
Как я могу вручную / командной строки выполнить любую проверку, что делает
- Почему он игнорирует мой multipath.conf (я сделал это неправильно?)
Заранее спасибо за любые идеи, если есть что-то еще, что я могу предоставить для информации, дайте мне знать в комментарии, и я отредактирую это в посте.
1 ответ
В файле multipath.conf есть небольшая ошибка, поставщик и продукт совпадают на уровне регулярных выражений, что вы добавили ряд ведущих пробелов, что приводит к тому, что multipathd не соответствует вашей конфигурации с фактическими устройствами в системе. Если вы должны были изучить вывод echo 'show config' | multipathd -k
вы найдете два раздела устройств для вашей сети SAN, один из которых соответствует всем добавленным вами дополнительным пробелам, и конфигурацию по умолчанию (если она существует), предоставляемую внутренней базой данных.
Настройте файл multipath.conf так, чтобы он выглядел следующим образом:
vendor "XIOTECH "
product "ISE1400.*"
В запросе SCSI ожидается, что поле поставщика не превышает 8 символов и будет оканчиваться нулем ASCII. Если вы не используете все 8, вы должны заполнить поле пробелами до 8 символов. Multipathd интерпретирует спецификацию букве закона, вы могли бы также сделать "XIOTECH.*"
если ты действительно хочешь быть уверен.
После того, как вы внесете эти изменения, остановите multipathd, используя ваши начальные скрипты, multipath -F, который очистит вашу конфигурацию, а затем снова запустите multipathd. Ваш файл конфигурации должен быть соблюден сейчас. Если у вас все еще есть проблемы, перезагрузите компьютер.
Если есть сомнения в том, что ваш конфигурационный файл не соблюдается, всегда проверяйте работающую конфигурацию с помощью echo-заклинания и сравнивайте то, что загружено в базу данных, с вашим конфигурационным файлом.