Software RAID with mdadm Create, monitor, and repair RAID 1 or RAID 5 with mdadm on a dedicated server. ~16 min read Advanced #raid #mdadm #storage #dedie Software RAID with mdadm Linux software RAID uses mdadm to group multiple disks into a fault-tolerant volume. This guide applies to HolyCloud dedicated servers where you manage disks (RAID 1 mirror or RAID 5 with parity). Prerequisites Dedicated server with at least two identical disks (RAID 1) or three+ (RAID 5) IPMI/KVM access if system no longer boots Full backup before any partition manipulation Debian/Ubuntu distribution or manual installation Warning: creating RAID on disks containing data erases them. Check lsblk and labels. Disk inventory lsblk -o NAME,SIZE,TYPE,MODEL,SERIAL cat /proc/mdstat mdadm --detail --scan Install mdadm if missing: apt update && apt install -y mdadm Create RAID 1 (mirror) Example: /dev/sdb and /dev/sdc, partition type Linux RAID (fd for MBR, raid for GPT). parted /dev/sdb --script mklabel gpt mkpart primary 1MiB 100% set 1 raid on parted /dev/sdc --script mklabel gpt mkpart primary 1MiB 100% set 1 raid on Create array: mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1 Follow prompts (optional alert email). Format: mkfs.ext4 /dev/md0 mkdir -p /mnt/raid mount /dev/md0 /mnt/raid Persistence: mdadm.conf and fstab Capture configuration: mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf update-initramfs -u UUID for fstab: blkid /dev/md0 Add to /etc/fstab: UUID=xxxxxxxx /mnt/raid ext4 defaults,nofail 0 2 Create RAID 5 (overview) Three disks minimum: mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sdd1 /dev/sde1 /dev/sdf1 Usable capacity ≈ (N-1) × smallest disk size. Monitoring Real-time state: cat /proc/mdstat mdadm --detail /dev/md0 watch -n 2 cat /proc/mdstat Alert email: configure MAILADDR in /etc/mdadm/mdadm.conf and a local MTA. Replace a failed disk Mark disk failed (example sdb1): mdadm /dev/md0 --fail /dev/sdb1 mdadm /dev/md0 --remove /dev/sdb1 After physical replacement, recreate identical partition, then: mdadm /dev/md0 --add /dev/sdb1 Resync appears in /proc/mdstat (recovery). Degraded at boot mdadm --assemble --scan mdadm --detail /dev/md0 Troubleshooting | Situation | Command | |-----------|----------| | RAID stopped | mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 | | Inconsistent superblock | mdadm --examine /dev/sdb1 (compare members) | | Force assemble (danger) | Last resort — HolyCloud support | Need help? For hardware RAID (LSI/HPE controller), specify the model in your ticket — procedure differs from mdadm. Continue reading Previous article Serial console via IPMI Read