Storage Fundamentals – RAID

Starting today, I am attending a two day training on Storage Networking. With the word storage, the first word that comes to mind is RAID. Here is some of the basic information about Redundant Array of Independent Disks (RAID) and various types of RAID.

RAID 0 – Non redundant striping

  • RAID 0 implements a striped disk array. If the host passes the information “ABC” to a RAID 0 which consists of 3 physical disks A, B and C are written to each of the disks in a round robin fashion.
  • Important point to be noted here is that the disk size should be of equal, since the information is striped across each of the disks. If we have 3 disks of 100 GB, 100 GB, 50 GB size, then the total size of the logical disk (RAID 0) is 50+50+50 = 150 GB.
  • RAID 0 is not a true RAID since it is not fault tolerant. If one of the disks fails, then the logical disk will also fail. But RAID 0 provides the best performance.

RAID 1 – Mirroring

  • RAID 1 also known as Mirroring, provides a shadow copy of one disk on the other disk
  • This provides the best fault tolerance, since the mirror copy of the original disk is available, in case one of the disk fails.
  • Downside to RAID 1 is that the other disk involved in the RAID is wasted (considering cost)

RAID 3 – Disk Array with bit-interleaved data

  • In RAID 3, data is divided into octets and striped on the disks
  • For example, if we have 4 disks one of the disks contains the parity information. i.e. the result of XOR operation of the 3 disks is saved in this disk
  • If one of the disks fails, fault tolerance is provided by the parity information. It is like the 4th disk has the information 1+2+3=4. Imagine disk 3 fails, so the formula now looks like 1+2+x=4. The value of “x” in this expression can easily be evaluated.
  • If more than one disk fails, all data in the entire array is lost

RAID 4 – Disk array with block interleaved data

  • This is very similar to RAID 3, works on BLOCK basis instead of octet basis. Block is bigger than octet

RAID 5 – Disk array with block level distributed parity

  • This is the most commonly used RAID level
  • This also works on parity logic but the parity information is spread across all disks, unlike RAID 3 where the parity information is stored on only one dedicated disk
  • At least 3 disks are needed to constitute a RAID 5 array
  • Data reads are very fast which is similar to RAID 0
  • But data Writes are comparatively slow, since the parity information and disk on which parity needs to be stored is calculated

RAID 10 – RAID 1 + RAID 0

  • RAID 10 uses both Striping (RAID 0) and Mirroring (RAID 1)
  • Mirrored volume of Striped Disks is created
  • At least 4 disks are required to implement RAID 10
  • Multiple RAID Groups (RG) are created. If there are 4 disks, 2 RGs are created. Hence RAID 10 can survive multiple drive failures (one per RAID 1 RG)

More detailed information on RAID with supporting diagrams can be found at Wikipedia.