光纤通道LUN重新扫描和QLogic

通过光纤通道连接到Linux的SAN存储arrays存在严重问题。 这是configuration:

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

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

  1. 当我在arrays上创build一个新的LUN(通常是一些现有LUN的快照)并将其映射到我的HBA时,我无法正确识别它: rescan-scsi-bus -l -w -r实际上检测到某物通用的/ dev / sgXX设备),但是没有创build块设备(/ dev / sdXX)。
  2. 发出LIP并手动重新扫描时也是如此:

    echo 1> / sys / class / fc_host / host6 / issue_lip

    echo“ – / – ”> / sys / class / scsi_host / host6 / scan

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

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

显然这是QLogic的一个非常普遍的问题 。 某种解决scheme仅在使用仅适用于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 

在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并在这里报告。

在检测到块设备的机会中,没有正在创build/ dev /设备的情况下,可以手动创build设备。 这不是最佳的,但可能会跛行你。 主要和次要编号在/ proc / partitions中,您可以通过mknod命令创build自己的块设备。

  # mknod /dev/sdg4 104 17 

但是,我感到你的痛苦。 QLogic为RHEL和SUSE提供驱动程序下载,但似乎没有其他发行版。 OpenSUSE可能只有QLogic品牌的驱动程序,但我无法确定。 上class时我会仔细检查一下。

编辑 :我在工作,看来我的SLES盒子上的QLogic驱动程序都是由QLogic提供的。 他们的OS支持网格:

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)。 这表明您find的SLES / RHEL解决scheme实际上可以使用标准的2.6.27.25内核。