虚拟设备中存在坏块PERC H700集成

我有一个戴尔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 

但所有磁盘都处于固件状态:在线,启动。
另外,在raid中的任何一个磁盘上都没有一个ATA读写错误(我用smartctl -a -d sat+megaraid,N -H /dev/sda检查它们)。 唯一奇怪的是在输出中

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

如何在虚拟驱动器中出现坏块,处于最佳状态,没有磁盘损坏,甚至出现单个错误? 我尝试了“一致性检查”,但成功完成,错误仍在dmesg中。 有人能帮我弄清楚我的突袭有什么问题吗?

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

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

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

SBBM表格不会包含SMART报告的相同“坏”标记,因为标准和方法是非常不同的。

看看你的哪个驱动器使用megacli -LDPDInfo -aAll报告错误,并给它一个更仔细的检查。

我最近得到了这个问题。 arrays上存在“坏块存在:是”的消息,但是所有的LD和PD都没问题。 该数组上有读取错误。

我find了清除fkng表的命令-LDBBMClr

megacli -LDBBMClr -L0 -a0 (根据您的适配器/arrays更改编号)

请不要忘记重新安装文件系统(或重新启动),因为之前的读取错误可能会导致一些问题。