我有一个新的 md RAID10,是我创建的(在 Synology DS416slim 上,这不是重点),当时正处于初始同步过程中:
root@ds416slim:~# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid10 sdd3[3] sdc3[2] sdb3[1] sda3[0]
1943881088 blocks super 1.2 64K chunks 2 near-copies [4/4] [UUUU]
[===>.................] resync = 19.8% (386172736/1943881088) finish=2613.6min speed=9932K/sec
md1 : active raid1 sdc2[1] sdb2[2] sda2[0] sdd2[3]
2097088 blocks [4/4] [UUUU]
md0 : active raid1 sdc1[1] sdb1[2] sda1[0] sdd1[3]
2490176 blocks [4/4] [UUUU]
unused devices: <none>
注意到它的同步速度非常糟糕(它应该更接近 100M 而不是 10M),我决定pause
使用echo idle > /sys/block/md2/md/sync_action
经过测试(其中hdparm
显示/dev/sdd
性能非常糟糕),我尝试使用 恢复它echo resync > /sys/block/md2/md/sync_action
。但是同步没有恢复并保持空闲状态:
root@ds416slim:~# echo resync > /sys/block/md2/md/sync_action
root@ds416slim:~# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid10 sdd3[3] sdc3[2] sdb3[1] sda3[0]
1943881088 blocks super 1.2 64K chunks 2 near-copies [4/4] [UUUU]
md1 : active raid1 sdc2[1] sdb2[2] sda2[0] sdd2[3]
2097088 blocks [4/4] [UUUU]
md0 : active raid1 sdc1[1] sdb1[2] sda1[0] sdd1[3]
2490176 blocks [4/4] [UUUU]
unused devices: <none>
root@ds416slim:~# cat /sys/block/md2/md/sync_action
idle
我检查了如何恢复同步的可能选项,因为sysfs
kernel.org 上的 MD 文档部分给出的列表没有选项resume
。阅读列出的选项似乎都暗示了resync
正确的操作,但它并没有恢复如上所示的初始同步。
我的问题是:
- 这会影响突袭吗?如何影响?
- 我如何恢复初始同步?
- 忽略整件事并开始使用突袭是否安全?
答案1
您需要使用以下repair
操作 - 即:echo repair > /sys/block/md2/md/sync_action
理论上,您可以在修复期间使用该阵列,但我会让第一次修复/重新同步完成,然后再将有价值的数据放入磁盘。
md/sync_action
这可用于监视和控制 MD 的重新同步/恢复过程。具体来说,在此处写入“check”将导致阵列读取所有数据块并检查它们是否一致(例如奇偶校验正确,或所有镜像副本相同)。发现的任何差异都不会得到纠正。发现的问题数量将存储在 md/mismatch_count 中。或者,可以写入“repair”,这将导致执行相同的检查,但任何错误都将得到纠正。最后,可以写入“idle”以停止检查/修复过程。
换句话说,resync
被忽略了,因为它不是一个被接受的行动——而check
,repair
和idle
是。