mdadm:恢复初始同步

mdadm:恢复初始同步

我有一个新的 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

我检查了如何恢复同步的可能选项,因为sysfskernel.org 上的 MD 文档部分给出的列表没有选项resume。阅读列出的选项似乎都暗示了resync正确的操作,但它并没有恢复如上所示的初始同步。

我的问题是:

  • 这会影响突袭吗?如何影响?
  • 我如何恢复初始同步?
  • 忽略整件事并开始使用突袭是否安全?

答案1

您需要使用以下repair操作 - 即:echo repair > /sys/block/md2/md/sync_action

理论上,您可以在修复期间使用该阵列,但我会让第一次修复/重新同步完成,然后再将有价值的数据放入磁盘。

md 手册页:

md/sync_action

这可用于监视和控制 MD 的重新同步/恢复过程。具体来说,在此处写入“check”将导致阵列读取所有数据块并检查它们是否一致(例如奇偶校验正确,或所有镜像副本相同)。发现的任何差异都不会得到纠正。发现的问题数量将存储在 md/mismatch_count 中。或者,可以写入“repair”,这将导致执行相同的检查,但任何错误都将得到纠正。最后,可以写入“idle”以停止检查/修复过程。

换句话说,resync被忽略了,因为它不是一个被接受的行动——而checkrepairidle是。

相关内容