waz*_*oox 9 linux storage storage-area-network fibre-channel qlogic
我有一个通过光纤通道连接到 Linux 机器的 SAN 存储阵列的严重问题。这是配置:
基本上问题是:如何得到这个#?@!! FC 控制器/驱动程序可以正确识别存储阵列的配置更改(新的或删除的 LUN)?
rescan-scsi-bus -l -w -r实际上检测到一些东西(一个通用的 /dev/sgXX 设备)但是没有块设备已创建 (/dev/sdXX)。发出 LIP 并手动重新扫描时,同样的事情:
回声 1 > /sys/class/fc_host/host6/issue_lip
echo "- - -" > /sys/class/scsi_host/host6/scan
如果我删除现有的 LUN,则发出 LIP 和重新扫描或 rescan-scsi-bus 都不会产生任何影响。以前的设备保留在那里,当然不起作用(“file -s /dev/sdXX -> I/O error”)。
显然,这是QLogic 的一个非常常见的问题。存在某种解决方案,仅当使用仅适用于 RedHat 和 Suse 企业发行版的 QLogic 发布的驱动程序时才有效:请参阅此说明。
附加信息 :
这是 LIP 和重新扫描之前的 scsi 设备:
# sg_map -x
/dev/sg0 0 0 0 0 0 /dev/sda
/dev/sg1 0 0 1 0 5 /dev/scd0
/dev/sg2 1 0 0 0 0 /dev/sdb
/dev/sg3 6 0 0 0 0 /dev/sdc
/dev/sg4 6 0 0 1 0 /dev/sdd
/dev/sg5 6 0 0 2 3
Run Code Online (Sandbox Code Playgroud)
LIP 和重新扫描后,我有一个新的 sg 设备,但没有匹配的驱动器。如果我重新加载驱动程序,则会出现一个驱动器:
# sg_map -x
/dev/sg0 0 0 0 0 0 /dev/sda
/dev/sg1 0 0 1 0 5 /dev/scd0
/dev/sg2 1 0 0 0 0 /dev/sdb
/dev/sg3 6 0 0 0 0 /dev/sdc
/dev/sg4 6 0 0 1 0 /dev/sdd
/dev/sg5 6 0 0 2 3
/dev/sg6 6 0 0 3 3
~# sg_map -x
/dev/sg0 0 0 0 0 0 /dev/sda
/dev/sg1 0 0 1 0 5 /dev/scd0
/dev/sg2 1 0 0 0 0 /dev/sdb
/dev/sg3 8 0 0 0 0 /dev/sdc
/dev/sg4 8 0 0 1 0 /dev/sdd
/dev/sg5 8 0 0 2 0 /dev/sde
/dev/sg6 8 0 0 3 3
Run Code Online (Sandbox Code Playgroud)
编辑:好的,显然这是一个难以破解的难题。我会询问 LKML 并在此处报告。
如果检测到块设备,但没有创建 /dev/ 设备,您可以手动创建该设备。这不是最佳选择,但可能会让你一瘸一拐。主设备号和次设备号显示在 /proc/partitions 中,您可以通过 mknod 命令创建自己的块设备。
# mknod /dev/sdg4 104 17
Run Code Online (Sandbox Code Playgroud)
然而,我感受到你的痛苦。QLogic 提供 RHEL 和 SUSE 的驱动程序下载,但似乎没有其他发行版。OpenSUSE 可能有 QLogic 品牌的驱动程序,但我不能确定。当我上班时我会仔细检查。
编辑:我正在工作,看来我的 SLES 盒子上的 QLogic 驱动程序都是 QLogic 提供的。他们的操作系统支持网格:
http://filedownloads.qlogic.com/files/Driver/71098/readme_driver_80223.html#os_support
然而,当我下载 bog 标准 2.6.27.25 内核并查看 ./drivers/scsi/qla2xxx/qla_version.h 文件时,它的版本号几乎与我在 Novell 发行版上的版本号相同(SLES 和免费的 openSUSE)。这表明您为 SLES/RHEL 找到的解决方案实际上可能适用于标准 2.6.27.25 内核。