複数のmdadm raid並列再構築

複数のmdadm raid並列再構築

複数の個々のアレイを同時に再構築できるプログラムがあるかどうか疑問に思います。

一方が再構築されている間、もう一方はそのまま残ります。

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

それにもかかわらず、以前の試みとは異なる振る舞いのため、依然として非常に興味深い問題に直面していました。

答え1

本当に独立している場合(別の物理ドライブセット)、並列に実行する必要があります。

ただし、複数のアレイが同じドライブ(同じドライブの異なるパーティション)を共有している場合、ここで並列に実行すると速度が遅くなり、遅くなり、再構築が遅れます。

sync_force_parallel フラグを設定することで、強制的に再同期を並列に実行できます。

echo 1 | tee > /sys/block/md*/md/sync_force_parallel

答え2

Frostschutzの答えはとても簡単でした。すぐに並列再構築を開始しましたが、効果がなかったにもかかわらず、最初のアレイの再構築速度が突然10倍も低下しました!

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配列を見ることができることがわかりました。

#cat /sys/block/md4/md/rd?/state
in_sync
in_sync,want_replacement
in_sync,want_replacement

それだけです!別のドライブを別の場所にターゲットにしようとして、別のmdドライブのデータを別のターゲットに移行してから操作をキャンセルしようとしましたが、mdadm /dev/mdX --replace /dev/sdXを実行すると、ドライブは次のように表示されます。want_replacement、システムはそれを忘れませんが、私は覚えています:D

したがって、フラグをクリアします。

# echo -want_replacement > /sys/block/md4/md/rd1/state
# cat /sys/block/md4/md/rd?/state
in_sync
in_sync
in_sync,want_replacement

すべてが所定の位置にある場合は、スペアドライブを追加し、正しいドライブの交換を開始します。すべての速度は同時に最大化されます。

# 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

関連情報