加速 mdadm 软RAID的重建和重同步

在完成 mdadm构建RAID10 之后,检查 mdstat :

检查md状态
cat /proc/mdstat

可以看到 md10 在缓慢地 rsync :

检查md状态可以看到RAID正在构建
Personalities : [raid10]
md10 : active raid10 nvme11n1p1[11] nvme10n1p1[10] nvme9n1p1[9] nvme8n1p1[8] nvme7n1p1[7] nvme6n1p1[6] nvme5n1p1[5] nvme4n1p1[4] nvme3n1p1[3] nvme2n1p1[2] nvme1n1p1[1] nvme0n1p1[0]
      22499205120 blocks super 1.2 512K chunks 2 near-copies [12/12] [UUUUUUUUUUUU]
      [>....................]  resync =  0.3% (75593088/22499205120) finish=1803.0min speed=207272K/sec
      bitmap: 168/168 pages [672KB], 65536KB chunk

unused devices: <none>

这个同步时间在海量存储上非常缓慢: 例如 12块 NVMe存储 构建的 mdadm构建RAID10 ,同步速度只有 200M/s 速度,预计需要 30 小时 (1803.0min)

/proc/sys/dev/raid/{speed_limit_max,speed_limit_min} 内核参数

/proc/sys/dev/raid/speed_limit_min 是导致同步缓慢的关键,默认值是 1000 (KB),( /proc/sys/dev/raid/speed_limit_max 默认值是 200000 20w )

修改RAID同步速度,放大10倍
sysctl -w dev.raid.speed_limit_max=2000000
sysctl -w dev.raid.speed_limit_min=10000

然后再次观察 mdstat 就可以看到同步速度大约增加了5倍(大约900MB/s),预计同步只需要6个小时(371.9min):

调整RAID同步速度,放大10倍后,同步速度加快到5倍
Personalities : [raid10]
md10 : active raid10 nvme11n1p1[11] nvme10n1p1[10] nvme9n1p1[9] nvme8n1p1[8] nvme7n1p1[7] nvme6n1p1[6] nvme5n1p1[5] nvme4n1p1[4] nvme3n1p1[3] nvme2n1p1[2] nvme1n1p1[1] nvme0n1p1[0]
      22499205120 blocks super 1.2 512K chunks 2 near-copies [12/12] [UUUUUUUUUUUU]
      [==>..................]  resync = 10.0% (2262684480/22499205120) finish=371.9min speed=906662K/sec
      bitmap: 153/168 pages [612KB], 65536KB chunk

unused devices: <none>

其他加速方法…

参考