光纤通道 LUN 重新扫描和 QLogic

光纤通道 LUN 重新扫描和 QLogic

我在通过光纤通道连接到 Linux 机器的 SAN 存储阵列方面遇到了严重问题。配置如下:

  • Debian 搭载普通 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

    回显“- - -”> /sys/class/scsi_host/host6/scan

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

  4. 重新加载 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

相关内容