Replacing a Failed Mirror Disk in a Software RAID Array (mdadm)

269ac00f765508cb74b25d006dbf5bb2

Written by Dennis Nind

Last published at: April 2nd, 2019

The post describes the steps to replace a mirror disk in a software RAID array. In this example, we have used /dev/sda1 as the known good partition, and /dev/sdb1 as the suspect or failing partition. Before proceeding, it is recommended to backup the original disk. Before removing raid disks, please make sure you run the following command to write all disk caches to the disk:

# sync

1. Mark the disk as failed

# mdadm --manage /dev/md0 --fail /dev/sdb1

To verify that the disk is failed, check /proc/mdstat:

# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[2](F)      976773168 blocks [2/1] [U_] 
md1 : active raid1 sda2[0] sdb2[1]      976773168 blocks [2/2] [UU]

Failed disk will be marked as “(F)”.


2. Remove the disk by mdadm

# mdadm --manage /dev/md0 --remove /dev/sdb1

3. Replace the disk

Replace the faulty disk with new one.

4. Copy the partition table to the new disk

Copy the partition table to the new disk (Caution: This sfdisk command will replace the entire partition table on the target disk with that of the source disk – use an alternative command if you need to preserve other partition information):

# sfdisk -d /dev/sda | sfdisk /dev/sdb

5. Create mirror

Create the mirror of the disk:

# mdadm --manage /dev/md0 --add /dev/sdb1

6. Verify

To test the setup, enter the below command:

# /sbin/mdadm --detail /dev/md0

The following command will show the current progress of the recovery of the mirror disk:

# cat /proc/mdstat