RAID 1 is a hard disk configuration where the contents from one hard disk are mirrored onto another. This provides the user with some redundancy in case a disk fails. On your Linux system, the two hard drives are represented as a single file system. But in the background, making changes to your files is actually writing the changes to two disks at the same time. You can also add more than two disks to the configuration, as long as you keep the number even. Otherwise, something like RAID 5 will be more suitable.
There are many ways to configure a RAID setup. One of the easiest and most accessible ways is through the mdadm software package, which can be installed and used on any major Linux distribution. This is easier than some other RAID setups, since it doesn’t require any special hardware (like a RAID controller) and isn’t that hard to configure.
In this guide, we’ll go through the step by step instructions to install and setup mdadm on Linux, and create a RAID 1 configuration for two hard disks. Our example scenario will consist of two empty hard disks that are each 10 GB in size. This is in addition to our main hard disk, which is just used for the operating system.
Strictly speaking, RAID 1 is not a proper backup solution. It does provide some protection from disk failure, but what if you accidentally delete a file or a virus corrupts multiple files? Those undesirable changes are instantly written to both disks. RAID 1 provides high availability, but you shouldn’t use it as your only backup solution.
In this tutorial you will learn:
- How to install mdadm on major Linux distros
- How to partition hard disks for RAID setup
- How to create a new RAID device in mdadm and mount it
- How to keep the RAID array mount persistent
|Category||Requirements, Conventions or Software Version Used|
|System||Any Linux distro|
|Other||Privileged access to your Linux system as root or via the
# – requires given linux commands to be executed with root privileges either directly as a root user or by use of
$ – requires given linux commands to be executed as a regular non-privileged user
Install mdadm on major Linux distros
If mdadm is not already installed by default on your Linux distro, you can use the appropriate command below to install it through your system’s package manager.
$ sudo apt install mdadm
$ sudo dnf install mdadm
$ sudo pacman -S mdadm
After installation, you should reboot your system so that all modules get loaded into the kernel correctly.
Partition hard disks
The first thing we’ll need to do to configure our hard disks is to partition them as Linux RAID auto.
- We can see our hard disks by using the
fdiskcommand. This will show us how they are named, which we will need for future commands. As you can see in the screenshot below, our disks are called
/dev/sdc. These disks are just raw storage at the moment – they don’t have a partition table or anything else configured.
# fdisk -l
- Use the following command to begin partitioning the first disk. This will open up the fdisk menu. Substitute your own disk name if yours is different.
# fdisk /dev/sdb
- We will enter the following commands into the fdisk prompts in order to create a new partition and configure it as Linux RAID autodetect.
nto create a new partition.
pto mark this as a primary partition.
1for the partition number.
4. For first and last sector (2 prompts), just press the enter key for default response.
tto select the partition we’ve just created.
fdto configure Linux RAID autodetect on the partition.
wto write all these changes to the disk.
- We now need to do the exact same steps for our second disk. In our case, that would be disk
Step 2and Step 3for your second disk. Afterwards, you should be able to see your newly configured RAID partitions with the
# fdisk -l
Create RAID device
Now that we have our hard drives properly partitioned, we can use mdadm to create a RAID device with the following command. Remember that even though we have two hard drives, the system will see them as a single device and mirroring will happen in the background.
- Create a RAID array called
/dev/md0with this command, substituting your own drive names as necessary.
# mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[b-c]1
- Next, put a file system on the device. We’ll use ext4 in this example.
# mkfs.ext4 /dev/md0
- Now, make a directory to where you can mount the newly created RAID device. And then mount the device there.
# mkdir -p /mnt/raid1 # mount /dev/md0 /mnt/raid1
- Your RAID array should now be accessible at the mount point you defined.
$ cd /mnt/raid1
Configure persistent RAID mount
The only issue now is that your RAID mount will not survive a reboot. To avoid needing to manually mount it every time, we can configure the
/etc/fstab file. We’ll also save our mdadm configuration in the following steps.
- Edit the fstab file with nano or your favorite text editor, and add the following line.
/dev/md0 /mnt/raid1 ext4 defaults 0 0
- Next, use the following command to save your current mdadm configuration.
# mdadm --detail --scan --verbose >> /etc/mdadm.conf
That’s all there is to it. If you’ve made it this far, you should now have a working RAID 1 array that stays mounted even after a system reboot.
In this tutorial, we saw how to create a RAID 1 mirror array using mdadm on Linux. To help guide you through the steps, we used two empty 10 GB drives and configured our own software RAID. At the end, we also learned how to keep the RAID array mounted after a system reboot.
Even if you have a slightly different environment (i.e. more than 2 disks in your array), these instructions are easy to adapt to different scenarios and will help you to reliably create new RAID configurations.