Basic usage of Software Raid (MDADM)

From Pulsed Media Wiki

Creating and Using Software RAID with mdadm on Debian

Software RAID on Debian is commonly configured using the mdadm utility. This guide provides a step-by-step approach for creating, configuring, and managing a basic RAID array (RAID 0, RAID 1, or RAID 5), suitable for both virtual and dedicated servers.

Prerequisites

  • Two or more storage devices (e.g., /dev/sdb, /dev/sdc)
  • Root or sudo privileges
  • Debian 10, 11, 12 or Ubuntu derivative
  • Non-mounted and unformatted target disks

Step 1: Install mdadm

Install the RAID management tool:

<syntaxhighlight lang="bash"> sudo apt update sudo apt install mdadm -y </syntaxhighlight>

During installation, you may be prompted to configure mdadm to email alerts. You can skip or configure as preferred.

Step 2: Identify Available Disks

List all attached storage devices:

<syntaxhighlight lang="bash"> lsblk </syntaxhighlight>

Or use:

<syntaxhighlight lang="bash"> sudo fdisk -l </syntaxhighlight>

Ensure the devices are **unmounted** and **do not contain any important data**.

Step 3: Create the RAID Array

Examples:

RAID 1 (Mirroring, 2 Disks)

<syntaxhighlight lang="bash"> sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc </syntaxhighlight>

RAID 0 (Striping, 2+ Disks)

<syntaxhighlight lang="bash"> sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc </syntaxhighlight>

RAID 5 (Striped with Parity, 3+ Disks)

<syntaxhighlight lang="bash"> sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd </syntaxhighlight>

You may need to confirm with yes to proceed.

Step 4: Monitor the RAID Creation

Check array status:

<syntaxhighlight lang="bash"> cat /proc/mdstat </syntaxhighlight>

To view detailed status:

<syntaxhighlight lang="bash"> sudo mdadm --detail /dev/md0 </syntaxhighlight>

Step 5: Create Filesystem on RAID Array

After creation completes, format the RAID array:

<syntaxhighlight lang="bash"> sudo mkfs.ext4 /dev/md0 </syntaxhighlight>

Step 6: Mount the RAID Array

Create mount point and mount it:

<syntaxhighlight lang="bash"> sudo mkdir /mnt/raid sudo mount /dev/md0 /mnt/raid </syntaxhighlight>

Optional: Set up ownership or permissions:

<syntaxhighlight lang="bash"> sudo chown user:user /mnt/raid </syntaxhighlight>

Step 7: Save mdadm Configuration

Save the array details for boot persistence:

<syntaxhighlight lang="bash"> sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf sudo update-initramfs -u </syntaxhighlight>

Step 8: Automount on Boot

Add entry to /etc/fstab:

<syntaxhighlight lang="bash"> sudo nano /etc/fstab </syntaxhighlight>

Add:

<syntaxhighlight lang="text"> /dev/md0 /mnt/raid ext4 defaults,nofail 0 0 </syntaxhighlight>

Save and close.

Optional: Assemble RAID After Reboot

If RAID is not automatically detected:

<syntaxhighlight lang="bash"> sudo mdadm --assemble --scan </syntaxhighlight>

Optional: Remove or Stop a RAID Array

To stop the array:

<syntaxhighlight lang="bash"> sudo umount /mnt/raid sudo mdadm --stop /dev/md0 </syntaxhighlight>

To remove the array:

<syntaxhighlight lang="bash"> sudo mdadm --remove /dev/md0 </syntaxhighlight>

To zero out superblocks:

<syntaxhighlight lang="bash"> sudo mdadm --zero-superblock /dev/sdb sudo mdadm --zero-superblock /dev/sdc </syntaxhighlight>

Summary Table

Task Command Description
Install mdadm apt install mdadm Install RAID tool
Create RAID 1 mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdX /dev/sdY Create mirrored array
Monitor RAID cat /proc/mdstat View sync/progress
Format array mkfs.ext4 /dev/md0 Prepare filesystem
Mount array mount /dev/md0 /mnt/raid Use RAID volume
Auto-mount /etc/fstab Persistent configuration
Save config mdadm --detail --scan >> /etc/mdadm/mdadm.conf Boot-time detection

See Also