我有一个正在工作但现在显示“错误”路径的多路径配置:
[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 看起来像这样:
SCSI 查询要求供应商字段不超过 8 个以 ASCII 零结尾的字符,如果您不使用全部 8 个字符,则必须用空格填充该字段以达到 8 个字符。Multipathd 正在根据法律条文解释规范,
"XIOTECH.*"
如果您真的想确定,您也可以这样做。进行这些更改后,使用 initscripts 停止 multipathd,multipath -F 将刷新您的配置,然后再次启动 multipathd。您的配置文件现在应该得到尊重。如果仍有问题,请重新启动。
如果您怀疑您的配置文件没有被使用,请始终使用 echo 咒语检查正在运行的配置,并将数据库中加载的内容与您的配置文件进行比较。