Imagine that your database server recently went down due to a hard disk failure, and it took several hours to rebuild it and get it up and running again. The powers-that-be in your organization want to ensure that any extended downtime can be avoided in the future, even if it means spending money to upgrade the server for better fault tolerance. One of the best solutions to this problem is to utilize RAID. In this article, we’ll take a look at the different levels of RAID and see how they can be used to achieve data redundancy.

Defining RAID
RAID is an acronym for Redundant Array of Independent Disks (initially called Redundant Array of Inexpensive Disks). It was originally conceived by a research team at the University of California Berkeley in 1988. The team published a paper in which it coined the term “RAID” and defined five levels of RAID operation: RAID 1 through RAID 5.

Sponsored by SUN Microsystems
Introducing Sun’s first Midframe servers that combine mainframe capabilities with midrange affordability:
The Sun Fire(R) Midframe server family.

For more information, check out TechRepublic’s Server Architecture Briefing Center, or visit Sun Microsystems site

Introducing Sun’s first Midframe servers that combine mainframe capabilities with midrange affordability:
The Sun Fire(R) Midframe server family.

For more information, check out TechRepublic’s Server Architecture Briefing Center, or visit Sun Microsystems site

The technology behind RAID is very straightforward: By combining a collection of disks into a single, logical array, an administrator can store redundant data across these multiple disks in order to provide fault tolerance by enabling quick recovery from a disk failure.

Since the initial conception of the five levels of RAID, the standard has been expanded to include a number of additional levels. However, in this article, we will simply cover the original five, along with the popular RAID 0 and RAID 10 implementations.

RAID terms you should know

  • Mirroring: Disk mirroring involves the simultaneous writing of the same data over one RAID controller to two separate hard disks. Since the data is being written twice, mirroring will slow down disk writes but can often increase the speed of disk reads.
  • Duplexing: Similar to mirroring, disk duplexing is the simultaneous writing of the same data over two RAID controllers to two separate disks. A system that implements duplexing can withstand the failure of either a hard disk or a RAID controller.
  • Striping: One way to improve the performance issues involved with mirroring or duplexing is to implement disk striping. This involves breaking data into small pieces and distributing it across multiple disks. Depending on the RAID implementation, data is broken up into bits, bytes, or blocks.
  • Parity: Parity is an alternative to mirroring for achieving redundancy. Unlike mirroring, it does not require the sacrifice of 50 percent of disk space in order to achieve redundancy. Parity is logical information about the data you are storing, and it used to re-create lost data in the event of a disk failure. It is used in combination with striping and usually involves at least three disks. The parity information can be stored on one separate disk or can be distributed across multiple disks along with striping bits, bytes, or blocks.

Understanding RAID implementations
Now, let’s take a closer look at the specific implementations of RAID.

RAID 0: Disk striping
RAID 0 is the implementation of disk striping without parity. Data is divided among the available disks, which offers great performance but no redundancy. Data loss would result upon disk failure. RAID 0 can be used for high-performance workstations, but it is not intended for mission-critical servers.

RAID 1: Mirroring and duplexing
RAID 1 involves disk mirroring or disk duplexing. Data is divided by writing data to two or more disks (always an even number), thus allowing for redundancy and data recovery upon disk failure (or controller failure in the case of duplexing). Data in this level tends to be written slowly but can often be read more quickly.

RAID 2: Bit-by-bit striping
RAID 2 stripes data bit-by-bit across multiple disks. This level of RAID is intended for use with disks that don’t have built-in error detection. Level 2 is scarcely used since most modern vendors build error detection into their disks.

RAID 3: Byte-by-byte striping
RAID 3 stripes data at the byte level across multiple disks. Parity is stored on a separate disk. If a disk failure occurs, the parity disk can be used to rebuild the disk without any data loss. For an even greater fault-tolerant solution, the parity disk itself can be mirrored.

RAID 4: Block-by-block striping
RAID 4 stripes data at the block level across multiple disks. Again, parity is stored on a separate disk. Performance is greater than RAID 2 or RAID 3 since data is stored in larger units—blocks.

RAID 5: Striping with distributed parity
RAID 5 is very similar to RAID 4, except that instead of storing parity on a separate disk, it distributes it among the available disks. RAID distributes data similar to RAID 0, only it includes parity information along with the striped data across the various disks This is one of the most common RAID implementations, along with RAID 1.

RAID 10 (also called RAID 0+1): Mirrored striping
RAID 10 is basically a combination of RAID 1 and RAID 0. Data is striped across multiple disks and then all of those disks are mirrored. Obviously, this is one of the most expensive levels to implement, although it provides excellent fault tolerance.

Sorting it out
This article should provide you a good start for understanding the different RAID levels, how they function, and how they are implemented. If you are managing mission-critical servers that require maximum uptime, then you should definitely consider using some form of RAID for data redundancy.
Are you currently using RAID in any of your servers? Have you ever had to recover from a disk failure with a RAID array? Please share your input in the discussion below or send us a note.