数据字段完整度检验

    技术2024-06-23  93

    总览

    ANSI T10标准提供了一种检查从主机总线适配器读取并写入磁盘以及通过SAN结构返回的数据的完整性的方法。 通过T10标准中定义的数据完整性字段(DIF)实施此检查。

    AIX已在AIX 6.1 TL6 SP5和AIX 7.1 SP3中实现了Type 1 DIF。 在Type 1实现中,8字节DIF由Ref标签,App标签和CRC组成。 类型1 DIF被定义为具有2字节CRC,2字节App标签和4字节Ref标签,由逻辑块地址的低32位组成。 请参见下面的图1作为示例。

    图1. Type 1 DIF定义

    图1显示了一个数据块(例如512字节的扇区),其尾部附加了8字节的页脚。 显示8字节页脚的内容,其中包含构成Type 1 DIF,CRC,App Tag和Ref Tag的字段。

    写入时,DIF由主机总线适配器(HBA)根据块数据和逻辑块地址生成。 DIF字段添加到数据块的末尾,并且数据通过结构发送到存储目标。 存储目标验证CRC和Ref标签,如果正确,则将数据块和DIF都存储在物理介质上。 如果CRC与数据不匹配,则在写操作期间数据已损坏。 写操作返回带有写错误代码的主机。 主机记录错误,然后将数据重新传输到目标。 这样,就可以在写入时立即检测到数据损坏,而不会将其提交给物理介质。

    读取时,DIF与数据块一起返回给主机,该主机验证CRC和Ref标签。 此验证会为每个IO添加非常小的延迟(不到毫秒),并且可能会影响小于4K的较小块事务的总体响应时间。

    图2说明了数据所采用的路径。

    图2.使用DIF的数据流

    图2显示了从系统处理器/内存/ OS / App到HBA的读取数据块流程; HBA通过SAN结构到存储设备上的目标端口; 以及从目标端口到存储处理器/内存/应用程序以及磁盘的存储内部。 从系统处理器/内存/ OS / App到HBA的路径仅包含读取数据块。 DIF附加到HBA上的读取数据块。 读取的数据和DIF通过SAN结构发送到存储上的目标端口,然后发送到存储处理器/内存/应用程序,然后写入磁盘。

    对于T10 DIF的初始实施,以下限制适用:

    AIX是唯一在POWER上实现T10 DIF的主机。 支持类型1 DIF。 应用代码始终为0x4149(ASCII“ AI”)。 需要AIX 6.1 TL6 SP5或AIX 7.1 SP3。 虚拟光纤通道设备上不支持。 必须使用2端口8Gb PCIe光纤通道适配。 需要固件版本为200307或更高。 需要功能代码5735或矮型功能代码5273。 不支持Power Blades。 IBM DS3950,DS5020,DS5100或DS5300存储必须用作目标存储。

    后续版本将覆盖范围的扩展作为整个Power Systems端到端数据保护计划的一部分。

    建立

    以下设置步骤假定已遵守所有限制。

    查找磁盘的所有路径。 在需要DIF保护的所有hdisk上运行lspath -l hdisk# 。 从该命令返回fscsi#设备(FC协议设备)。 运行lsdev -l fscsi# -F'name parent'查找fscsi#设备的父级。 在FC适配器上启用保护(fcs设备的DIF_enabled属性)。 步骤2应该在磁盘具有路径的所有FC适配器上执行。 运行命令rmdev –Rdl fscsi#以允许更改fcs上的属性 要在FC适配器上启用保护,请运行chdev -l fcs# -a DIF_enabled=yes ( DIF_enabled=no禁用保护。) 运行命令cfgmgr重新发现磁盘。 smit fcsa命令还可以用于在fcs#上启用/禁用保护# 在磁盘上启用T10保护。 要在磁盘上启用保护,磁盘还必须支持“ Type 1” T10保护。 要在磁盘上启用T10保护,请运行chdev -l hdisk# -a DIF_protection=yes" ( DIF_protection=no禁用保护)。 smit disk命令还可用于在hdisk#上启用/禁用保护。 使用lsattr -El hdisk#命令启用保护后,用户必须检查此属性的当前值。 如果此属性的值unsupported则表示以下之一: 磁盘的部分或全部路径不支持保护。 磁盘不支持保护。

    翻译自: https://www.ibm.com/developerworks/aix/library/au-T10E2E/index.html

    Processed: 0.042, SQL: 9