How To Set Up Linux RAID On Ubuntu 22.04

Originally Published: July 13, 2022

Update (Sep 14, 2022): I’ve switched to using ZFS because it has checksums for every block — I can’t imagine trusting a storage without checksums. This blog post covers how to setup ZFS and switch away from mdadm.

# We want to create a RAID 0 on /dev/sda and /dev/sdb drives.

# Create Partitions on drives first.

$ sudo fdisk /dev/sda

Welcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

The device contains 'linux_raid_member' signature and it will be removed by a write command. See fdisk(8) man page and --wipe option for more details.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xdad7c228.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-3907029167, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-3907029167, default 3907029167):

Created a new partition 1 of type 'Linux' and of size 1.8 TiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

# Same for the other drive: /dev/sdb

# Create a /dev/md0 across the two partitions.
$ sudo mdadm --create /dev/md0 --name=data --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1
$ sudo mkfs -t ext4 /dev/md0 # Create EXT4 filesystem
$ sudo mount /dev/md0 /data  # Mount them on /data

$ cat /proc/mdstat
> Personalities : [raid0] [linear] [multipath] [raid1] [raid6] [raid5] [raid4] [raid10]
> md0 : active raid0 sdb1[1] sda1[0]
>       2000142336 blocks super 1.2 512k chunks
> unused devices: <none>

$ sudo mdadm --detail --scan
> ARRAY /dev/md/mrjn-workstation:0 metadata=1.2 name=mrjn-workstation:0 UUID=49749d20:407900e2:8f5613e8:679a5226

# This goes into /etc/mdadm/mdadm.conf

DEVICE /dev/sda1 /dev/sdb1
ARRAY /dev/md/mrjn...

$ sudo update-initramfs -u

$ sudo blkid /dev/md0
> /dev/md0: UUID="1fb7c99e-02af-45c0-86e8-7a29d8f64ee9" BLOCK_SIZE="4096" TYPE="ext4"

# This goes into /etc/fstab

UUID=1fb7c99e-02af-45c0-86e8-7a29d8f64ee9 /data ext4 defaults,nofail,discard 0 0

# Check with lsblk
$ sudo lsblk # should look something like this

sda                   8:0    0 953.9G  0 disk
└─sda1                8:1    0 953.9G  0 part
  └─md0               9:0    0   1.9T  0 raid0 /data
sdb                   8:16   0 953.9G  0 disk
└─sdb1                8:17   0 953.9G  0 part
  └─md0               9:0    0   1.9T  0 raid0 /data

# Now, on a reboot, the raid array should mount on /data fine.

August 8, 2022