Before we start you should know this tutorial assumes two things:
We need to list the available drives in the system we wish to create the array, this task can be accomplished with the ls command:
ls /dev/sd*
user@ubuntu:~$ ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda5  /dev/sdb  /dev/sdc  /dev/sdd
Listed are five drives, /sda /1 /2 contain the Operating System, /sdb and /sdc are empty and will be used to create the RAID1 array, /sdd can be left alone or used as a hot-spare.
First of all we should prepared the drives we want to include in the array, by preparing I am referring to partitioning each drive. For the purpose of partitioning we will be using a well known utility called fdisk. Repeat fdisk in every drive that will be part of the array, remember you will need to run the exact command and parameters. I’ll do my best to guide you through the required steps to format a drive with fdisk.
root@ubuntu:~# fdisk /dev/sdb
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-251658239, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-251658239, default 251658239):
Using default value 251658239
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
If you prefer a graphical interface, GParted is a good alternative to fdisk.
The answer is probably no!, if this is your case then I would recommend installing MDADM via the designated package manager for your Linux distribution. For Red Hat and derivatives you can use yum.
yum install mdadm
Debian and derivatives you can use.
apt-get install mdadm
If you carefully look at the command below you can see the creation of the array, RAID level selected, and the devices to be included in the array.
mdadm –create /dev/md0 –level=1 –raid-devices=2 /dev/sdb1 /dev/sdc1
/dev/md0
- is the name of our array
--level=1
- equals RAID1 or mirror
--raid-devices=2
- means the amount of required drives
You’ll be asked Continue creating array?, the answer is Yes. Now we add the new array to the systems mdadm configuration file mdadm.conf.
mdadm –detail –-scan >> /etc/mdadm.conf
Monitor the creation or rebuilt process of the designated array.
root@ubuntu:~# mdadm –detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun May  6 20:32:39 2012
     Raid Level : raid1
     Array Size : 125827000 (120.00 GiB 128.85 GB)
  Used Dev Size : 125827000 (120.00 GiB 128.85 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
Update Time : Sun May  6 20:33:10 2012
      State : active, resyncing Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
Resync Status : 1% complete
       Name : ubuntu:0  (local to host ubuntu)
       UUID : 91f3904c:e3580ae7:a2b1cf77:b1be9efa
     Events : 1
Number   Major   Minor   RaidDevice State
   0       8       17        0      active sync   /dev/sdb1
   1       8       33        1      active sync   /dev/sdc1If you look at Resync Status : 4% complete is the status of our array, You can also monitor all arrays within the system. I consider this to be a more elegant display.
root@ubuntu:~# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
      125827000 blocks super 1.2 [2/2] [UU]
      [>………………..]  resync =  3.8% (4838272/125827000) finish=30.7min speed=65591K/sec
unused devices:
Grab a cup of coffee or a beer it might take a while before the operation completes.
Now that our array is complete we format the volume. Format like you would format any other drive.
mkfs -t ext3 /dev/md0
If you want to make use of your new array which from now on we’ll call volume we need to mount it first. Create a directory where we can mount it.
mkdir /media/volume0
Now provide the path to the array and path to the directory we create in the previous step.
mount /dev/md0 /media/volume0
Make sure our user can access the partition, by giving ownership of the partition to our regular user. Otherwise you will have to be root to create anything. user:user will changing according to your system.
chown user:user /media/volume0/
Thanks to the df command we can see our RAID protected volume, check the bottom of the output.
user@ubuntu:~$ df -H
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        54G  2.0G   49G   4% /
udev            186M  4.1k  186M   1% /dev
tmpfs            78M  308k   78M   1% /run
none            5.3M     0  5.3M   0% /run/lock
none            194M     0  194M   0% /run/shm
/dev/md0        127G  197M  121G   1% /media/volume0
However, if you want the volume to to survive a reboot you need to add the volume to the /etc/fstab configuration file. You can easily add the new array by making use of the echo command.
echo ‘/dev/md0 /media/volume0 ext3 noatime,rw 0 0’ >> /etc/fstab
Let’s see if our new entry is in the /etc/fstab file.
[root@iou ~]# cat /etc/fstab
#
#
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=489ea666-1374-41ba-b4ef-725c04693437 /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/md0 /media/volume0 ext3 noatime,rw 0 0
There it is, now our array should be mount it every time we start the system. If you have questions or suggestion on how this tutorial could be improved leave a comment below, thank you.
centos, linux, mdadm, raid 1 — May 7, 2012