光纤通道 LUN 重新扫描和 QLogic

waz*_*oox 9 linux storage storage-area-network fibre-channel qlogic

我有一个通过光纤通道连接到 Linux 机器的 SAN 存储阵列的严重问题。这是配置:

  • Debian 与普通 vanilla linux 2.6.27.25
  • 光纤控制器 QLogic 4Gb 双端口(基于 ISP2432)

基本上问题是:如何得到这个#?@!! FC 控制器/驱动程序可以正确识别存储阵列的配置更改(新的或删除的 LUN)?

  1. 当我在我的阵列上创建一个新的 LUN(通常是一些现有 LUN 的快照)并将它映射到我的 HBA 时,我无法正确识别它:rescan-scsi-bus -l -w -r实际上检测到一些东西(一个通用的 /dev/sgXX 设备)但是没有块设备已创建 (/dev/sdXX)。
  2. 发出 LIP 并手动重新扫描时,同样的事情:

    回声 1 > /sys/class/fc_host/host6/issue_lip

    echo "- - -" > /sys/class/scsi_host/host6/scan

  3. 如果我删除现有的 LUN,则发出 LIP 和重新扫描或 rescan-scsi-bus 都不会产生任何影响。以前的设备保留在那里,当然不起作用(“file -s /dev/sdXX -> I/O error”)。

  4. 重新加载 qla2xxx 驱动程序有效。但是在生产环境中是完全行不通的。

显然,这是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 并在此处报告。

sys*_*138 2

如果检测到块设备,但没有创建 /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 内核。