Oracle OpenWorld 2013 Demo:
T10 PI Data Integrity Demonstration Protecting Against Silent Data Corruption

T10 Protection Information (T10 PI)

An important threat to reliable storage of data is silent data corruption. T10 PI prevents silent data corruption by ensuring the integrity of data as it travels the I/O path between applications on a server and disk drives on a storage area network (SAN), ensuring that incomplete and incorrect data cannot overwrite good data. Silent data corruption can go undetected, leading to costly system downtime, and even resulting in data loss.

T10 PI enables end-to-end data integrity, a mechanism that eliminates silent data corruption which can happen in the process of applications reading and writing data to and from storage devices. End-to-end data integrity assures the validity of I/O operations through the exchange of “verifi cation information” during data transmissions. The protection afforded with end-to-end data integrity is part of the Oracle Unbreakable Enterprise Kernel and fully supported by Oracle. It spans the I/O operation from an application, through the network and Emulex HBAs, to the ION shared storage nodes, thereby ensuring the elimination of silent corruption at every level.

The following steps occur when data is written:

First: The Oracle Automatic Storage Management library adds protection information for each 512-byte sector as it is written to memory.

Second: The protection information is attached to the I/O request and passed through the layers in the Oracle Linux operating system kernel to the Emulex driver.

Third: The Emulex LightPulse® Gen 5 Fibre Channel (FC) HBA collects the information from memory buffers, verifi es the data integrity, merges the data and the protection information, and then sends out 520-byte sectors in accordance with the T10 PI model.

Fourth: The Fusion-io ION storage node verifies the protection information initially by the Emulex HBA and then by the ION Accelerator software, before writing the data to disk.

The steps are done in reverse when data is read.