mdadm is the software raid tools used in Linux system. One key problem with the software raid, is that it resync is utterly slow comparing with the existing drive speed (SSD or NVMe). The resync speed set by mdadm is default for regardless of whatever the drive type you have. To view the default values, you may run the following:
[[email protected] ~]# sysctl dev.raid.speed_limit_min dev.raid.speed_limit_min = 1000 [[email protected] ~]# sysctl dev.raid.speed_limit_max dev.raid.speed_limit_max = 200000
As you see, the minimum value starts from 1000 and can max upto 200K. Although, it can max upto 200K, but as min value is too low, mdadm always tries to keep the value below average to your speed available. To speed up, we would like to maximize these numbers. To change the numbers, you may run something like the following:
sysctl -w dev.raid.speed_limit_min=500000 sysctl -w dev.raid.speed_limit_max=5000000
Once done, you may now check the speed is going up immediately:
[[email protected] ~]# cat /proc/mdstat Personalities : [raid1] md3 : active raid1 sdb5 sda5 1916378112 blocks super 1.2 [2/2] [UU] [===============>.....] resync = 76.2% (1461787904/1916378112) finish=27.4min speed=276182K/sec bitmap: 5/15 pages [20KB], 65536KB chunk md0 : active raid1 sdb1 sda1 1046528 blocks super 1.2 [2/2] [UU] bitmap: 0/1 pages [0KB], 65536KB chunk md2 : active raid1 sda2 sdb2 78576640 blocks super 1.2 [2/2] [UU] bitmap: 1/1 pages [4KB], 65536KB chunk md1 : active raid1 sdb3 sda3 4189184 blocks super 1.2 [2/2] [UU] unused devices: <none>
One thing to keep in mind is that, if you try to set the value too high, like we did, this might cause some handsome load on your system. If you see the load is unmanageable, you should focus on decreasing the number to something like 50k-100k for the min value.
Making The Sysctl Value Permanent
As we have established the kernel variable values on runtime, this would go back to default once we restart/reboot the server. If you want to persist the values, you need to put these values to /etc/sysctl.conf file. To make them persist, open the sysctl.conf file:
Add the following lines at the end of the file:
dev.raid.speed_limit_min = 500000 dev.raid.speed_limit_max = 5000000
Save the file, and run the following command:
This should persist your values for those variables after the reboot as well as runtime.