Find us on social media
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 mdadmStep 2: Identify your disks
bash
lsblk
sudo fdisk -lExample output showing two disks:
terminal
/dev/sda - 1TB
/dev/sdb - 1TBStep 3: Prepare the disks
Wipe existing partitions (this destroys all data):
bash
sudo wipefs -a /dev/sda
sudo wipefs -a /dev/sdbCreate 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 aboveStep 4: Create RAID 1 array
bash
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1Confirm 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/sdd1Step 5: Monitor the sync
bash
cat /proc/mdstat
sudo mdadm --detail /dev/md0Initial 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/dataAdd to /etc/fstab for persistent mounting:
bash
echo '/dev/md0 /mnt/data ext4 defaults 0 2' | sudo tee -a /etc/fstabStep 7: Save RAID configuration
bash
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -uMonitoring and alerts
Enable email notifications for RAID events:
bash
sudo nano /etc/mdadm/mdadm.confAdd:
terminal
MAILADDR admin@yourdomain.comEnable the monitoring daemon:
bash
sudo systemctl enable mdmonitor
sudo systemctl start mdmonitorSimulate 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/sdc1Regular 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-checkPerformance comparison
| RAID Level | Min Disks | Usable Space | Read Speed | Write Speed | Fault Tolerance |
|---|---|---|---|---|---|
| RAID 1 | 2 | 50% | 2× | 1× | 1 disk |
| RAID 10 | 4 | 50% | N× | N/2× | 1 per mirror |
Was this guide helpful?