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:
1 |
# sync |
1. Mark the disk as failed
1 |
# mdadm --manage /dev/md0 --fail /dev/sdb1 |
To verify that the disk is failed, check /proc/mdstat:
1 2 3 4 5 6 7 |
# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10] <strong>md0 : active raid1 sda1[0] sdb1[2](F)</strong> 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
1 |
# 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):
1 |
# sfdisk -d /dev/sda | sfdisk /dev/sdb |
4a. Limit speed:
echo 5000 > /proc/sys/dev/raid/speed_limit_max (5000=5MB/s)
5. Create mirror
Create the mirror of the disk:
1 |
# mdadm --manage /dev/md0 --add /dev/sdb1 |
6. Verify
To test the setup, enter the below command:
1 |
# /sbin/mdadm --detail /dev/md0 |
The following command will show the current progress of the recovery of the mirror disk:
1 2 3 |
# cat /proc/mdstat watch -n1 iostat -k 1 2 |