我在通过光纤通道连接到 Linux 机器的 SAN 存储阵列方面遇到了严重问题。配置如下:
- Debian 搭载普通 Linux 2.6.27.25
- 光纤控制器 QLogic 4Gb 双端口(基于 ISP2432)
基本上问题是:如何让这个 #?@!! FC 控制器/驱动程序正确识别存储阵列的配置更改(新的或已删除的 LUN)?
- 当我在阵列上创建一个新的 LUN(通常是某些现有 LUN 的快照)并将其映射到我的 HBA 时,我无法正确识别它:
rescan-scsi-bus -l -w -r
实际上检测到某些东西(通用 /dev/sgXX 设备)但是没有创建块设备(/dev/sdXX)。 发布 LIP 并手动重新扫描时也会发生同样的事情:
回显 1 > /sys/class/fc_host/host6/issue_lip
回显“- - -”> /sys/class/scsi_host/host6/scan
如果我删除现有 LUN,则发出 LIP 和重新扫描或重新扫描 scsi-bus 都不起作用。以前的设备仍留在那里,当然不起作用(“file -s /dev/sdXX -> I/O 错误”)。
- 重新加载 qla2xxx 驱动程序有效。然而,在生产环境中,这完全行不通。
显然这是QLogic 的一个常见问题。存在某种解决方案,仅在使用 QLogic 发布的驱动程序时才有效,该驱动程序仅适用于 RedHat 和 Suse 企业发行版:请参阅这个解释。
附加信息 :
以下是 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
经过 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
编辑:好的,显然这是一个难题。我会询问 LKML 并在这里报告。
答案1
万一检测到了块设备,但没有创建 /dev/ 设备,您可以手动创建该设备。这不是最佳选择,但可能会让您一瘸一拐。主设备号和次设备号显示在 /proc/partitions 中,您可以通过 mknod 命令创建自己的块设备。
# mknod /dev/sdg4 104 17
但是,我理解你的痛苦。QLogic 为 RHEL 和 SUSE 提供驱动程序下载,但似乎没有其他发行版。OpenSUSE 可能有 QLogic 品牌的驱动程序,但我不确定。上班时我会仔细检查。
编辑:我正在工作,看来我的 SLES 盒子上的 QLogic 驱动程序都是 QLogic 提供的。它们的操作系统支持网格:
http://filedownloads.qlogic.com/files/Driver/71098/readme_driver_80223.html#os_support
然而,当我下载标准版 2.6.27.25 内核并查看 ./drivers/scsi/qla2xxx/qla_version.h 文件时,它几乎与我的 Novell 发行版(SLES 和免费的 openSUSE)上的版本号相同。这表明您为 SLES/RHEL 找到的解决方案实际上可能适用于标准 2.6.27.25 内核。
答案2
嘿 Wazoox 我在使用 SAN 盒时也遇到了同样的问题,我有谷歌搜索和一些以下提示,如果可以尝试,我认为它会开始工作 1 有一个工具叫做 emcgrab 工具,您可以运行此工具来找出您的 qlogic 驱动程序是否正常工作。
您使用哪款 san box?