mdadm
同步速度¶
警告
当你调整系统默认配置时,务必充分理解参数含义以及影响,并做好详细记录。本文是 我的一次经验教训总结
我在 mdadm构建RAID10 实践时,由于服务器硬件规格极大,采用了 4TB 的 NVMe存储 ,所以在构建 RAID10
初始化RAID的 sync
同步非常耗时,原因是默认同步限速是 200MB/s
,对于海量存储来说完成首次全量同步可能会需要以天为计量单位。
例如,我的实践 mdadm构建RAID10 ,刚完成 RAID10
构建时检查 mdstat
:
cat /proc/mdstat
可以看到同步速度是 207272K/sec
也就是大约 200MB/s
,预估完成时间 1803min
(30小时):
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>
对于构建 在 mdadm_raid10 上部署LVM 底层基础工作,虽然没有明显影响(raid同步时依然可以读写),但是还是会带来一些不便(主要是想快速完成部署和验证 Gluster Atlas 性能)
检查同步速度¶
对于同步限制的主要参数调整是 md
设备 sync_speed_max
,这个参数可以通过 /sys/block/md10/md/sync_speed_max
检查:
检查
md
设备同步速度:
cat /sys/block/md10/md/sync_speed_max
默认值是 200000
也就是 200MB/s
:
200000 (system)
此外还有一个默认的
md_sync_speed_min
:
cat /sys/block/md10/md/sync_speed_min
默认值是 1000
也就是 1MB/s
:
cat /sys/block/md10/md/sync_speed_min
调整同步速度¶
可以在线调整同步速度:
# 我在构建RAID的初始化时调整放宽了同步速率10倍
sysctl -w dev.raid.speed_limit_max=2000000
sysctl -w dev.raid.speed_limit_min=10000
警告
md
配置默认 200MB/s
同步速度是有一定道理的,我在这里踩了一个坑(见下文)