![虚拟设备 PERC H700 Integrated 中存在坏块](https://linux22.com/image/796192/%E8%99%9A%E6%8B%9F%E8%AE%BE%E5%A4%87%20PERC%20H700%20Integrated%20%E4%B8%AD%E5%AD%98%E5%9C%A8%E5%9D%8F%E5%9D%97.png)
我有一台带有 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
(根据您的适配器/阵列更改数字)
请不要忘记重新挂载文件系统(或重新启动),因为之前的读取错误可能会在以后引起一些问题。