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]
答え2
SMARTが提案したように、RAID10構成で「死ぬ」ドライブがあります。私は新しいドライブを追加する前に、アレイのパフォーマンスの低下を防ぐために同様のソリューションを探していました。私はmdadm --replace
私が望むものを使用して実行し、新しいドライブを同期し、すぐに消えるドライブを故障に設定しました。交換コマンドを実行する前に、新しいドライブをスペアドライブとして追加する必要があります。
$> mdadm /dev/md0 --add /dev/new
$> mdadm /dev/md0 --replace /dev/old
注:アレイが劣化モードにある間に/ dev / newを追加すると、予備として追加されませんが、アレイの再構築が開始されます。
RAID10に関する注意:mdadmソフトウェアraid10には奇数のディスクが存在する可能性があるため、raid10を追加して拡張してもレイアウトは変更されません(例:n2 - > n3(3ウェイミラー))。
答え3
mdadm /dev/<md> --fail <real_dev> # first fail the disk
mdadm /dev/<md> --remove <real_dev> # then remove it