RAID-5 is a fault-tolerance solution, not a data-integrity solution.

Remember that RAID stands for Redundant Array of Inexpensive Disks. Disks are the atomic unit of redundancy -- RAID doesn't really care about data. You buy solutions that employ filesystems like WAFL or ZFS to address data redundancy and integrity.

The RAID controller (hardware or software) does not verify the parity of blocks at read time. This is a major risk of running RAID-5 -- if you encounter a partial media failure on a drive (a situation where a bad block isn't marked "bad"), you are now in a situation where your data have been silently corrupted.

Sun's RAID-Z/ZFS actually provides end-to-end data integrity, and I suspect other filesystems and RAID systems will provide this feature in the future as the number of cores available on CPUs continues to increase.

If you're using RAID-5, you're being cheap, in my opinion. RAID 1 performs better, offers greater protection, and doesn't impact production when a drive fails -- for a marginal cost difference.


I believe that the answer depends on the controller/software for example it is quite common for mirroring systems to only read one disc out of a pair and therefore be capable of delivering the wrong data. I note that if your results depend on that data the when the data is written to both discs it is then corrupted on both discs.....

From the pdf under SATAssure(tm) Plus:

"Revolutionary SATAssure technology delivers enterprise-class data protection and reliability using large capacity, inexpensive SATA disk drives. SATAssure operates on all read operations, ensuring data integrity and automatically corrects problems in real-time – all without the performance or capacity penalty found in traditional storage systems. Reduce drive RMAs with a new ability to power-cycle individual drives. "

It is interesting that some manufactures make a fuss about the fact they they always compute parity, this leads me to think that it is relatively uncommon on hardware controllers. It is also of note that systems such as ZFS and WAFL (netapp) do parity calculations for every read.