Data Integrity Field

Data Integrity Field (DIF) is an approach to protect data integrity in computer data storage from data corruption. It was proposed in 2003 by the T10 subcommittee of the International Committee for Information Technology Standards.[1] A similar approach for data integrity was added in 2016 to the NVMe 1.2.1 specification.[2]

Background

Data availability in storage systems is frequently measured simply in terms of the reliability of the hardware components and the effects of redundant hardware. But the reliability of the software, its ability to detect errors, and its ability to correctly report or apply corrective actions to a failure have a significant bearing on the overall storage system availability.

Packet-based storage transport protocols have CRC protection on command and data payloads. Interconnect buses have parity protection. Memory systems have parity detection/correction schemes. I/O protocol controllers at the transport/interconnect boundaries have internal data path protection. But when DIF was first designed, there was no standard protection for when a data leaves the memory, goes to the disk, remain stored for a long time, and gets read again.[1]

The data exchange usually takes place between the host CPU and storage disk. There may be a storage data controller in between these two. The controller could be RAID controller or simple storage switches.

In SCSI

DIF was first proposed to Small Computer System Interface (SCSI) as the Data Integrity Field. It extends disk sector from its traditional 512 bytes, to 520 bytes, by adding eight additional protection bytes.[1] SCSI devices are used in many enterprise storage technologies, such as Fibre Channel. By the time it was incorporated in SBC-2, it had already been renamed Protection Information. The 8 bytes include 2 bytes of CRC "logical block guard", 2 bytes of an arbitrary "logical block application guard", and 4 bytes of "logical block reference tag", which is often the lower 32 bits of LBA.[3]

SBC-3 expands this technology to Advanced Format (4K) sectors, for 4104-byte sectors in the trailing setup. It also defines three ways for the protection to be "on" instead of the previous one, mainly differing in the handling of the 4-byte part. The most important change is the use of a protection information exponent allowing a different way to lay out this information: instead of expanding sectors at their tail, multiple PIs can be packed together and stored elsewhere.[4][5][6]

The SCSI READ, WRITE, and VERIFY commands allow access to the protection information.

In SATA

The SATA committee (T13) had a setup similar to the SCSI DIF/PI called the External Path Protection (EPP) in 2008.[7]

In NVMe

Software support

Oracle Corporation contributed support for SCSI/T10 to the Linux kernel.[8][9] The main documentation on this topic for Linux is written by Oracle.[10]

References

  1. ^ a b c Keith Holt (July 1, 2003). "End-to-End Data Protection Justification" (PDF). T10 Technical Committee document 03-224r0. Retrieved August 29, 2013.
  2. ^ "NVM Express Revision 1.2.1" (PDF). NVM Express, Inc. June 5, 2016.
  3. ^ "Data Integrity Extension" (PDF). T10 Technical Committee document 03-111r0 (FTP). May 2, 2003. Retrieved August 29, 2013.[dead ftp link] (To view documents see Help:FTP)
  4. ^ SBC-3 Draft 12
  5. ^ Safeguarding Data From Corruption - Technology Paper. PDF, Seagate, 2011
  6. ^ EMC Corporation (September 18, 2012). "An Integrated End-to-End Data Integrity Solution to Protect Against Silent Data Corruption" (PDF). White paper. Oracle Corporation. Retrieved August 29, 2013.
  7. ^ Pertersen de Oracle, Martin K (2008). "Linux Data Integrity Extensions" (PDF).
  8. ^ Martin K. Petersen (2009). "Linux Data Integrity Project". Retrieved August 29, 2013.
  9. ^ Martin K. Petersen (January 3, 2008). "Proactively Preventing Data Corruption" (PDF). Enterprise Open Source Magazine. Retrieved August 29, 2013.
  10. ^ "Data Integrity — The Linux Kernel documentation". docs.kernel.org.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.