如何提高Linux下软件RAID的重建速度

时间:2019-05-19 01:26:31  来源:igfitidea点击:

当我们学习RAID设备时,通常我们使用较小的磁盘来构建RAID阵列。
在这段时间里,当任何raid磁盘出现故障时,我们用一个新磁盘替换它。
然后raid重建只需要几分钟或几秒钟。
但请考虑,如果我们运行的是高存储容量服务器或任何备份驱动器,raid配置为多个tb大小,我们需要重新构建raid或由于一些问题开始重新构建。
它花费了大量的时间,并且我们需要一直允许' cat /proc/mdstat来检查状态。
现在要做的是,怎样才能加快raid重建速度。
这可以通过多种方式实现。
我们一般可以用下面的方法来改变内核参数。

检查当前恢复速度和状态

这里有个raid磁盘管理的一个服务器发生了故障,所以我们用另一个磁盘替换它并进行了配置。
RAID重建速度非常慢,你可以看到下面的输出。

# cat /proc/mdstat

Personalities : [raid1]
md1 : active raid1 sdb2[0] sda2[1]
      4193216 blocks [2/2] [UU]

md2 : active raid1 sdb3[0] sda3[1]
      968372864 blocks [2/2] [UU]
      [=====>......] check = 48.5% (470179584/968372864) finish=7698.8min speed=1078K/sec

md0 : active raid1 sdb1[0] sda1[1]
      4193216 blocks [2/2] [UU]
      resync=DELAYED

unused devices: <none>

现在我检查内核参数配置最小和最大raid重建速度使用以下命令。

# cat /proc/sys/dev/raid/speed_limit_max
200000

# cat /proc/sys/dev/raid/speed_limit_min
1000

根据以上输出,我发现raid重构速度最小为1000kb /Sec/Disc,最大为200000kb /Sec/Disc。

提高最低RAID恢复速度

正如我们所看到的,最大速度看起来不错,但最低速度很低,我们需要增加。
在设置任何速度之前,请确保有足够的CPU和RAM资源。
更改还可能影响在同一服务器上运行的其他应用程序的速度。
使用下面的命令将最小速度设置为大约20MB/秒。

# echo "20000" /proc/sys/dev/raid/speed_limit_min

再次检查RAID恢复速度和状态

完成上述改变后,让我们再次检查raid重建速度使用相同的命令。
现在根据下面的命令输出速度是3426K/秒,比之前好。

# cat /proc/mdstat

Personalities : [raid1]
md1 : active raid1 sdb2[0] sda2[1]
      4193216 blocks [2/2] [UU]

md2 : active raid1 sdb3[0] sda3[1]
      968372864 blocks [2/2] [UU]
      [=====>......] check = 48.6% (470793472/968372864) finish=2419.7min speed=3426K/sec

md0 : active raid1 sdb1[0] sda1[1]
      4193216 blocks [2/2] [UU]
      resync=DELAYED

unused devices: <none>