Home Linux Software RAID
Post
Cancel

Linux Software RAID

What is RAID?

RAID stands for either Redundant Array of Independent Disks, or Redundant Array of Inexpensive Disks. The intention of RAID is to spread your data across several disks, such that a single disk failure will not lose that data.

The current RAID drivers in Linux support the following levels:

  • Linear Mode : JBOD
  • RAID0/Stripe : Two or more disks. No redundancy.
  • RAID1/Mirror : Two or more disks. Redundancy.
  • RAID-4 : Three or more disks. Redundancy. Not used very often.
  • RAID-5 : Three or more disks. Redundancy. Allows one disk failure.
  • RAID-6 : Four or more disks. Redundancy. Allows two disks failure.
  • RAID-10 : Four or more disks. Combination of RAID-1 and RAID-0.

Linux Software RAID (often called mdraid or MD/RAID) makes the use of RAID possible without a hardware RAID controller.

mdadm utility

The mdadm utility can be used to create and manage storage arrays using Linux’s software RAID capabilities.

Creating a RAID Array

The following example shows the creation of a RAID 0 array with 8 NVME disks.

1
$ mdadm --create /dev/md0 --name=mdvol --level=raid0 --raid-devices=8 /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1 /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1 /dev/nvme8n1 /dev/nvme9n1

Check RAID array status

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$ cat /proc/mdstat
	Personalities : [raid0]
	md0 : active raid0 nvme9n1[7] nvme8n1[6] nvme7n1[5] nvme6n1[4] nvme5n1[3] nvme4n1[2] nvme3n1[1] nvme2n1[0]
      30004846592 blocks super 1.2 512k chunks

$  mdadm --detail /dev/md0
	/dev/md0:
	           Version : 1.2
	     Creation Time : Mon Sep 20 17:39:47 2021
	        Raid Level : raid0
	        Array Size : 30004846592 (27.94 TiB 30.72 TB)
	      Raid Devices : 8
	     Total Devices : 8
	       Persistence : Superblock is persistent
	
	       Update Time : Mon Sep 20 17:39:47 2021
	             State : clean
	    Active Devices : 8
	   Working Devices : 8
	    Failed Devices : 0
	     Spare Devices : 0
	
	        Chunk Size : 512K
	
	Consistency Policy : none
	
	              Name : host1:mdvol
	              UUID : 5908fc3f:8c8b8851:c0875278:ea274fec
	            Events : 0
	
	    Number   Major   Minor   RaidDevice State
	       0     259        2        0      active sync   /dev/nvme2n1
	       1     259        6        1      active sync   /dev/nvme3n1
	       2     259        7        2      active sync   /dev/nvme4n1
	       3     259        8        3      active sync   /dev/nvme5n1
	       4     259       11        4      active sync   /dev/nvme6n1
	       5     259       12        5      active sync   /dev/nvme7n1
	       6     259       10        6      active sync   /dev/nvme8n1
           7     259        9        7      active sync   /dev/nvme9n1 

Deleting a RAID Array

If a RAID volume is no longer required, it can be deactivated using the following commands:

1
2
$ mdadm --stop /dev/md0
mdadm: stopped /dev/md0

A Linux software RAID array stores all of the necessary information about a RAID array in a superblock. The superblock for the individual devices can be deleted by the following commands. By doing this, you can re-use these disks for new RAID arrays.

1
$ mdadm --zero-superblock /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1 /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1 /dev/nvme8n1 /dev/nvme9n1

Reference

This post is licensed under CC BY 4.0 by the author.

RAID - Redundant Array of Inexpensive Disks

Setting up LVM volumes on a mdraid array

Comments powered by Disqus.