如何“修复”设备映射器多路径中的错误路径

如何“修复”设备映射器多路径中的错误路径

我有一个正在运行的多路径配置,但现在显示“错误”路径:

[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.*"如果您真的想确保这一点,您也可以这样做。

完成这些更改后,使用启动脚本 multipath -F 停止 multipathd,这将刷新您的配置,然后再次启动 multipathd。您的配置文件现在应该可用。如果仍然有问题,请重新启动。

如果您怀疑您的配置文件没有被遵守,请务必使用 echo 咒语检查正在运行的配置,并将数据库中加载的内容与您的配置文件进行比较。

相关内容