
In this post I will walk though the steps that I used to setup software raid using mdadm on my RHEL 7.2 server.
The disks in my server are shown below.
- /dev/sda – 64gb SSD – OS disk
- /dev/sdb – 4TB – Unused
- /dev/sdc – 4TB – Unused
My plan is to create a RAID 1 mirror from the two 4TB drives (sdb and sdc) and mount the mirrored device to “/var/lib/libvirt/images” for use via KVM.
First we need to partition the disks. Note that we cannot use fdisk as does not support partition sizes over 4Tb in size. See below.
[root@titan]# fdisk /dev/sdb
WARNING: The size of this disk is 4.0 TB (4000000000000 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID partition table format (GPT).
Instead we will use parted. See steps below. Note that each step is repeated as we have two disks.
[root@titan]# parted –script /dev/sdb “mklabel gpt”
[root@titan]# parted –script /dev/sdc “mklabel gpt”
[root@titan]# parted –script /dev/sdb “mkpart primary 0% 100%”
[root@titan]# parted –script /dev/sdc “mkpart primary 0% 100%”
[root@titan]# parted –script /dev/sdb “set 1 raid on”
[root@titan]# parted –script /dev/sdc “set 1 raid on”
Now we will create the mirrored device using mdadm.
[root@titan]# mdadm –create /dev/md0 –level=raid1 –raid-devices=2 /dev/sdb1 /dev/sdc1
The new device needs to sync – we can watch its progress using mdstat.
[root@titan]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
3906117632 blocks super 1.2 [2/2] [UU]
[>………………..] resync = 0.0% (1893888/3906117632) finish=515.3min speed=126259K/sec
bitmap: 30/30 pages [120KB], 65536KB chunk
Note that I pretty much followed this guide line for line. Its an older article, but it checks out.
Using fdisk we can see our new mirror device.
[root@titan]# fdisk -l /dev/md0
Disk /dev/md0: 3999.9 GB, 3999864455168 bytes, 7812235264 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Let’s put a bird on it. No, let’s create a partition on it
[root@titan]# parted –script /dev/md0 “mklabel gpt”
[root@titan]# parted –script /dev/md0 “mkpart primary 0% 100%”
Great work. Now lets take a peak at our new partition.
[root@titan]# fdisk -l /dev/md0
Disk /dev/md0: 3999.9 GB, 3999864455168 bytes, 7812235264 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/md0p1 1 4294967295 2147483647+ ee GPT
Do you want to create a file system? I know I do. See below. Note the device name that we are using.
[root@titan]# mkfs -t ext4 /dev/md0p1
Now lets mount it up.
[root@titan]# mount /dev/md0p1 /var/lib/libvirt/images/
Don’t forget to add an entry to “/etc/fstab” so that our filesystem mounts at boot time.
Like this:
Like Loading...