I doing a series of Blog Post’s on storage and disk configuration. You should never treat it like a Black Box and need to understand your workloads and use cases to get the value out of your servers and your licenses. In this post I am going to talk about RAID Levels and Configurations.
Redundant Array of Inexpensive Disk (RAID) is of the most important decisions that you have to make when deploying a new storage subsystem is what RAID level to use. Each RAID level has its advantages and disadvantages in terms of protection, efficiency or usable storage and performance in terms of both normal operations and in terms of rebuild time. Regardless of the storage subsystem, RAID decisions are based on the same set of criteria.
First and foremost, the application’s performance needs must be met and this should be the primary decision factor when selecting RAID policy. Once the LOB applications’ needs are addressed, choosing a RAID policy comes down to two factors: cost in terms of capacity utilization efficiency and protection level. The following sections describe each of the different RAID levels.
This level is known as simple striping. RAID-0 is the simplest configuration of disks that stripe the data. RAID-0 does not provide any redundancy or fault tolerance. Data striping refers to sequentially writing data in a round-robin style up to a certain stripe size, a multiple of a disk sector (usually 512 bytes). Data striping yields good performance because multiple disks are concurrently servicing the I/O requests. The positive points for RAID-0 are the cost, performance, and storage efficiency. RAID-0 is sometimes discussed but seldom recommended because it does not provide fault tolerance. Any spindle failure in a RAID-0 group will render the entire group unusable. The negative impact of no redundancy can outweigh its positive points.
This level is known as disk mirroring. Two drives store identical information so that one is a mirror of the other. For every disk operation, the system must write the same information to both disks. Because dual write operations can degrade system performance, many employ duplexing, where each mirror drive has its own host adapter. While the mirror approach provides good fault tolerance, it is relatively expensive to implement because only half of the available disk space can be used for storage, while the other half is used for mirroring. This is the best choice for SQL Server transaction logs.
This level is known as striping with parity. RAID-5 is a popular strategy for low- or mid-range storage systems. RAID-5 stripes the data in large blocks across the disks in an array. RAID-5 writes parity data across all the disks in the RAID-5 set. Data redundancy is provided by the parity information. The data and parity information is arranged on the disk array so that the two types of information are always on different disks. Striping with parity can offer better performance than disk mirroring (RAID-1). However, when a stripe member is missing, read performance is decreased (for example, when a disk fails). RAID-5 is a less expensive option because it utilizes drive space more efficiently than RAID-1. RAID-5 may be used in a storage tire approach to assign non-critical data to higher-capacity and lower-cost drives, for example SQL Server backup volumes or for SQL Server data volumes for Data Warehouse workload types.
This level is known as striping with dual distributed parity. RAID-6 adds an additional parity block and provides approximately double the data protection over RAID-5, but at a cost of even lower write performance. As physical disks grow larger, and consequently RAID rebuild times grow longer, in some cases RAID-6 is necessary to prevent logical unit number (LUN) failure if an un-correctable error occurs during the rebuild, or if a second disk in the array group fails during rebuild. Due to disk capacity, some vendors support RAID-6 instead of RAID-5. RAID-6 implementations can tolerate up to 2 drive failures at the same time without data loss. RAID-6 like RAID-5 may be used in a storage tire approach to assign non-critical data to higher-capacity and lower-cost drives, for example SQL Server backup volumes or for SQL Server data volumes for Data Warehouse workload types.
RAID 1+0 (RAID-10)
This level is known as mirroring with striping. RAID-10 is essentially many sets of RAID-1 or mirrored drives in a RAID-0 configuration. This configuration combines the best attributes of striping and mirroring: high performance and good fault tolerance. For these reasons, we recommend using this RAID level. However, the high performance and reliability level is the trade-off for storage capacity. RAID-10 implementations can sustain multiple drive losses so long as no RAID-1 (mirrored) set loses both of its drives.
The following table summarizes I/O activity of various RAID levels:
|RAID Levels||RAID-0||RAID-1||RAID-5 or RAID-6||RAID-10|
Lack of fault tolerance results in data loss
Even better with duplexing
Can tolerate single machine fault
|Storage Efficiency||100%||50%||>50% <100%||50%|
Worst of the RAID Levels but better than a singled drive
Worse than a single drive but better than some RAID levels
Generally better with larger stripe sizes
|Sequential Read||Excellent||Very Good
Comparable to a single drive
Generally, better with smaller stripe sizes
|Sequential Write||Excellent||Very Good
Better than other RAID levels
Relatively high cost due to redundant drives; however, no expensive controller required
The following table is a summary of the RAID level and recommendations on what disk volumes to use them:
Good for stagnantly updated data that gets backed up regularly
Departmental development or testing for SQL Servers
|RAID-1||Good for data that requires high fault tolerance at relatively low hardware cost
System volume on the SQL Server host server
Cluster Quorum volumes
Very good for sequential I/O
OLTP or DW transaction log volumes
|Very good for read only data
SQL Server backup volumes
DW data volumes
Where cost is the essential factor
|RAID-10||Data requiring high performance for both read and write and excellent reliability while trading off storage efficiency and cost
OLTP data volumes where workload is random I/O
OLTP transaction log volumes
SQL Server tempdb data volumes