Note: This page is about Ubuntu 9.10. It may not apply to newer versions anymore.

Tag/tag.png

Content Cleanup Required
This article should be cleaned-up to follow the content standards in the Wiki Guide. More info...

Tag/tag.png

Unsupported Version
This article applies to an unsupported version of Ubuntu. More info...

How to create RAID using Ubuntu Software RAID. Including RAID 0, 1, 5 and 6.

Since 9.10, Ubuntu provides a very easy way to build RAID. You can build a RAID system using the graphical Ubuntu user interface. It does not require using the command-line anymore.

Note: Be aware of the fragile state of RAID support in Ubuntu and what it takes to get a reliable raid setup (https://wiki.ubuntu.com/ReliableRaid). However most of the bugs has been fixed since Ubuntu 8.10.

Introduction

RAID is a method of using multiple hard drives to act as one. There are two purposes of RAID:

  • Expand drive capacity: RAID 0. If you have 2 x 500 GB HDD then total space become 1 TB
  • Prevent data loss in case of drive failure: RAID 1, RAID 5, and RAID 6. You can combine RAID 0 to other RAID, e.g RAID 0 + 1 become RAID 10.

There are three ways to create RAID:

  1. Software-RAID: Where the RAID is created by software.
  2. Hardware-RAID: A special controller used to build RAID. Hardware RAID is generally faster, and does not place load on the CPU, and hardware RAID can be used with any OS
  3. FakeRAID: Since RAID hardware is very expensive, many motherboard manufacturers use multi-channel controllers with special BIOS features to perform RAID. This is a form of software RAID using special drivers, and it is not necessarily faster than true software RAID. Read FakeRaidHowto for details.

The RAID software included with current versions of Linux (and Ubuntu) is based on the 'mdadm' driver and works very well.

Requirements

After a successful install, you should also manually fix 2 shortcomings in the default configuration:

  • Install GRUB boot-loader on second drive (this step is not necessary if you use Ubuntu 9.10 or a newer one, which uses Grub2)
  • Update the startup script to detect a failed drive

Installing

Install Ubuntu until you get to partitioning the disks

ubuntu_raid_00.png

Partitioning the disk

Warning: the /boot filesystem cannot use any softRAID level other than 1 with the stock Ubuntu bootloader. If you want to use some other RAID level for most things, you'll need to create separate partitions and make a RAID1 device for /boot.

Warning: this will remove all data on hard drives.

1. Select "Manual" as your partition method

ubuntu_raid_01.png

2. Select your hard drive, and agree to "Create a new empty partition table on this device ?"

ubuntu_raid_02.png ubuntu_raid_03.png

3. Select the "FREE SPACE" on the 1st drive then select "automatically partition the free space

ubuntu_raid_04.png ubuntu_raid_05.png

4. Ubuntu will create 2 partitions: / and swap, as shown below:

ubuntu_raid_06.png

5. On / partition select "bootable flag" and set it to "on"

ubuntu_raid_06.png

6. Repeat steps 2 to 5 for the other hard drive

As you see Ubuntu 9.10 makes RAID creation very easy. No need to define partition manually anymore! Ubuntu 9.10 also uses ext4, the latest Linux file system type.

Configuring the RAID

  1. Once you have completed your partitioning in the main "Partition Disks" page select "Configure Software RAID"
  2. Select "Yes"
  3. Select "Create new MD drive"
  4. Select RAID type: RAID 0, RAID 1, RAID 5 or RAID 6
  5. Number of devices. RAID 0 and 1 need 2 drives. 3 for RAID 5 and 4 for RAID 6.
  6. Number of spare devices. Enter 0 if you have no spare drive.
  7. select which partitions to use. Generally they will be sda1 and sdb1 or hda1 or hdb1. Generally the numbers will match and the different letters are for different hard drives.
  8. At this point the installation may become unresponsive; this is because the hard drives have already started the synchronization process. Repeat steps 3 to 7 with each pair of partitions you have created.
  9. Once done, select finish.

Formatting

Ubuntu 9.10 will automatically format your partitions.

Boot Loader

There are several problems reported by previous version of Ubuntu. But Ubuntu 9.10 already fixes them. In case your next HDD won't boot then simply install Grub to another drive. Examples ...

grub-install /dev/sdb

grub-install /dev/sdc 

Boot from Degraded Disk

If the default HDD fails then RAID will ask you to boot from degraded disk. If your server is located in a remote area, the best practice may be to configure this to occur automatically. Since Ubuntu 8.10 there is a new feature to boot automatically if default RAID disk fail. Simply:

  1. edit /etc/initramfs-tools/conf.d/mdadm
  2. change "BOOT_DEGRADED=false" to "BOOT_DEGRADED=true"

NB:

  • Additionally, this can be specified on the kernel boot line with the bootdegraded=[true|false]
  • You also can use #dpkg-reconfigure mdadm rather than CLI!

Test your RAID now!

It should go without saying that TESTING if your RAID configuration is necessary! Simply follow these step to test your RAID:

  1. shut-down your server
  2. remove the power and cable data of your first drive
  3. start your server and see if your server can boot from degraded disk!
  4. ???? What's the command to switch back from degraded mode once you do this (very necessary) test? {edit} perhaps this? change "BOOT_DEGRADED=true" to "BOOT_DEGRADED=false"

Troubleshooting

Swap space doesn't come up, error message in dmesg

Provided the RAID is working fine this can be fixed with

sudo update-initramfs -k all -u

Using mdadm

Intro

For those that want full control over the RAID configuration, mdadm may be a better way than using the menus.

Important initial facts

Before starting, be aware of the different metadata formats available. The default (at least on Lucid) is 0.90, which allows compatibility with most grub versions, but won't accept > 28 drives, nor drives >2TB.

Checking the status of your RAID

Two useful commands to check the status are:

cat /proc/mdstat 

This 'should' show output something similar to

 Personalities : [raid1] [raid6] [raid5] [raid4]
md5 : active raid1 sda7[0] sdb7[1]
      62685504 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      256896 blocks [2/2] [UU]

md6 : active raid5 sdc1[0] sde1[2] sdd1[1]
      976767872 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

From this information you can see that the available personalities on this machine are "raid1, raid6, raid4, and raid5" which means this machine is set-up to use raid devices configured in a raid1, raid6, raid4 and raid5 configuration.

You can also see in the three example meta devices that there are two raid 1 mirrored meta devices. These are md0 and md5. You can see that md5 is a raid1 array and made up of disk /dev/sda partition 7, and /dev/sdb partition 7, containing 62685504 blocks, with 2 out of 2 disks available and both in sync.

The same can be said of md0 only it is smaller (you can see from the blocks parameter) and is made up of /dev/sda1 and /dev/sdb1.

md6 is different in that we can see it is a raid 5 array, striped across 3 disks. These are /dev/sdc1, /dev/sde1 and /dev/sdd1, with a 64k "chunk" size which is basically a "write" size. Algorithm 2 shows it is a write algorithm patern 2 which is "left disk to right disk" writing across the array. You can see that all 3 disks are present and in sync.

sudo mdadm --query --detail /dev/md* 

but replace the * with the partition number.

Disk Array Operation

Note: You can add, remove disks or set them as faulty without stopping an array.

1. To stop an array, type:

sudo mdadm --stop /dev/md0 

Where /dev/md0 is the array device.

2. To remove a Disk from an Array

sudo mdadm --remove /dev/md0 /dev/sda1

Where /dev/md0 is the array device and /dev/sda is the faulty disk.

3. Add a Disk to an Array

sudo mdadm --add /dev/md0 /dev/sda1

Where /dev/md0 is the array device and /dev/sda is the new disk. Note: This is not the same as "growing" the array!

4. Start an Array, to reassemble (start) an array that was previously created:

mdadm --assemble --scan 

Mdadm will scan for defined arrays and start assembling it.

5. To track the status of the array as it gets started

cat /proc/mdstat 

Known bugs

Ubuntu releases starting with 12.04 does not support nested raids like levels 1+0 or 5+0 due to an unresolved issue https://bugs.launchpad.net/ubuntu/+source/mdadm/+bug/1171945

Resources

Installation/SoftwareRAID (last edited 2014-04-14 15:26:21 by roysk)