Notes about Data Integrity Field(DIF) and Data Integrity Extension (DIX).

1. Overview

Some vendors have adopted the name Protection Information (PI) to refer to the DIF/DIX functionality.

1.1 Normal I/O

从图中可以知道,对于Normal I/O,从Application->OS->I/O Controller->SAN->Disk Array->Disk Driver之间,各层都有自己的integrity measures。这些integrity measures需要存储error checking information。比如硬盘的sector大小为512个字节,因为需要额外的空间存储error checking information,所以,实际能存储的有效数据是低于512字节的。

2. Data Integrity Field(DIF)

Terms: HBA

In computer hardware, a host controller, host adapter, or host bus adapter (HBA), connects a computer, which acts as the host system, to other network and storage devices. The terms are primarily used to refer to devices for connecting SCSI, Fibre Channel and SATA devices.

DIF is a feature added to the SCSI Standard. It adds 8 bytes to the end of each sector on disk.

It increases the size of the commonly-used 512-byte disk block from 512 to 520 bytes. The extra bytes comprise the Data Integrity Field (DIF). The basic idea is that the HBA will calculate a checksum value for the data block on writes, and store it in the DIF. The storage device will confirm the checksum on receive, and store the data plus checksum. On a read, the checksum will be checked by the storage device and by the receiving HBA.

3. Data Integrity Extension (DIX)

SCSI controllers就是HBA。

个人对end-to-end data integrity的理解:Application->OS->I/O Controller->SAN->Disk Array->Disk Driver之间,共用error checking information,而非各层用自己的error checking information。


参考资料:

  1. What is DIF/DIX
  2. Linux Data Integrity Extensions paper
  3. DIF, DIX and Linux Data Integrity slides