How to Set Up Software RAID 1 on an Existing Linux Distribution

In this tutorial, we’ll be talking about RAID, specifically we will set up software RAID 1 on a running Linux distribution.

What is RAID?

RAID stands for Redundant Array of Inexpensive Disks. RAID allows you to turn multiple physical hard drives into a single logical hard drive. There are many RAID levels such as RAID 0, RAID 1, RAID 5, RAID 10 etc.

Here we will discuss about RAID 1 which is also known as disk mirroring. RAID 1 creates identical copies of data. If you have two hard drives in RAID 1, then data will be written to both drives. The two hard drives have the same data.

The nice part about RAID 1 is that if one of your hard drive fails, your computer or server would still be up and running because you have a complete, intact copy of the data on the other hard drive. You can pull the failed hard drive out while the computer is running, insert a new hard drive and it will automatically rebuilds the mirror.

The downside of RAID 1 is that you don’t get any extra disk space. If your two hard drives are both 1TB, then the total usable volume is 1TB instead of 2TB.

Hardware RAID vs Software RAID

To set up RAID, you can either use a hard drive controller, or use a piece of software to create it. A hard drive controller is a PCIe card that you put into a computer. Then you connect your hard drives to this card. When you boot up the computer, you are going to see an option that allows you to configure the RAID. You can install an operating system on top of hardware RAID which can increase uptime.

Software RAID requires you already installed an operating system. It’s good for storing data.

Basic Steps to Create Software RAID 1 on Linux

  • First you need to have a Linux distribution installed on your hard drive. In this tutorial we will name it /dev/sda.
  • Then you are going to grab two hard drives which will be named /dev/sdb and /dev/sdc in this post. These two hard drives can be of different sizes. Remember to back up your existing data before formating your hard drives.
  • Next, we will create special file systems on /dev/sdb and /dev/sdc.
  • And finally create the RAID 1 array using the mdadm utility.

Step 1: Format Hard Drive

Insert two hard drives into your Linux computer, then open up a terminal window. Run the following command to check the device name.

sudo fdisk -l

linux fdisk partition

You can see mine is /dev/sdb and /dev/sdc.

Then run the following 2 commands to make new MBR partition table on the two hard drives. (Note: this is going to wipe out all existing partitions and data from these two hard drives. Make sure your data is backed up.)

sudo parted /dev/sdb mklabel msdos

sudo parted /dev/sdc mklabel msdos

You can create GPT partition table by replacing msdos with gpt, but for the sake of compatibility, this tutorial will create MBR partition table.

Next, use the fdisk command to create a new partition on each drive and format them as a Linux raid autodetect file system. First do this on /dev/sdb.

sudo fdisk /dev/sdb

Follow these instructions.

  1. Type n to create a new partition.
  2. Type p to select primary partition.
  3. Type 1 to create /dev/sdb1.
  4. Press Enter to choose the default first sector
  5. Press Enter to choose the default last sector. This partition will span across the entire drive.
  6. Typing p will print information about the newly created partition. By default the partition type is Linux.
  7. We need to change the partition type, so type t.
  8. Enter fd to set partition type to Linux raid autodetect.
  9. Type p again to check the partition type.
  10. Type w to apply the above changes.

software raid 1 linux raid autodetect

Follow the same instruction to create a Linux raid autodetect partition on /dev/sdc.

Now we have two raid devices /dev/sdb1 and /dev/sdc1.

Step 2: Install mdadm

mdadm is used for managing MD (multiple devices) devices, also known as Linux software RAID.

Debian/Ubuntu:     sudo apt install mdadm

CentOS/Redhat:     sudo yum install mdadm

SUSE:              sudo zypper install mdadm

Arch Linux         sudo pacman -S mdadm

Let’s examine the two devices.

sudo mdadm --examine /dev/sdb /dev/sdc

Software RAID 1

You can see that both are the type fd (Linux raid autodetect). At this stage, there’s no RAID setup on /dev/sdb1 and /dev/sdc1 which can be inferred with this command.

sudo mdadm --examine /dev/sdb1 /dev/sdc1

md superblock

Step 3: Create RAID 1 Logical Drive

Execute the following command to create RAID 1. The logical drive will be named /dev/md0.

sudo mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sdb1 /dev/sdc1

linux raid 1 array disk mirroring

Now we can check it with:

cat /proc/mdstat

linux software raid 1 set up

You can see that md0 is active and is a RAID 1 setup. To get more detailed information about /dev/md0, we can use the below commands:

sudo mdadm --detail /dev/md0

mdadm details

To obtain detailed information about each raid device, run this command:

sudo mdadm --examine /dev/sdb1 /dev/sdc1

linux raid devices

Step 4: Create File System on the RAID 1 Logical Drive

Let’s format it to ext4 file system.

sudo mkfs.ext4 /dev/md0

Then create a mount point /mnt/raid1 and mount the RAID 1 drive.

sudo mkdir /mnt/raid1

sudo mount /dev/md0 /mnt/raid1

You can use this command to check how much disk space you have.

df -h /mnt/raid1

raid 1 size vs volume

Step 5: Test

Now let’s go to /mnt/raid1 and create a text file.

cd /mnt/raid1

sudo nano raid.txt

Write something like

This is raid 1 device.

Save and close the file. Next, remove one of your drive out from your computer and check the status RAID 1 device again.

sudo mdadm --examine /dev/sdb1 /dev/sdc1

raid 1 disk mirroring

You can see that /dev/sdc1 is not available. If we check /dev/md0, we can see that one RAID device is removed.

sudo mdadm --detail /dev/md0

raid device removed

However, the text file is still there.

cat /mnt/raid1/raid1.txt

raid 1 disk failure

To add the failed drive (in this case /dev/sdc1) back to the RAID, run the following command.

sudo mdadm --manage /dev/md0 --add /dev/sdc1

raid recovery

It’s very important to save our RAID1 configuration with the below command.

sudo mdadm --detail --scan --verbose | sudo tee /etc/mdadm/mdadm.conf


ARRAY /dev/md/0 level=raid1 num-devices=2 metadata=1.2 spares=1 name=xenial:0 UUID=c7a2743d:f1e0d872:b2ad29cd:e2bee48c

On some Linux distribution such as CentOS, the config file for mdadm is /etc/mdadm.conf.

To automatically mount the RAID 1 logical drive on boot time, add an entry in /etc/fstab file like below.

/dev/md0  /mnt/raid1  ext4  defaults  0  0

As always, if you found this post useful,  subscribe to our free newsletter or follow us on Google+Twitter or like our Facebook page.

Rate this tutorial
[Total: 29 Average: 4.1]

8 Responses to “How to Set Up Software RAID 1 on an Existing Linux Distribution

  • Brandon Totel
    3 years ago

    I already have Debian installed to one 128GB SSD and I already have another 128GB SSD in the box as well. Can I create a Raid1 mirror using the current OS drive and the other blank drive or will this process wipe out the OS drive?

    • Xiao Guo-An (Admin)
      3 years ago

      This tutorial is not applicable to your situation, it will wipe out your OS drive.

  • Brandon Totel
    3 years ago

    Is there a way to enable Raid1 if you already has the OS installed on one of the drives? I want to create a Raid1 setup for my OS drive but this tutorial will wipe that out so how do you have the OS installed and setup a Raid1?

    • Menoo320
      3 months ago

      Have you found out how to do this? There is literally no guide on this use case.

  • David Tobar
    1 year ago

    will like to know the steps to RAID 1 two external 4T drives. thanks

  • Hi, great article, easy to read and follow. Thank you for this. Everything worked flawlessly, and I am quite proud of my self being able to follow Linux CLI instructions where everything works without any hiccups as I am new to Linux (ubuntu) and the learning curve is challenging for someone with zero programming knowledge.

    My question is now that my drives are working and they are mounted, how do I actually use them?
    When I try to open the raid 1 folder on /mnt, it says I have no permission.

    Also, instead of having to go to home/mnt/raid1, how to I create a shortcut so it shows up in file explorer on the left hand side (like my computer, downloads, pictures, or when you plug in a USB stick, it shows up on the left hand side )?

    And finally, how do I rename it from raid1 to something else like “1TB NAS RAID1”?

  • I enjoyed your article but have one question. If I want to create a Raid 0 what would I change? I assume it would be at this stage:

    Step 3: Create RAID 1 Logical Drive
    Execute the following command to create RAID 1. The logical drive will be named /dev/md0.

    sudo mdadm –create /dev/md0 –level=mirror –raid-devices=2 /dev/sdb1 /dev/sdc1

  • Hi,

    Love the article.

    What if the OS crashes, how do you remount this RAID elsewhere?


Leave a Comment

  • Comments with links are moderated by admin before published.
  • Your email address will not be published.
  • Use <pre> ... </pre> HTML tag to quote the output from your terminal/console.
  • Please use the community ( for questions unrelated to this article.
  • I don't have time to answer every question. Making a donation would incentivize me to spend more time answering questions.