| 导语 随着云业务的扩张和服务器数量的增加,硬盘Media Error的现象也越来越受到用户的关注。本文结合腾讯云海量服务器运营经验,浅谈产生Media Error的原因和硬盘自身容错机制,以及应用层的处理建议。
一、 什么是Media Error
Media Error,有时也称为Medium Error,一般是指硬盘在读操作中遇到了不可纠正的扇区从而无法给host返回准确的数据,对应到SCSI协议KCQ代码为03/11/xx。Media Error的产生意味着即使硬盘自身已经用尽了所有容错手段(如LDPC解码, retry等),该扇区(LBA)的数据已经无法被正确读出。
二、产生Media Error 的原因
Media Error产生的本质原因是硬盘的读写信号处理系统无法对硬盘介质(如HDD的碟片,SSD的NAND)上读取的数据信号进行正确解码。下面分别针对HDD和SSD剖析造成Media Error的几个主要原因。
HDD:
由于极其精密的内部机械构造,当前主流HDD的磁头和碟片之间的距离已经压缩至1nm左右, 外部的轻微干扰都会造成读写信号质量出现波动。HDD产生Media Error的原因主要是以下几种:
以上第4点和第5点是有硬件损伤且不可恢复,一般会造成大量的LBA出现不可恢复读错误,而第1点到第3点都不涉及硬件损耗,可以通过简单的复写恢复。
SSD:
简单来讲,SSD数据读取的过程是通过阈值电压Vt与floating gate里存储的电子相对应的过程,随着SSD P/E的增加,raw BER也会随之增加。
图片来源:IEEE:Flash Correct-and-Refresh: Retention-Aware Error Management for Increased Flash Memory Lifetime
造成SSD产生Media Error的主要原因如下:
图片来源:《The Inconvenient Truths of NAND Flash Memory》
图片来源:《The Inconvenient Truths of NAND Flash Memory》
图片来源:《The Inconvenient Truths of NAND Flash Memory》
图片来源:《The Inconvenient Truths of NAND Flash Memory》
以上第5点是SSD NAND硬件损伤且不可恢复,而第1点到第4点都不涉及硬件损耗,可以通过简单的block擦除与复写恢复。
三、硬盘内的容错机制
为了尽量减少Media Error的发生,硬盘内部有着极其复杂的纠错流程与算法对原始误码(Raw Bit Error)进行纠错, 确保用户数据能够被正确的解码。从产品规格来说,经过层层纠错处理算法后,HDD UBER可以达到10-15, SSD UBER可以达到10-17
HDD:
HDD读取的原始信号是通过磁头将碟片上的磁场极性转化而成的电信号,微弱且嘈杂,无法被识别。得益于HDD强大的PRML(Partial Response Maximum Likelihood)信道处理技术, 微弱嘈杂的模拟电信号经过模拟信号处理,模数转换,数字信号处理以及SOVA-LLR(Soft Output Viterbi Algorithm – Log Likelihood Ratio)检测,LDPC解码等一系列高精尖的信号处理技术,转变为误码率极低的用户数据。然而,即使拥有如此强大的信号处理系统,某些扇区也会出现不可恢复的错误,所以HDD也拥有复杂的扇区级retry算法,通过各种方式对不可恢复的扇区进行重解码尝试,包括重读,噪声补偿,磁头偏移,参数调节等不同级别的retry 步骤。除此之外,在新的HDD技术中,也引入了类似盘内RAID校验的思路,每条磁道的末尾有会校验扇区,当该磁道出现多个扇区不可读时,可以通过检验扇区来重构不可恢复的扇区,从而实现盘内同磁道多扇区校验与恢复的作用。
SSD:
SSD虽然不像HDD需要进行复杂的模数信号处理,但内部也有着一套完整的错误校验与修复机制。当host从NAND读取到数据后,SSD内部会有一些列的ECC校验,LDPC校验,盘内“RAID”校验, retry等多种纠错步骤,以确保读出正确的数据。只有当所有的手段都失效后,SSD才会上报Media Error, 告知host原始数据无法被恢复。
四、Media Error发生的场景
通常情况下,Media error发生于硬盘自检与host主动读取两种场景下。
五、Media Error的常见误区
六、应用层Media Error容错方案建议
如前文所述,当硬盘上报Media Error,则表示着该硬盘对应的LBA数据已经无法恢复,那么从应用层的角度就需要对数据进行多副本备份与修复。