HP SmartArray P400i 将一个好的驱动器标记为故障,我该怎么办?

HP SmartArray P400i 将一个好的驱动器标记为故障,我该怎么办?

我有一台 HP ProLiant DL360 G5 服务器,配有 SmartArray P400i RAID 控制器。服务器本身相当老旧,但仍能正常工作。唯一的问题是 RAID 控制器,它会将好的驱动器标记为故障。这种情况经常发生,几乎每天都会发生。以下是ssacli实用程序的典型输出:

# ssacli ctrl all show config
...
   Array A (SATA, Unused Space: 0  MB)

      logicaldrive 1 (931.5 GB, RAID 1, Interim Recovery Mode)

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SATA HDD, 1 TB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SATA HDD, 1 TB, Failed)

详细资料:

# ssacli ctrl slot=0 pd 1I:1:2 show detail

Smart Array P400i in Slot 0 (Embedded)

   Array A

      physicaldrive 1I:1:2
         Port: 1I
         Box: 1
         Bay: 2
         Status: Failed
         Last Failure Reason: Not ready bad sense
         Drive Type: Data Drive
         Interface Type: SATA
         Size: 1 TB
         Drive exposed to OS: False
         Logical/Physical Block Size: 512/512
         Firmware Revision: SN03
         Serial Number: ...
         WWID: ...
         Model: ATA     ST91000640NS
         SATA NCQ Capable: True
         SATA NCQ Enabled: True
         PHY Count: 1
         PHY Transfer Rate: 1.5Gbps
         Sanitize Erase Supported: False
         Shingled Magnetic Recording Support: None

重新启动服务器后,RAID 控制器会再次检测到驱动器,将其标记为 OK,然后重建阵列。阵列运行良好,直到下一次发生故障。我不知道为什么会发生这种情况。有没有办法在不购买新的 RAID 或 HBA 控制器的情况下解决这个问题?SoftRAID 是可以接受的。目前我看到以下选项:

  1. 使用两个 RAID 0 逻辑驱动器制作类似 JBOD 的设置,每个驱动器包含一个物理驱动器,但我不知道它是否有帮助。
  2. 调整 RAID 控制器,这样我就不会从阵列中排除故障的驱动器,但我不知道如何做到这一点。

答案1

我认为该驱动器有问题。您可以通过该驱动器的 SMART 属性检查这一点。

当 RAID 控制器发现驱动器上存在读/写/验证错误时,它会将此驱动器标记为“故障”。此时驱动器会检测到此错误并启动替换扇区程序。它会增加当前待处理扇区计数器并尝试成功读取坏扇区。成功从坏扇区读取数据后,磁盘会将数据写入预分配扇区,减少当前待处理扇区计数器并增加重新分配扇区计数器。这些 SMART 计数器的非零值表明您的磁盘存在问题。

扇区重新分配过程成功后,RAID 控制器可以成功重建磁盘阵列。

此外,磁盘还具有 SMART 属性,可显示通过接口电缆传输数据时的错误。损坏的电缆可能产生与 RAID 控制器操作相同的症状。但磁盘问题比电缆问题更常见。

请阅读维基百科上的 SMART

答案2

看来我找到了解决方案。目前我的服务器已经正常运行了 4 个月,没有任何问题。以下是我所做的:

  1. 将 Linux 内核更新至版本 4.15,其中包括用于 RAID 控制器的新 hpsa 内核驱动程序。
  2. 创建了一个未完全填满硬盘的分区,即在 1 TB 硬盘上的大小为 300 GB。原因是这些 RAID 控制器对小型驱动器(< 500 GB)没有问题。
  3. 已禁用背景表面扫描。使用命令查询当前设置ssacli ctrl slot=0 modify surfacescanmode=?。如果是idle,则需要disable使用ssacli实用程序将其切换到(抱歉,我忘记了命令)。

相关内容