Striping and parity across three drives, oh my!
Of all the RAID levels that consumers are likely to use on their home systems, RAID 5 is one of the more exotic choices. While RAID 0 and 1 are pretty straightforward, RAID 5 is a little more complex.
As we discussed in earlier articles, RAID 0 stripes data across an array of drives, making reads and writes faster, while also sacrificing redundancy. RAID 1 does the opposite, writing identical data across every drive in the array, creating a redundancy in the event of failure. RAID 5 is somewhere in between.
Like RAID 0, RAID 5 stripes data across an array of drives. However, one of the drives is reserved as the redundant copy of the piece of data. As each block of data is written, the stripes and redundant copy rotate places, so that no single drive fills up with redundant copies (this is called distributed parity). For this to work, RAID 5 requires a minimum of three drives.
When a drive in a RAID 5 array fails, the data can be located somewhere else in the array. If failure occurred on a drive that held a striped copy, the entirety of the data can be found on the drive that holds the parity copy. If the parity is missing, you still have a copy of the data striped across the other drives. On the flip side, if you lose more than one drive, you'll lose the entire array because parity is distributed across all the drives.
In terms of performance, read operations will be similar to that of RAID 0, as the striped data can be read from several drives at one. Write operations, however, are more like RAID 1, since the parity data is written to only one drive.
Drive space is also pooled, but less so than in RAID 0. In RAID 5, it works a bit differently. Due to the way parity works, if you have three drives, the available space will be equal to a RAID 0 array with two drives. In our examples, we used three 120GB SSDs, which resulted in arrays with 240GB of space.
If you want install an OS on top of a RAID array, RAID 5 will work fairly well, so long as you're not trying to use it atop an array of multi-terabyte spinning drives. RAID 5 offers more resiliency than RAID 0, as well as significant gains in read operations for loading programs and games.
Prepare your hardware
If you've been following along in our series, you'll know that it's always best to use drives of identical make, model, and capacity when constructing a RAID array. Even if you're forced to use different makes and models (as we were in our examples), you have to make sure that the drive capacities are identical. Mixing drives will at best result in an array that will performs as if each drive were the slowest one.
When connecting your drives for use in RAID, be sure to use the same interface for the drive. If two drives in your array are using SATA 6Gbps, use the same interface for every other drive you intend to add to the array.
It's also a good idea to make sure all of the drives in your array are using the latest firmware. Firmware fixes can result in better speeds and fix potential bugs that can wreack havoc on your data.
If you're going to use FakeRAID, make sure your motherboard has "onboard RAID." Most recent motherboards do, but if you're building a server out of an old machine, this is something you should check.
Windows: Storage Spaces
Creating a RAID 5 array in Windows is just as easy as creating RAID 0 and 1 arrays. It's important to remember Microsoft uses the name "Storage Spaces" instead of RAID, but the function is pretty much the same.
To start, hit Win+S and search for "Storage spaces" and launch the utility. Next, click "create a new pool and storage space." You'll be prompted for administrator access. Click Yes to continue.
You'll be greeted by a windows showing all of the unformatted disks that can be used. Select all the disks you want in the array and click "Create pool." You'll have to select at least three to be able to create a RAID 5 array.
In a perfect world, we'd use identical drives, but sometimes you have to use what you've got lying around. Reliability and speed could be negatively affected by using different drives.
Next, give the pool a name and drive letter. The name will appear as the drive label. Select NTFS as the file system. For Resiliency type, select "Parity," which is the equivalent to RAID 5. When you're ready, click Create storage space to create the array.
If you want to remove a RAID array for any reason, simply click Delete next to the storage space you want to remove. To remove the pool, remove all of the storage spaces in it first.
Linux: mdadm and disks
Creating a software RAID 5 array in Linux takes only two terminal commands. In Linux, the program mdadm (we like to pronounce it "madam") is what we'll use to set up the array.
First things first, you need to get the RAID software. You'll need to download and install mdadm from your software repository. It's pretty common, and is included in most software repos. In Ubuntu, type the following command:
sudo apt-get install mdadm
The command will install mdadm for you, along with a dependency called Postfix. Postfix is an SMTP service that sends emails. The reason it's included is because if a drive fails or something else happens to your array, the system can alert you with an email. That's great for IT administrators, but Postfix is a PITA to administer. In many cases, you can just set the program to use no configuration if you like. If you do take the time to set it up, it can give you early warning when drives fail.
Once mdadm is all set up, all you need to do is use the following command:
sudo mdadm --create /dev/mdX --level=5 --raid-devices=[number of drives (3 or more)] [drive name] [drive name] [drive name] [etc]
The above command will vary based on the size of your array, and how you'd like to name it. RAID devices are generally named /dev/mdX where X is the index of the array. Drive names can be any valid Linux device path, e.g., /dev/sda or /dev/disk/by-uuid/[UUID].
If you're not sure how Linux has identified your drives, you can use lsblk to identify them:
lsblk -o name,model,mountpoint,size
Once you create your array, you'll have to wait while the drives synchronize, which may take several minutes.
The Disks utility is an easy-to-use GUI that allows you to create RAID arrays out of disks and partitions.
You can also create RAID arrays in Linux using the GNOME disk utility. In Ubuntu, search for "Disks" and open the utility. On the left side of the window, click the checkbox above the list of drives. Then, select the drives you want to use to create an array and click Create RAID.
Using onboard FakeRAID
Onboard FakeRAID is harder to set up, but is your only real choice if you want your RAID array to be accessible to both Windows and Linux. You can also install an OS on top of a FakeRAID array.
Once your drives are physically installed, boot into your BIOS by tapping the key prompted on startup. The message will say "Press DEL to enter Setup…" or something similar.
Once you're in your BIOS, look for an option called "SATA mode." This option is in different places for each motherboard manufacturer, so refer to your user manual if you can't find it. Once you've found the setting, change it from AHCI to RAID. This will let your onboard RAID software know that there are possible RAID devices to be started. When you're done, save and reboot.
On the next boot, you have to get into the RAID software to set up your arrays. If you have an Intel RAID controller, you may be prompted to hit CTRL+I to start the Intel Rapid Storage Technology (RST) RAID software. The software varies by vendor, so consult your motherboard manual on entering the RAID utility. In this example, Gigabyte's implementation let us use the RST tools from inside the UEFI BIOS utility.
In Intel's RST menu, you should see some options and a list of hard drives on your system. Select "Create RAID Volume." Give your volume a name and select "RAID5 (Parity)" as the RAID level.
The Gigabyte motherboard we used allowed us to access Itel RST from inside the UEFI BIOS utility. Each motherboard manufacturer will do things differently. Consult your user manual to figure out how to access Intel RST.
Next, select the drives you want to include in your array. Other RST implementations may have you select drives first. Make sure that the drives you select are the correct ones; you'll lose any data saved on the drives that you use in a FakeRAID array.
On the next boot, your FakeRAID array will appear as a single disk to the operating system. Additionally, RST may display the status of your RAID disks during the boot process, before the operating system loads.
RAID 5 is a bit different and a little more complex than RAID 1 or 0, but it offers a compromise between the two extremes. This special RAID level will give you some wiggle room, just be sure not to ignore a drive failure. If all the drives are identical and one goes down, others may soon follow.