mdadm RAID1:ディスクを3つに増やしてから2つに復元できますか?

mdadm RAID1:ディスクを3つに増やしてから2つに復元できますか?

2つの古いディスクを持つLinux(CentOS7)ソフトウェアRAID1システムがあります。そのうちの1つはすでに失敗の兆しを見せ始めました。一度に 1 つずつ新しいディスクでこれらのディスクを段階的に停止したいのですが、常にミラー全体をアクティブに保ちます。

3ウェイミラーに3番目の新しいディスクを追加し、古いディスクを無効にし、別の新しいディスクに繰り返し、2番目の古いディスクを無効にすることを検討しています。これにより、イベントが失敗した後に攻撃台が再構築されるのを待つのではなく、常にミラーを使用できます。

これはnum-devices = 3で動作し、大きくなるようですが、作業が終わったら、2つのデバイスに戻って「縮小」する方法は?私がやろうとしていることへの参照が見つからないようです。

ベストアンサー1

他の人が指摘したように配列の縮小コマンドを実行してmdadm --grow。 (このプロセスの全体的な目的が損失の可能性を減らすことであっても、データをバックアップしたことを確認することを忘れないでください。人の間違いは常に発生します。)

屋根ふき装置はプログラムをテストし改善する便利な方法を提供します。以下は完全な例です。

4つのブロックデバイスと2つのブロックデバイスで構成されたRAID1アレイを作成、フォーマット、マウントします。

$ fallocate -l 521MiB avolume1
$ fallocate -l 521MiB avolume2
$ fallocate -l 521MiB avolume3
$ fallocate -l 521MiB avolume4
$ sudo losetup -f avolume1
$ sudo losetup -f avolume2
$ sudo losetup -f avolume3
$ sudo losetup -f avolume4
$ sudo mdadm --create --run -n 2 -l 1 /dev/md17 /dev/loop0 /dev/loop1
mdadm: Note: this array has metadata at the start and
...
mdadm: array /dev/md17 started.
$ cat /proc/mdstat
Personalities : [raid1] [raid10]
md17 : active raid1 loop1[1] loop0[0]
      532480 blocks super 1.2 [2/2] [UU]
$ sudo mkfs.ext4 /dev/md17
mke2fs 1.46.2 (28-Feb-2021)
...
Writing superblocks and filesystem accounting information: done
$ sudo mount /dev/md17 /mnt

配列を増やし、3番目のブロックデバイスを追加します。

$ sudo mdadm --grow /dev/md17 -n 3 --add /dev/loop2
mdadm: added /dev/loop2
raid_disks for /dev/md17 set to 3
$ cat /proc/mdstat
Personalities : [raid1] [raid10]
md17 : active raid1 loop2[2] loop1[1] loop0[0]
      532480 blocks super 1.2 [3/3] [UUU]

失敗し、アレイから最初のブロックデバイスの1つを削除します。

$ sudo mdadm /dev/md17 --fail /dev/loop0
mdadm: set /dev/loop0 faulty in /dev/md17
$ sudo mdadm /dev/md17 --remove /dev/loop0
mdadm: hot removed /dev/loop0 from /dev/md17
$ cat /proc/mdstat
Personalities : [raid1] [raid10]
md17 : active raid1 loop2[2] loop1[1]
      532480 blocks super 1.2 [3/2] [_UU]

4番目のブロックデバイスをアレイに追加します。

$ sudo mdadm /dev/md17 --add /dev/loop3
mdadm: added /dev/loop3
$ cat /proc/mdstat
Personalities : [raid1] [raid10]
md17 : active raid1 loop3[3] loop2[2] loop1[1]
      532480 blocks super 1.2 [3/3] [UUU]

アレイから2番目の初期ブロックデバイスを削除します。

$ sudo mdadm /dev/md17 --fail /dev/loop1
mdadm: set /dev/loop1 faulty in /dev/md17
$ sudo mdadm /dev/md17 --remove /dev/loop1
mdadm: hot removed /dev/loop1 from /dev/md17
$ cat /proc/mdstat
Personalities : [raid1] [raid10]
md17 : active raid1 loop3[3] loop2[2]
      532480 blocks super 1.2 [3/2] [U_U]

最後に、配列を展開(縮小)します。

$ sudo mdadm --grow -n 2 /dev/md17
raid_disks for /dev/md17 set to 2
$ cat /proc/mdstat
Personalities : [raid1] [raid10]
md17 : active raid1 loop3[3] loop2[2]
      532480 blocks super 1.2 [2/2] [UU]

おすすめ記事