Hardware, Linux, Ubuntu

Ubuntu Server – Creating an expandable Raid5 Array starting with 2 disks

Again, I’m using VirtualBox to test this, I have a single OS drive with Ubuntu Server (intrepid) installed. I’ve added two 2gb virtual disk to it, which will be the starting point of the Raid5.  Most places on the net say you need at least 3 disks to run raid 5, but let’s see what happens.

Lets create the raid:

mdadm --create /dev/md0 --level=5 --raid-devices=2 /dev/sdb /dev/sdc

The raid gets created! and we can monitor it with

cat /proc/mdstat

When it has finished intitialising, create a file system on the raid array (ext3):

mke2fs -j /dev/md0

create a mount point (/raid) and mount it

mkdir /raid
mount /dev/md0 /raid

df then reports it as having 2Gb free.  Both my VM drives sdb and sdc are 2Gb, so the assumption is it is simply mirroring the data in 2 drive mode.  This is exactly what we want, as when I get a new drive later on, I want to add it to the raid and see an increase in disk space.  So lets test that, shutdown my machine and add a new drive.

Add the drive to the array

mdadm --manage --add /dev/md0 /dev/sdd

now when I run cat /proc/mdstat it says there are 3 drives in the arras but sdd is marked (S)

Lets now grow the array

mdadm --grow --raid-disk=3 /dev/md0

Watch the progress with cat /proc/mdstat and when complete we can mount it. (adding the 2Gb took about 5 mniutes! eeek! to grow the array).

After completion /proc/mdstat now reports 4gb available, but the file system on the raid still thinks it’s 2gb.

So let’s resize it:

e2fsck -f /dev/md0
resize2fs /dev/md0

Re mount /dev/md0 and df now reports 4Gb.

Success.