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/sdc1
If 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