回归

回归

由于将连接到 LSI SAS 2008 控制器的驱动器设置为“待机状态下启动”,因此不再检测到这些驱动器。待机模式下的开机也称为 PUIS、POIS 或“ATA6 待机模式下的开机”。

在 Super Micro X8SI6-F BIOS 中,“Load onboard SAS Option Rom”设置为“Disabled”。

使用以下命令禁用引导期间加载内核模块 mpt2sas:echo 'blacklist mpt2sas' >> /etc/modprobe.d/mpt2sas.conf; depmod; update-initramfs -u -k $(uname -r)

modprobe mpt2sas在 /etc/rc.local 中完成

驱动器上的 PUIS 是使用“ /sbin/hdparm -s1 --yes-i-know-what-i-am-doing /dev/sdX”设置的

# tail /var/log/messages
Dec 19 21:07:21 debian kernel: [   14.503509] mpt2sas0: Scatter Gather Elements per IO(128)
Dec 19 21:07:22 debian kernel: [   14.735785] mpt2sas0: LSISAS2008: FWVersion(14.00.01.00), ChipRevision(0x03), BiosVersion(07.27.00.00)
Dec 19 21:07:22 debian kernel: [   14.735878] mpt2sas0: Protocol=(Initiator), Capabilities=(Raid,TLR,EEDP,Snapshot Buffer,Diag Trace Buffer,Task Set Full,NCQ)
Dec 19 21:07:22 debian kernel: [   14.736748] mpt2sas0: sending port enable !!
Dec 19 21:07:22 debian kernel: [   15.294663] e1000e: eth0 NIC Link is Up 100 Mbps Full Duplex, Flow Control: None
Dec 19 21:07:22 debian kernel: [   15.294759] e1000e 0000:03:00.0: eth0: 10/100 speed: disabling TSO
Dec 19 21:07:22 debian kernel: [   15.296146] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Dec 19 21:07:23 debian kernel: [   16.257786] mpt2sas0: host_add: handle(0x0001), sas_addr(0x5003048007abbc00), phys(8)
Dec 19 21:12:22 debian kernel: [  314.234004] mpt2sas0: port enable: FAILED with timeout (timeout=300s)
Dec 19 21:12:54 debian kernel: [  346.439736] mpt2sas0: expander_add: handle(0x0009), parent(0x0001), sas_addr(0x50014380182cf0e6), phys(37)

# tail -n40 /var/log/syslog
Dec 19 21:41:11 debian kernel: [  240.376096] INFO: task modprobe:1341 blocked for more than 120 seconds.
Dec 19 21:41:11 debian kernel: [  240.376171] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Dec 19 21:41:11 debian kernel: [  240.376263] modprobe      D 0000000000000000     0  1341   1287 0x00000000
Dec 19 21:41:11 debian kernel: [  240.376414]  ffff88023f06b880 0000000000000082 0000000000000000 000000000000bfc5
Dec 19 21:41:11 debian kernel: [  240.376656]  0000000000000096 ffffffff8104e54b 000000000000f9e0 ffff88023d681fd8
Dec 19 21:41:11 debian kernel: [  240.376895]  0000000000015780 0000000000015780 ffff88023bc80000 ffff88023bc802f8
Dec 19 21:41:11 debian kernel: [  240.377134] Call Trace:
Dec 19 21:41:11 debian kernel: [  240.377204]  [<ffffffff8104e54b>] ? release_console_sem+0x17e/0x1af
Dec 19 21:41:11 debian kernel: [  240.377278]  [<ffffffff8105aeba>] ? __mod_timer+0x141/0x153
Dec 19 21:41:11 debian kernel: [  240.377350]  [<ffffffff812fbec4>] ? schedule_timeout+0xa5/0xdd
Dec 19 21:41:11 debian kernel: [  240.377422]  [<ffffffff8105aa34>] ? process_timeout+0x0/0x5
Dec 19 21:41:11 debian kernel: [  240.377492]  [<ffffffff812fbd04>] ? wait_for_common+0xde/0x15b
Dec 19 21:41:11 debian kernel: [  240.377566]  [<ffffffff8104a461>] ? default_wake_function+0x0/0x9
Dec 19 21:41:11 debian kernel: [  240.377647]  [<ffffffffa021d6e1>] ? _base_make_ioc_operational+0x929/0xa6f [mpt2sas]
Dec 19 21:41:11 debian kernel: [  240.377743]  [<ffffffffa021fa85>] ? mpt2sas_base_attach+0xb73/0xc61 [mpt2sas]
Dec 19 21:41:11 debian kernel: [  240.377817]  [<ffffffff810412ee>] ? enqueue_task_fair+0x3e/0x82
Dec 19 21:41:11 debian kernel: [  240.377889]  [<ffffffff8103a311>] ? enqueue_task+0x5f/0x68
Dec 19 21:41:11 debian kernel: [  240.377956]  [<ffffffff8103a403>] ? activate_task+0x22/0x28
Dec 19 21:41:11 debian kernel: [  240.378037]  [<ffffffffa0222e21>] ? _scsih_probe+0x32c/0x501 [mpt2sas]
Dec 19 21:41:11 debian kernel: [  240.378115]  [<ffffffff811a2d46>] ? local_pci_probe+0x12/0x16
Dec 19 21:41:11 debian kernel: [  240.378188]  [<ffffffff811a3996>] ? pci_device_probe+0xc0/0xe9
Dec 19 21:41:11 debian kernel: [  240.378263]  [<ffffffff81221520>] ? driver_probe_device+0xa3/0x14b
Dec 19 21:41:11 debian kernel: [  240.378333]  [<ffffffff81221617>] ? __driver_attach+0x4f/0x6f
Dec 19 21:41:11 debian kernel: [  240.378404]  [<ffffffff812215c8>] ? __driver_attach+0x0/0x6f
Dec 19 21:41:11 debian kernel: [  240.378477]  [<ffffffff81220def>] ? bus_for_each_dev+0x43/0x74
Dec 19 21:41:11 debian kernel: [  240.378549]  [<ffffffff812207af>] ? bus_add_driver+0xaf/0x1f8
Dec 19 21:41:11 debian kernel: [  240.378621]  [<ffffffff812218cf>] ? driver_register+0xa7/0x111
Dec 19 21:41:11 debian kernel: [  240.378698]  [<ffffffffa015f000>] ? _scsih_init+0x0/0x112 [mpt2sas]
Dec 19 21:41:11 debian kernel: [  240.378772]  [<ffffffff811a3bdc>] ? __pci_register_driver+0x50/0xb8
Dec 19 21:41:11 debian kernel: [  240.378849]  [<ffffffffa015f000>] ? _scsih_init+0x0/0x112 [mpt2sas]
Dec 19 21:41:11 debian kernel: [  240.378928]  [<ffffffffa015f0fc>] ? _scsih_init+0xfc/0x112 [mpt2sas]
Dec 19 21:41:11 debian kernel: [  240.379002]  [<ffffffff8100a065>] ? do_one_initcall+0x64/0x174
Dec 19 21:41:11 debian kernel: [  240.379072]  [<ffffffff8107ab54>] ? sys_init_module+0xc5/0x21a
Dec 19 21:41:11 debian kernel: [  240.379144]  [<ffffffff81010b42>] ? system_call_fastpath+0x16/0x1b
Dec 19 21:42:18 debian kernel: [  307.313037] mpt2sas0: _base_send_port_enable: timeout
Dec 19 21:42:18 debian kernel: [  307.313106] mpt2sas0: port enable: FAILED
Dec 19 21:42:18 debian kernel: [  307.313171] mpt2sas0: sending diag reset !!
Dec 19 21:42:19 debian kernel: [  308.430890] mpt2sas0: diag reset: SUCCESS
Dec 19 21:42:19 debian kernel: [  308.431001] mpt2sas 0000:01:00.0: PCI INT A disabled
Dec 19 21:42:19 debian kernel: [  308.431102] mpt2sas0: failure at /build/buildd-linux-2.6_2.6.32-46-amd64-_ApuPc/linux-2.6-2.6.32/debian/build/source_amd64_none/drivers/scsi/mpt2sas/mpt2sas_scsih.c:6021/_scsih_probe()!

回归

使用 Debian Linux 内核进行测试:

  1. Linux debian 2.6.32-5-amd64 #1 SMP 2012 年 9 月 23 日星期日 10:07:46 UTC 2012 x86_64
  2. BPO.3(Linux debian 3.2.0-0.bpo.3-amd64 #1 SMP 8 月 23 日星期四 07:41:30 UTC 2012 x86_64)
  3. BPO.4 (Linux debian 3.2.0-0.bpo.4-amd64 #1 SMP Debian 3.2.32-1~bpo60+1 x86_64)

在启用 SAS BIOS 的情况下进行测试 = 没有变化。

超时后,bpo.3 和 bpo4。冻结。即使 PgUp/PgDown 键在控制台上也不起作用。

modinfo /lib/modules/2.6.32-5-amd64/kernel/drivers/scsi/mpt2sas/mpt2sas.ko | grep ^version:
version:        02.100.03.00

更新 #1:在 BIOS 和固件升级适配器上使用 LSI 驱动程序版本 15.00.00.00 进行测试:

mpt2sas0: LSISAS2008: FWVersion(15.00.00.00), ChipRevision(0x03), BiosVersion(07.29.00.00)
mpt2sas0: port enable: FAILED with timeout (timeout=300s)

使用 mpt2sas 驱动程序版本 15 启动后,系统冻结了 3492 秒。通过刷新 IT 固件可以解决冻结问题。

更新#2:一些更详细的 SMP 报告

# smp_rep_phy_err_log /dev/bsg/expander-0\:0 -vvv
    Report phy error log request: 40 11 06 02 00 00 00 00 00 00 00 00 00 00 00 00 
Report phy error log response:
  Expander change count: 303
  phy identifier: 0
  invalid dword count: 18518
  running disparity error count: 18492
  loss of dword synchronization count: 2
  phy reset problem count: 0

# smp_rep_phy_err_log /dev/bsg/expander-0\:1 -vvv
    Report phy error log request: 40 11 06 02 00 00 00 00 00 00 00 00 00 00 00 00 
Report phy error log response:
  Expander change count: 715
  phy identifier: 0
  invalid dword count: 36103
  running disparity error count: 35004
  loss of dword synchronization count: 4
  phy reset problem count: 0

# smp_rep_phy_sata --phy=5 /dev/bsg/expander-0\:0 -vvv
    Report phy SATA request: 40 12 10 02 00 00 00 00 00 05 00 00 00 00 00 00 
Report phy SATA response:
  expander change count: 303
  phy identifier: 5
  STP I_T nexus loss occurred: 0
  affiliations supported: 1
  affiliation valid: 1
  STP SAS address: 0x50014380182cf0c5
  register device to host FIS:
    34 00 50 01 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 
  affiliated STP initiator SAS address: 0x5003048007abbc00
  STP I_T nexus loss SAS address: 0x0
  affiliation context: 0
  current affiliation contexts: 1
  maximum affiliation contexts: 1

# smp_rep_exp_route_tbl /dev/bsg/expander-0\:0 -vvv
    Report expander route table request: 
      40 22 ff 06 00 00 00 00  00 3e 00 00 00 00 00 00 
      00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 
Report expander route table response header:
  expander change count: 303
  expander route table change count: 1
  self configuring: 0
  zone configuring: 0
  configuring: 0
  zone enabled: 0
  expander route table descriptor length: 4 dwords
  number of expander route table descriptors: 0
  first routed SAS address index: 0
  last routed SAS address index: 0
  starting phy id: 0

更新#3:在 mpt2sas.ko 中启用详细日志记录,并dev.scsi.logging_level = 0x180000F1/etc/sysctl.conf.结果 /var/log/messages 输出:

debian kernel: [    0.927392] setting logging_level(0x00080000)
debian kernel: [    1.591808] mpt2sas0: sending port enable !!
debian kernel: [    3.113480] mpt2sas0: host_add: handle(0x0001), sas_addr(0x5003048007abbc00), phys(8)
debian kernel: [    3.124224] mpt2sas0: expander_add: handle(0x0009), parent(0x0001), sas_addr(0x50014380182cf0e6), phys(37)
debian kernel: [    3.137436] mpt2sas0: detecting: handle(0x000a), sas_address(0x50014380182cf0c0), phy(0)
debian kernel: [    3.137520] mpt2sas0: REPORT_LUNS: handle(0x000a), retries(0)
debian kernel: [    8.127417] mf:
debian kernel: [    8.127417]   0000000a 00000000 00000000 3a580000 00600000 00000018 00000000 000007f8 
debian kernel: [    8.127842]   00000000 0000000c 00000000 00000000 00000000 00000000 00000000 02000000 
debian kernel: [    8.128261]   000000a0 00000000 0000f807 00000000 00000000 00000000 00000000 00000000 
debian kernel: [    8.128679]   d30007f8 3c3a7000 00000002 00000000 
debian kernel: [    8.128980] mpt2sas0: issue target reset: handle(0x000a)
debian kernel: [    8.352363] mpt2sas0: log_info(0x31111000): originator(PL), code(0x11), sub_code(0x1000)
debian kernel: [    8.352500] mpt2sas0: target reset completed: handle(0x000a)
debian kernel: [    8.352563] mpt2sas0: issue retry: handle (0x000a)
debian kernel: [   11.347175] mpt2sas0: log_info(0x31111000): originator(PL), code(0x11), sub_code(0x1000)
debian kernel: [   11.347276] mpt2sas0: TEST_UNIT_READY: handle(0x000a), lun(0)
debian kernel: [   14.591621] mpt2sas0: log_info(0x31111000): originator(PL), code(0x11), sub_code(0x1000)
debian kernel: [   14.591720] mpt2sas0: SATA Initialization Timeout,sending a retry
debian kernel: [   14.591785] mpt2sas0: TEST_UNIT_READY: handle(0x000a), lun(0)
debian kernel: [   17.586480] mpt2sas0: log_info(0x31111000): originator(PL), code(0x11), sub_code(0x1000)
debian kernel: [   17.586836] mpt2sas0: detecting: handle(0x000b), sas_address(0x50014380182cf0c1), phy(1)

更新#4:当 PUIS = 禁用时,无超时且驱动器初始化正确。

其他适配器(例如 HP Smart Array P410/256MB 控制器 (462862-B21) 和 Highpoint Rocket 2720SGL)的 BIOS 也无法检测到任何 PUIS/POIS Hitachi 驱动器。 Highpoint 控制器 BIOS 表示它正在启动第 1 组,但仍然无法检测到扩展器后面的任何驱动器。

如何使用 LSISAS2008 控制器检测 HP SAS 扩展器后面处于 POIS/PUIS 模式的驱动器?

答案1

禁用 PUIS 后它还能工作吗?

端口启用失败的事实可能表明存在 HBA 问题,但驱动器上的目标重置 (log_info 0x31111000) 表明您在某些情况下启用了端口,但驱动器无法响应。这可能是由于 PUIS 条件造成的,它们根本没有初始化。

通常,当 SAS 扩展器后面有磁盘时,扩展器将承担唤醒它们的任务。您可以尝试使用 sg_ses 实用程序获取扩展器的状态,看看它的想法。

您在 SMP 中显示的错误可能表明某处存在电缆问题。磁盘上没有错误,但从扩展器到启动器的电缆上确实有错误。您也应该检查该选项。

log_info 0x31111000 解码为:

./lsi_decode_loginfo.py 0x31111000
Value       31111000h
Type:       30000000h   SAS 
Origin:     01000000h   PL 
Code:       00110000h   PL_LOGINFO_CODE_RESET See Sub-Codes below (PL_LOGINFO_SUB_CODE)
Sub Code:   00001000h   PL_LOGINFO_SUB_CODE_DSCVRY_SATA_INIT_TIMEOUT 

答案2

将 LSI SAS 2008 控制器替换为 Highpoint Rocket 2720SGL。

此 Rocket 2720SGL 适配器包含 Marvell 4.0.0.15 BIOS。此 BIOS 不会启动 PUIS/POIS 驱动器。

这不是问题,因为HighPoint Marvell 4.0.0.1528N 开源 Linux 驱动它的make命令确实创建了一个 mv94xx.ko 内核模块,该模块能够启动 PUIS/POIS 驱动器,也在 HP SAS 扩展器 V2.08 后面。现在 Debian 中已有 /dev/sdXX 设备可用。

因此,可以禁用 Marvell BIOS,从而缩短启动时间。


注意#1:Highpoint Rocket 2720SGL 不是 RocketRAID 2720SGL。
RocketRAID包含Highpoint BIOS,Rocket包含Marvell BIOS。

注意#2:使用另一个基于 Marvell 88SE9485 的芯片 [1b4b:9485],例如 Supermicro SAS2LP-MV8,带有库存模块mvsas.ko(版本 0.8.16,Marvell 88SE6440 SAS/SATA 控制器驱动程序),在端口 6C 上连接驱动器时会挂起内核, HP SAS 扩展器的 7C 和 8C,以及运行最新内核版本(如 Ubuntu 3.12.25、3.13.0、3.13.11)时,在端口 5C 和 9C 上“无法获取诊断页 0x8000002”、“无法绑定存储设备 -19”、 3.16.0rc6 和 3.16.0-999,日期为 24072014。

答案3

在我看来,好像您必须在这种状态下发出 SCSI 启动命令。也许启用您的 SCSI-BIOS 就可以做到这一点 - 有时每个 SCSI-id 都有一个用于“启动单元”是/否的选项。

答案4

使用 IT 固件刷新 LSI SAS2008 适配器

当 LSI2008 卡处于启动器-目标 (IT) 模式而不是关闭(默认)IR 模式时,mpt2sas 驱动程序的响应有所不同。例如,“端口启用处于活动状态时报告设备”仅在 IT 模式下启用,具体如下http://www.spinics.net/lists/linux-scsi/msg55063.html

Super Micro X8SI6-F 主板默认为 IR 固件。从 DOS 系统格式化的 U 盘启动并发出命令后:

> sas2flsh.exe -o -e 6

不要重新启动

> sas2flsh.exe -o -b mptsas2.rom -f 2118ir.bin

现在重新启动

内核 2.6.32-5-amd64 中的 mpt2sas 驱动程序版本 15.00.00.00 不再冻结,但仍然存在“端口启用:失败并超时(超时 = 300 秒)”消息。它未检测到任何驱动器,控制台现在充满了 REPORT_LUNS、TEST_UNIT_READY、SATA 初始化超时,发送重试,检测:handle(0x00XX)、sas_address(0x5001438018XXXXX) 消息。

注意:仍然无法检测到 SAS 扩展器后面的驱动器。

相关内容