我有一台 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 是可以接受的。目前我看到以下选项:
- 使用两个 RAID 0 逻辑驱动器制作类似 JBOD 的设置,每个驱动器包含一个物理驱动器,但我不知道它是否有帮助。
- 调整 RAID 控制器,这样我就不会从阵列中排除故障的驱动器,但我不知道如何做到这一点。
答案1
我认为该驱动器有问题。您可以通过该驱动器的 SMART 属性检查这一点。
当 RAID 控制器发现驱动器上存在读/写/验证错误时,它会将此驱动器标记为“故障”。此时驱动器会检测到此错误并启动替换扇区程序。它会增加当前待处理扇区计数器并尝试成功读取坏扇区。成功从坏扇区读取数据后,磁盘会将数据写入预分配扇区,减少当前待处理扇区计数器并增加重新分配扇区计数器。这些 SMART 计数器的非零值表明您的磁盘存在问题。
扇区重新分配过程成功后,RAID 控制器可以成功重建磁盘阵列。
此外,磁盘还具有 SMART 属性,可显示通过接口电缆传输数据时的错误。损坏的电缆可能产生与 RAID 控制器操作相同的症状。但磁盘问题比电缆问题更常见。
请阅读维基百科上的 SMART
答案2
看来我找到了解决方案。目前我的服务器已经正常运行了 4 个月,没有任何问题。以下是我所做的:
- 将 Linux 内核更新至版本 4.15,其中包括用于 RAID 控制器的新 hpsa 内核驱动程序。
- 创建了一个未完全填满硬盘的分区,即在 1 TB 硬盘上的大小为 300 GB。原因是这些 RAID 控制器对小型驱动器(< 500 GB)没有问题。
- 已禁用背景表面扫描。使用命令查询当前设置
ssacli ctrl slot=0 modify surfacescanmode=?
。如果是idle
,则需要disable
使用ssacli
实用程序将其切换到(抱歉,我忘记了命令)。