虚拟设备 PERC H700 Integrated 中存在坏块

虚拟设备 PERC H700 Integrated 中存在坏块

我有一台带有 PERC H700 集成控制器的 DELL 服务器。我已经用 12 个硬盘创建了 RAID5,并且虚拟设备处于最佳状态,但在 Linux 下我收到以下错误:

sd 0:2:0:0: [sda] Unhandled error code
sd 0:2:0:0: [sda]  Result: hostbyte=0x07 driverbyte=0x00
sd 0:2:0:0: [sda] CDB: cdb[0]=0x88: 88 00 00 00 00 07 22 50 bd 98 00 00 00 08 00 00
end_request: I/O error, dev sda, sector 30640487832
sd 0:2:0:0: [sda] Unhandled error code
sd 0:2:0:0: [sda]  Result: hostbyte=0x07 driverbyte=0x00
sd 0:2:0:0: [sda] CDB: cdb[0]=0x88: 88 00 00 00 00 07 22 50 bd 98 00 00 00 08 00 00
end_request: I/O error, dev sda, sector 30640487832
sd 0:2:0:0: [sda] Unhandled error code
sd 0:2:0:0: [sda]  Result: hostbyte=0x07 driverbyte=0x00
sd 0:2:0:0: [sda] CDB: cdb[0]=0x88: 88 00 00 00 00 07 22 50 bc e0 00 00 01 00 00 00
end_request: I/O error, dev sda, sector 30640487648

但所有磁盘都处于固件状态:在线、启动。
此外,磁盘阵列中的任何磁盘都没有出现任何 ATA 读取或写入错误(我用 进行了检查smartctl -a -d sat+megaraid,N -H /dev/sda)。唯一奇怪的是

megacli:
megacli -LDInfo -L0 -a0
...
Bad Blocks Exist: Yes

虚拟驱动器处于最佳状态,没有磁盘损坏,甚至没有一个错误,怎么会有坏块呢?我尝试了“一致性检查”,但它成功完成了,错误仍然出现在 dmesg 中。有人能帮我找出我的 raid 出了什么问题吗?

答案1

MegaCLI 的“存在​​坏块”指示指的是软坏块管理表,其工作方式如下(引自MegaRaid 文档):

如果 CU 在重建期间检测到源驱动器上的介质错误,它会启动对该块的扇区读取。如果扇区读取失败,CU 会将条目添加到软坏块管理 (SBBM) 表,将此表写入目标驱动器,并显示错误消息。

如果 SBBM 表已满 80% 或 100%,则会显示其他错误消息。如果 SBBM 表已满,则重建操作将中止,并且驱动器将被标记为 FAIL。

SBBM 表不会包含与 SMART 报告相同的“不良”标记,因为标准和行动方法非常不同。

查看哪个驱动器正在报告使用错误,megacli -LDPDInfo -aAll并进行仔细检查。

答案2

我最近遇到了这个问题。阵列上有“存在坏块:是”消息,但所有 LD 和 PD 都正常。该阵列上的读取有错误。

我找到了-LDBBMClr清除该表的命令。

megacli -LDBBMClr -L0 -a0 (根据您的适配器/阵列更改数字)

请不要忘记重新挂载文件系统(或重新启动),因为之前的读取错误可能会在以后引起一些问题。

相关内容