Parity
Parity is the other data redundancy technique used in RAID. The term parity is often used when dealing with error detection in communication, such as modems. It is also used in memory. Parity in RAID uses a similar concept to parity in memory. For example, you have X number of data elements. You would then use those X data elements to create a parity element, and end up with X+1 total data elements. If any ONE of those X+1 elements is lost, it can be recovered as long as X number of elements remain. You might have heard the term "parity bit" being used to refer to the extra information. In the case of RAID, the parity data is much larger than just one bit. Confusing you yet?
Well, the extra parity data is created typically using a logical operation called exclusive OR (XOR). If you're not familiar with the XOR operation, here's a truth table to refresh your memory:
p 
q 
p XOR q 
T 
T 
F 
T 
F 
T 
F 
T 
T 
F 
F 
F 
Basically, the XOR operation is true if and only if one of its operands is true, unless both operands are true then the output is false.Obviously, you can carry this operation over to binary by letting true equal 1 and false equal 0.
For example:
10101010 XOR 11111111 = 01010101
11111111 XOR 01010101 = 10101010
10101010 XOR 01010101 = 11111111
Basically, you can get any of the three values as long as you have the other two, which is what parity is all about in the first place. The operation works on any number of bits, so you can do the operation on whole hard drives. Now if you think about it, you can protect from any single hard drive being lost without having to keep two copies of data. You only need an extra hard drive. This is one advantage parity has over mirroring. However, the level of fault tolerance is not as high as in mirroring. The parity data doesn't necessarily have to be stored on a single hard drive. It can be distributed across the entire array, which is often referred to as distributed parity. As is the case with mirroring, striping with parity can also be implemented. The main limitation here is that parity algorithms usually need larges amounts of computing power. The parity data has to be computed every time a read/write takes place. This means that a hardware RAID controller is required. Software RAID would not be practical in this case because the operations would tie up the CPU. In addition, recovering from a failure is more complicated than in mirroring. Automatic rebuilding is often reserved for hardware controllers, and even then it takes longer than mirroring.
>> Striping
