DIX技术和T10 PI技术

Posted msdnchina

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DIX技术和T10 PI技术相关的知识,希望对你有一定的参考价值。

转自:http://forum.huawei.com/enterprise/thread-388319.html


DIF技术
数据一致性DIX T10 PI
静默数据破坏(Silent Data Corruption):数据在存储系统传输中,经过了多个部件、多种传输通道和复杂的软件处理,其中任意一个错误都可能会导致数据错误。但是这种错误无法被立即检测出来,而是后续应用在访问数据过程中才发现数据已经出错。产生静默数据破坏的原因:
        硬件错误:内存、CPU、硬盘、数据传输链路等
        Firmware错误:HBA、硬盘等
        软件bug:系统软件、操作系统、应用程序等
数据完整性(8字节校验数据分若干段):


ANSI T10定义了一种通过对每个数据块加入保护信息(PI:Protection Information)也曾被称作数据完整性域(DIF:Data Integrity Field)的方法来保护数据完整性。在T10 PI标准中,每个逻辑扇区被扩充了8字节的保护信息,包括2字节的Logical Block Guard,2字节的Logical Block Application Tag和4字节的Logical Block Reference Tag。


T10 PI只包含了从主机HBA卡通过存储阵列到硬盘的数据保护,Oracle和Emulex主导开发了Data Integrity Extension(DIX)技术,将数据完整性保护扩充到了从应用层到HBA。DIX使用和T10 PI一样的8字节数据完整性信息作为数据校验字段。不同的是,DIX中使用了IP Checksum作为Logical Block Guard,以降低主机CPU的计算开销。


写数据时,当数据写到主机内存的时候,Oracle ASM library会对每512字节数据增加8字节DIX校验
8字节校验会随IO请求一起,穿过OS,到达HBA卡驱动
HBA卡进行DIX校验检查后删除DIX校验,并生成8字节PI校验和数据一起发送给阵列
阵列校验数据完整性,并将数据发送到硬盘;


ANSI T10 PI标准提供了一种方法来检查数据读、写过程中的数据完整性。这种检查通过T10标准中定义的数据完整性字段来实现。
* DIF(Data Integrity Field)已经更名为PI(Protection Information)


2007年,Emulex、Oracle、LSI、希捷成立了DII(Data Integrity Initiative)。SNIA建立了DITWG(SNIA Data Integrity Working Group)。主要关注两个技术:
T10 Protection Information—DIF
Data Integrity Extensions—DIX
DIX
Data Integrity Extensions,为了延伸DIF的保护范围,DIX+DIF可以实现从应用到硬盘的端到端数据保护。
为降低GUARD的运算开销,DIX通常使用IP checksum算法
DIX实现中(linux内核实现),数据和PI部分在内存中是分离的
HBA负责DIX<->PI的转换

读数据时,从硬盘读出数据和T10 PI并校验完整性。若发现错误,则通过RAID重建修复数据。
HBA进行T10 PI校验后删除T10 PI,并生成DIX保护信息返回主机。
DIX保护信息会随IO请求一起,穿过OS,返回应用层。
ASM Library对数据和DIX保护信息进行校验。

DIX保证应用<-->HBA卡的数据完整性,T10 PI(DIF)保证HBA <-->阵列<-->硬盘的数据完整性,DIX+T10 PI形成从应用到硬盘的端到端数据完整性。



以上是关于DIX技术和T10 PI技术的主要内容,如果未能解决你的问题,请参考以下文章

Arduino Uno Raspberry Pi 串行通信双读数

DIX和DIF该诉你,什么叫端到端数据一致性

用来制作打刀的钢材 有几种?特性?啥最好? T10 1095 高碳 高猛 ……

秒表的使用方法!

T10记住,TCP__IP不是轮询的

仅需三步学会使用低代码ThingJS与森数据DIX数据对接