MDADM (Linux Software RAID) Cheatsheet



Published: 2018-03-23 00:00:51 +0000
Categories: BASH,

Language

BASH

Description

You should always partition disks rather than using the disk itself. Different manufacturers and models can have very slightly different capacities. So if you try to replace a 4TB WD drive with (say) a 4TB Hitachi, you may find you can't add it to the array. Creating a partition of a set size tends to address this, though on slightly larger disks it may leave a few bytes unused

After any changes, remember to skip down to the bottom and save the array config so it'll persist after reboot!

Snippet

## Creating Arrays

# Create a RAID1 array
mdadm --create /dev/md1 --metadata 1.2 --level=mirror --raid-devices=2 /dev/sdb1 /dev/sdb1

# Create a RAID10 array
mdadm --create /dev/md1 --level=10 --raid-devices=4 /dev/sd[b-e]1

# Create a RAID5 array (it's 2019, _don't_ do this!)
mdadm --create --verbose /dev/md1 --level=5 --raid-devices=3 /dev/sd[b-d]1

# Create a RAID6 array
mdadm --create --verbose /dev/md1 --level=6 --raid-devices=4 /dev/sd[b-e]1

# Temporarily create a RAID1 with 1 disk missing (i.e. only use a single disk)
#
# you might risk this if you've limited disk slots and are trying to transfer 
# from one array to a new one so you can use larger capacity disks
# Beware the risk of that single drive failing whilst you do it
#
# See Adding disks for next step below
mdadm --create /dev/md1 --metadata 1.2 --level=mirror --raid-devices=2 missing /dev/sdb1

## Adding Disks

# Add an drive into an array (will default to Hot Spare if enough drives already present)
mdadm --manage /dev/md1 --add /dev/sdc1

# Growing an array
# We assume here the array was previously created with 3 drives
mdadm --manage /dev/md1 --add /dev/sdc1 # Effectively creating hot spare
mdadm --grow /dev/md1 --raid-devices=4 # Grow it to 4 drives, will start a resync
umount /dev/md1
fsck -f /dev/md1
resize2fs /dev/md1 # Command may differ depending on your filesystem

## Removing disks

# Fail and remove 
mdadm --fail /dev/md1 /dev/sdb1 --remove /dev/sdb1

# Force remove (if the disk is no longer visible to the kernel)
mdadm -r /dev/md1 failed # Remove all failed devices
mdadm -r /dev/md1 detached # Remove all devices not in /dev

## Removing arrays
mdadm --stop /dev/md1
mdadm --remove /dev/md1
mdadm --zero-superblock /dev/sdb1

## General

# Check status of the arrays
cat /proc/mdstat

# Save array details to config so they persist after reboot
mdadm --detail --scan >> /etc/mdadm.conf

Keywords

RAID, mdadm, linux, software, RAID, arrays, cheatsheet, howto, documentation,

Latest Posts

Remotely backing up PFsense Configuration (BASH)
FFMPEG: Converting RMVB to X264 MP4 (BASH)
Recursively print table (print_r equivalent) (LUA)
Bulk Delete Comments from (Self-Hosted) JIRA Issues (Misc)
Add a static entry to the ARP table (BASH)
SSL Cipher Hex codes to Human Readable Names (Misc)
Convert Ascii to Binary (BASH)
Intercepting Outbound DNS Queries (BASH)
Handle Google Verification files within NGinx Configuration (NGinx)
Getting WhatsApp Rich Snippet Previews Working (Misc)

Copyright © 2018 Ben Tasker | Sitemap | Privacy Policy
Available at snippets.bentasker.co.uk and snippets.6zdgh5a5e6zpchdz.onion