RAID 5

Contents

Introduction

There are several reasons why one would want a RAID 5 configuration for your Amahi server if one has the money to buy at least 3 drives needed. The main reasons, however, are performance and redundancy. A RAID 5 array splits up a given file and its parity and distributes it across all the disks. The bad news is that if one has N disks, each with capacity C, the total array capacity is (N - 1) * C - one disk is lost to parity. On the other hand, a RAID 5 array has almost RAID 0 performance, and can survive the loss of one disk without loss of data. One thing that must be kept in mind with any RAID array (and one thing I didn't know about until it happened to me) is that RAID arrays are susceptible to data loss if not shut down correctly. A sudden power outage can result in data loss, so if a RAID array is used, it is important to use a UPS.

Note: Depending on what you want to use your RAID 5 array for, you might want to consider using Greyhole over RAID 5. For some details about advantages and disadvantages of Greyhole vs RAID 5, see the Greyhole project page.
Greyhole has been integrated in Amahi since version 5.3.

This wiki entry is for the installation of a software RAID 5 array using 3 disks that are the same size, 2 TB. At the end, the RAID array will be used to host all the shares on the server. My server has a separate hard drive on which I installed Fedora 12 and the Amahi software. The Amahi software should be installed and working correctly before the RAID array is created. Technically, it doesn't matter that Amahi is running first, but it makes it slightly easier to set up.

Sources Used

Here are the sources I used while installing my array, and writing this entry:

Installation Steps

Install your disks

Your computer's BIOS should list all disks on startup.

Find out your available partitions:

su -

fdisk -l

What you are looking for is probably going to be something like /dev/sd**some letter**. In my case, since I installed Fedora on one hard drive first before installing my 3 other RAID disks, the above command returns disks labelled /dev/sda /dev/sdb /dev/sdc and /dev/sdd. I, of course, won't be using the hard drive on which I installed Fedora (/dev/sda), so my array will be created using the /dev/sdb /dev/sdc and /dev/sdd disks.

Unmount the partitions:

umount /dev/sdb

umount /dev/sdc

umount /dev/sdd

Remove the old partitions, and prep the disks using fdisk:

fdisk /dev/sdb

Type t to change the disk's partition type, type 1 to select the first partition, and type fd to select the Linux RAID auto detect ID.

Make sure that you got the correct settings by typing p.

Finalize the changes by typing w.

Repeat the same process for all of your disks.

Create the RAID array:

mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sd[bcd]

Type y to start the creation process.

The array has to build before you can continue with anything, and depending on how much storage space you have, it can take a looooong time. For my array, it takes some 20 odd hours. You can check on the progress by typing 'cat /proc/mdstat'.

Format the RAID set:

mkfs.ext4 /dev/md0

You can format the RAID set into another filesystem, if you so choose.

This also can take a really long time, as well, but not nearly as long as creating the array itself.

Unfortunately, Linux does not automatically remember your RAID settings, so you need to create a configuration file so that Linux knows that to do. Fortunately, you don't need to know (or type) the specifics, which mainly involves a really long alpha-numeric ID string:

mdadm --detail --scan > /etc/mdadm.conf

Now, move all your shares to the RAID array:

mv /var/hda/files/* /dev/md0

Create a mount point for the Array:

mkdir /mnt/raid

Edit the /etc/fstab file, so that the shares get mounted to the array on startup: