RAIDStorageLinux8 min read

Configure software RAID

Guide to configure RAID 1 or RAID 10 via software on Linux for data redundancy.


Overview

Software RAID using mdadm provides data redundancy without requiring a hardware RAID controller. This guide covers RAID 1 (mirroring) and RAID 10 (mirrored stripes).

Prerequisites

  • Bare Metal server with multiple disks of the same size
  • Fresh Ubuntu/Debian installation
  • Root or sudo access

Step 1: Install mdadm

bash
sudo apt update
sudo apt install -y mdadm

Step 2: Identify your disks

bash
lsblk
sudo fdisk -l

Example output showing two disks:

terminal
/dev/sda - 1TB
/dev/sdb - 1TB

Step 3: Prepare the disks

Wipe existing partitions (this destroys all data):

bash
sudo wipefs -a /dev/sda
sudo wipefs -a /dev/sdb

Create partitions for RAID:

bash
sudo fdisk /dev/sda
# n → new partition → p → primary → 1 → defaults → t → fd (Linux RAID) → w
sudo fdisk /dev/sdb
# Same steps as above

Step 4: Create RAID 1 array

bash
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

Confirm with y when prompted.

For RAID 10 (4 disks)

bash
sudo mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

Step 5: Monitor the sync

bash
cat /proc/mdstat
sudo mdadm --detail /dev/md0

Initial sync can take hours depending on disk size. The array is usable during sync.

Step 6: Create filesystem and mount

bash
sudo mkfs.ext4 /dev/md0
sudo mkdir -p /mnt/data
sudo mount /dev/md0 /mnt/data

Add to /etc/fstab for persistent mounting:

bash
echo '/dev/md0 /mnt/data ext4 defaults 0 2' | sudo tee -a /etc/fstab

Step 7: Save RAID configuration

bash
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u

Monitoring and alerts

Enable email notifications for RAID events:

bash
sudo nano /etc/mdadm/mdadm.conf

Add:

terminal
MAILADDR admin@yourdomain.com

Enable the monitoring daemon:

bash
sudo systemctl enable mdmonitor
sudo systemctl start mdmonitor

Simulate a disk failure (testing)

bash
# Mark a disk as failed
sudo mdadm --manage /dev/md0 --fail /dev/sdb1

# Check array status
sudo mdadm --detail /dev/md0

# Remove the failed disk
sudo mdadm --manage /dev/md0 --remove /dev/sdb1

# Add a replacement disk
sudo mdadm --manage /dev/md0 --add /dev/sdc1

Regular maintenance

bash
# Check array health
sudo mdadm --detail /dev/md0

# Run a consistency check
sudo echo check > /sys/block/md0/md/sync_action

# Monitor with a cron job
echo '0 6 * * 0 root mdadm --detail /dev/md0 | mail -s "RAID Status" admin@yourdomain.com' | sudo tee /etc/cron.d/raid-check

Performance comparison

RAID LevelMin DisksUsable SpaceRead SpeedWrite SpeedFault Tolerance
RAID 1250%1 disk
RAID 10450%N/2×1 per mirror

Was this guide helpful?