如何“修復” 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(我做錯了嗎?)
提前感謝您的任何想法,如果還有其他我可以提供的資訊,請在評論中告訴我,我會將其編輯到文章中。
您的 multipath.conf 中有一個細微的錯誤,供應商和產品在正則表達式級別匹配,您添加了一系列前導空格導致 multipathd 無法將您的配置與系統上的實際設備匹配。如果您要檢查輸出,
echo 'show config' | multipathd -k
您會發現SAN 的兩個設備部分,一個匹配您添加的所有額外空間,以及內部數據庫提供的預設配置(如果存在)。調整你的 multipath.conf 看起來像這樣:
vendor "XIOTECH " product "ISE1400.*"
SCSI 查詢要求供應商欄位不超過 8 個以 ASCII 零結尾的字元,如果您不使用全部 8 個字元,則必須用空格填充該欄位以達到 8 個字元。Multipathd 正在根據法律條文解釋規範,
"XIOTECH.*"
如果您真的想確定,您也可以這樣做。進行這些更改後,使用 initscripts 停止 multipathd,multipath -F 將刷新您的配置,然後再次啟動 multipathd。您的配置文件現在應該得到尊重。如果仍有問題,請重新啟動。
如果您懷疑您的配置文件沒有被遵守,請始終使用 echo 咒語檢查正在執行的配置,並將數據庫中載入的內容與您的配置文件進行比較。