我想知道是否有任何程序可以启动两个或多个独立阵列的并发重建?
一个正在重建,另一个保持状态:
md2 : active raid10 sdf5[4] sdd5[6] sdc5[5] sda5[7]
7804374912 blocks super 1.2 64K chunks 2 near-copies [4/3] [_UUU]
[=====>...............] recovery = 28.8% (1124301568/3902187456) finish=364.1min speed=127142K/sec
md4 : active raid5 sde7[3](R) sdc7[0] sda7[2] sdb7[1]
15623708416 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/3] [UUU]
recovery=DELAYED
有什么办法可以并行启动另一个 md 阵列恢复?
更新 1:
感谢接受的答案,我节省了大量时间:
md2 : active raid10 sdb5[8](R) sdf5[4] sdd5[6] sdc5[5] sda5[7]
7804374912 blocks super 1.2 64K chunks 2 near-copies [4/4] [UUUU]
[===============>.....] recovery = 78.9% (3079104384/3902187456) finish=123.8min speed=110796K/sec
md4 : active raid5 sde7[3](R) sdc7[0] sda7[2] sdb7[1]
15623708416 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/3] [UUU]
[>....................] recovery = 0.0% (3492100/7811854208) finish=708.0min speed=183794K/sec
由于我之前的不同尝试行为,我仍然遇到了非常有趣的问题,这些问题将在单独的答案中发布。
如果真正分开(不同组的物理驱动器),它们应该并行运行。
但是,当多个阵列共享相同的驱动器(同一驱动器的不同分区)时,重建会延迟,因为在这里并行运行不会加快速度,反而会减慢速度。
您可以通过设置 sync_force_parallel 标志强制重新同步并行运行。
frostschutz的回答一针见血,我立马就开始了parallel rebuild,不过应该没什么影响,第一个array rebuild的速度突然下降了10倍!
我无法理解为什么我有影响,直到我看到 mdadm -D details of array,突然意识到它开始重建错误的驱动器。
尝试删除、清除替换超级块并添加为备用新驱动器失败几次,但它仍然开始替换错误的驱动器。
然后我发现我可以查看每个驱动器状态的 md 数组:
就是这样!我在不同的位置尝试使用不同的驱动器作为目标,因此我尝试将数据从不同的 md 驱动器迁移到不同的目标,然后取消操作,但是当我发出 mdadm /dev/mdX --replace /dev/sdX 驱动器时,它被标记为
want_replacement
系统不会忘记这一点,但我会忘记 :D所以清除标志:
把所有东西都放好,现在添加备用驱动器开始更换正确的驱动器,同时所有速度都达到最大值: