在当今移动互联的时代,每时每刻都在产生数据,比如一张照片、一条朋友圈、一个位置定位……数据已经成为生活的重要一部分,并涉及日常的方方面面。
在企业中,数据的重要性则显得更具关键意义,因为数据是企业信息化的重要核心,存储的本质即是数据。
在读、写、存储、传输和处理过程中,数据出现了错误,但是错误没有立即检测出来,这种现象叫做静默数据破坏(Silent Data Corruption)。产生静默数据破坏的原因有很多,主要有以下几类:
1.硬件错误:内存、CPU、硬盘、FC或SAS链路等
2.Firmware错误:HBA、RAID控制器、硬盘等
3.软件bug:软件库、操作系统、应用程序、设备驱动等
硬件错误通常能通过ECC或CRC等校验发现,而Firmware错误和软件bug更易产生静默数据破坏。
现实中发生静默数据破坏的实例很多。某知名存储厂商写的《An Analysis of Latent Sector Errors in Disk Drives》一书中,对153万块硬盘进行了长达41个月的统计,一共出现了40万次以上的数据被破坏情况,分布在3855块磁盘上。说明静默损坏并不是一个小概率事件,而是一个常见的事件。作为存储系统,防止静默数据破坏是一个必须的数据保护要求。
硬盘静默故障在全闪存时代仍然存在
全闪存时代,阵列系统在大力度提速的情况下,低时延的背后,系统可靠性依然重点关注数据的一致性和正确性。
相比HDD,SSD会有较多元数据和Cache数据缓存处理,而且存储介质为电子元件(存在Data Retention、颗粒磨损等场景),由于数据经过的通道依然有各个软硬件模块的传递,硬件器件故障、链路故障或软件bug导致的静默错误依然会存在,所以需要有一种技术能处理静默数据故障。华为OceanStor Dorado V3继承了华为高端存储在这方面的一系列技术成果,能有效保证端到端的数据一致性。
如何解决数据静默故障
静默数据破坏成为一个全球共识的问题,因此2003年信息技术标准国际委员会的“T10小组”提出一个解决方案,即Data Integrity Field (DIF),数据完整性区域,对外也叫Protection Information (PI),数据保护信息。
T10 PI(Protection Information)标准是在ANSI T10 SCSI协议中定义的一种数据完整性校验方法,这种校验通过在数据块后增加8字节的保护信息来实现。
DIF字段
DIF主要用来防止和检测静态数据破坏,包括数据通道上的硬件故障和软件bug导致的数据破坏,以及磁盘不可检测和纠正的数据错误等。核心原理就是数据摘要的思想,在数据刚生成的时候根据数据内容计算出摘要信息,插入DIF字段。在后续数据流过的关键通道上设置校验点,如果数据有变动,新计算出的摘要信息一定不会和初始插入的摘要信息吻合,从而知道数据发生了错误。
主机和应用层数据校验推出DIX
传统的DIF数据保护只定义了从IO控制器到存储之间的链路保护,没有涉及主机操作系统以及应用层。因此Oracle基于业务对数据静默损坏防护的需求,将DIF作为Oracle Linux OS和Oracle中的数据保护,称之为DIX(Data Integrity Extensions)。
DIX(Data Integrity Extensions)延伸了PI的保护范围,实现了从应用到主机HBA的数据保护。
DIX+T10 PI(DIF)可以实现从应用到硬盘的端到端数据保护。DIX保证应用、HBA卡的数据完整性,T10 PI (DIF)保证HBA 、阵列和硬盘的数据完整性。
DIX与DIF
华为的全路径数据保护方案
E2E(端到端)的数据保护是由DIX+T10 PI(DIF)组成,DIX主要包含应用为Oracle、OS为Linux等服务器层面。
华为全闪存存储OceanStor Dorado V3支持端到端的PI功能,包含:
1.主机侧对PI的支持(DIX)
2.阵列内部各业务模块对PI的支持(阵列级DIF)
3.后端SAS芯片到盘对PI的支持(硬盘级DIF)
4.SSD盘到NAND Flash对PI的支持(芯片级DIF)
华为后台一致性校验,让数据一致性更加可靠
PI可以有效预防和检测以下错误:
1.写操作时数据写错地址
2.写到磁盘上的数据不完整
3.数据传输通道的链路故障、部件故障或者软件bug导致的数据错误
4.以上情况以外的磁盘不能检测的数据错误
PI虽然可以检测预防阵列内大部分的数据不一致的情况,但也不是包治百病。比如,对于第一次写对但是第二次写错位置的情况就不一定能检测出来,例如write NEW A Wrong(write to C)、read A OK,BUT DATA IS OLD。
比如在第二次写操作完成后,后续的操作首先读到的是C block,就可以发现错误,并可以利用RAID纠正C block的错误,如果是首先读到的A block,那错误就不可避免了。
但是华为OceanStor Dorado V3存储提供了父子校验,数据的DIF部的CRC校验信息会在其元数据节点中保存一份,数据读取时不仅要对数据做DIF校验,还要和其元数据节点中的CRC做校验,以及分条一致性检查功能,可以有效避免上述场景的数据错误,及时识别并修复。
如何打造快速的数据端到端校验
数据校验在每个业务层级都需要进行对应的校验运算,对性能有一定影响,在全闪存这种高性能诉求的场景影响更为明显。
在存储网络层,华为SmartIO接口芯片提供DIF校验算法的硬件卸载,在开启DIF校验后性能几乎不下降,在存储层,华为采用Intel芯片提供的T10 PI CRC算法的硬件加速指令,相对于传统的数据校验算法有10倍以上的效率提升,很好的满足了全闪存存储对于性能和可靠性的诉求。
在SSD内部,华为自研SSD控制芯片集成了DIF校验功能,同时该功能采用硬件卸载的方式,保证了SSD持续处于稳定的低时延。
结合前端网络硬件卸载,CPU硬件加速以及SSD芯片硬件卸载,保障了华为新一代全闪存存储OceanStor Dorado V3在使用DIF提供端到端数据一致性校验后,依然可以提供业界领先的性能以及0.5ms的稳定低时延。
可靠,不能只看单点,华为OceanStor Dorado V3存储提供端到端的数据保护解决方案,带来极致稳定高性能的同时,也为企业数据安全保驾护航。
华为将于2017年9月5-7日在上海举行全联接大会2017,届时将会对华为全闪存做进一步的解读,敬请期待!