RAID5 アレイ内の失われたディスクを再び使用し始めるように mdadm に指示するにはどうすればよいですか?

RAID5 アレイ内の失われたディスクを再び使用し始めるように mdadm に指示するにはどうすればよいですか?

私の Ubuntu サーバーでは 3 ディスクの RAID アレイが稼働しています。これは 1 年以上問題なく稼働していましたが、最近、マシンをストリップ、移動、再構築する必要がありました。

すべてを元に戻して Ubuntu を起動すると、ディスクが検出されないという問題が発生しました。数回再起動した後、その問題は解決しました。現在の問題は、起動するたびに 3 ディスク アレイが劣化していると表示されることです。何らかの理由で、Ubuntu が新しいアレイを作成し、不足しているディスクをそのアレイに追加したようです。

新しい 1 ディスク アレイを停止して、不足しているディスクを追加しようとしましたが、うまくいきません。起動時に次のメッセージが表示されます。

root@uberserver:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md_d1 : inactive sdf1[2](S)
      1953511936 blocks

md0 : active raid5 sdg1[2] sdc1[3] sdb1[1] sdh1[0]
      2930279808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

2 つの RAID アレイがありますが、通常は md1 として表示されるアレイが表示されません。

mdadm --assemble --scanどこかで、呼び出すと欠落した配列が再構築されると読んだので、まず Ubuntu が開始した既存の配列を停止してみました。

root@uberserver:~# mdadm --stop /dev/md_d1
mdadm: stopped /dev/md_d1

...そして、Ubuntu にディスクを再度取得するように指示しようとしました:

root@uberserver:~# mdadm --assemble --scan
mdadm: /dev/md/1 has been started with 2 drives (out of 3).

つまり、md1 は再び起動しましたが、md_d1 からディスクを取得していません。

root@uberserver:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sde1[1] sdf1[2]
      3907023872 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU]

md_d1 : inactive sdd1[0](S)
      1953511936 blocks

md0 : active raid5 sdg1[2] sdc1[3] sdb1[1] sdh1[0]
      2930279808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

sdd1何が問題なのでしょうか? Ubuntu が別のアレイを取得しようとしているのはなぜですか? 失われたディスクを再び元の場所に戻すにはどうすればよいですか?

[編集]- で自動起動に md1 を追加していなかったことに気付きましたmdadm.conf。 md1 を追加した後、mdadm.conf起動時にアレイをマウントしようとしましたが、まだ見つかりませんsdd1。 自動的にアセンブルするように指示すると、必要だとはわかっているもののsdd1、使用できないという印象を受けます。

root@uberserver:~# mdadm --assemble --scan
/dev/md1: File exists
mdadm: /dev/md/1 already active, cannot restart it!
mdadm:   /dev/md/1 needed for /dev/sdd1...

何が足りないのでしょうか?

答え1

これが問題を解決する最もクリーンな方法であったかどうかはわかりませんが、次の方法で問題が解決したようです。

root@uberserver:~# mdadm --stop /dev/md_d1
mdadm: stopped /dev/md_d1

root@uberserver:~# mdadm --add /dev/md1 /dev/sdd1
mdadm: re-added /dev/sdd1

root@uberserver:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sdd1[3] sde1[1] sdf1[2]
      3907023872 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU]
      [>....................]  recovery =  0.0% (121728/1953511936) finish=1337.0min speed=24345K/sec

md0 : active raid5 sdg1[2] sdc1[3] sdb1[1] sdh1[0]
      2930279808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

なぜディスクを戻せないのかまだ理解できません :-/

答え2

私も同様の問題に遭遇しました。おそらく、電源ケーブルが緩んでアレイがドライブをドロップしたため、mdstat は [U_UU] と表示し、SeaChest などの他のツールでもドライブが消えました。すべてのコネクタを差し直した後、ドライブは再び表示されましたが、mdadm は自動的に回復しませんでした。単にドライブがドロップされただけのようでした。

me@server:~$ sudo mdadm --details /dev/md0

ドライブが存在し、機能しており、正しい UUID タグが付いているにもかかわらず、ドライブが取り外されたものとして表示されました。

回復するには、ただ実行する必要がありました:

me@server:~$ sudo mdadm --add /dev/md0 /dev/sdb1

すぐにドライブが追加され、リカバリが開始されました (最初にアレイを停止する必要はありませんでした)。

関連情報