首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多重mdadm raid并行重建

多重mdadm raid并行重建
EN

Unix & Linux用户
提问于 2023-02-07 20:41:28
回答 2查看 104关注 0票数 2

我想知道是否有任何程序来启动两个或多个独立数组的并行重建?

当一个人正在重建时,另一个人仍然处于地位:

代码语言:javascript
运行
复制
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:

感谢被接受的答案,我节省了大量的时间:

代码语言:javascript
运行
复制
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

但我仍然有非常有趣的问题,因为我的不同的审判行动,这将张贴在单独的答复。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2023-02-07 21:10:51

如果它们确实是分开的,它们应该并行运行(不同的物理驱动器)。

但是,当多个数组共享相同的驱动器(同一驱动器的不同分区)时,重新构建将被延迟,因为在这里并行运行不会加快速度,而是减慢它们的速度。

通过设置sync_force_parallel标志,您可以强制resyncs并行运行。

代码语言:javascript
运行
复制
echo 1 | tee > /sys/block/md*/md/sync_force_parallel
票数 1
EN

Unix & Linux用户

发布于 2023-02-08 17:27:46

这个冷酷的回答是刻板的,我立刻得到了并行重建的启动,但是即使没有影响,第一次数组重建的速度突然下降了10次!

代码语言:javascript
运行
复制
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 = 75.3% (2941270464/3902187456) finish=1723.0min speed=9294K/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 =  6.9% (542682052/7811854208) finish=692.7min speed=174889K/sec

我不明白为什么我有影响,直到我看到mdadm -D的数组细节,突然意识到它开始重建错误的驱动器。

尝试删除失败,清除超级块的更换和添加备用新驱动器几次,但它还是开始更换错误的驱动器。

然后,我发现可以查看每个驱动器状态下的md数组:

代码语言:javascript
运行
复制
#cat /sys/block/md4/md/rd?/state
in_sync
in_sync,want_replacement
in_sync,want_replacement

就这样了!我在不同的位置尝试以不同的驱动器作为目标,因此我尝试将数据从不同的md驱动器迁移到不同的目标,然后取消操作,但是当我发出mdadm /dev/mdX时,替换/dev/sdX驱动器被标记为want_replacement,系统没有忘记这一点,但是我忘记了:D。

因此,使用以下标记清除标志:

代码语言:javascript
运行
复制
# echo -want_replacement > /sys/block/md4/md/rd1/state
# cat /sys/block/md4/md/rd?/state
in_sync
in_sync
in_sync,want_replacement

把所有东西都准备好,然后添加备用驱动器,现在开始用所有速度并行最大的速度替换正确的驱动器:

代码语言:javascript
运行
复制
# mdadm /dev/md4 --add /dev/sde7
# mdadm -D /dev/md4
...
    Number   Major   Minor   RaidDevice State
       0       8       39        0      active sync   /dev/sdc7
       1       8       23        1      active sync   /dev/sdb7
       2       8        7        2      active sync   /dev/sda7
       3       8       71        2      spare rebuilding   /dev/sde7

# cat /proc/mdstat
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
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/734715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档