web-dev-qa-db-ja.com

すでに劣化モードで実行されていた(2番目のディスクを失った)RAID-5を回復する

これはばかげています、これは以前に起こったことがあり、私はそれを修正する方法を考え出しました、そしてそれは大丈夫でした。

Ubuntu7.10サーバーのRAID-5で4台の500GBSATAドライブを実行しています。ディスクの1つに障害が発生し(実際には、ホットスワップケージのコネクタの1つだと思います)、交換用のHDDを見つけるか、問題をさらに診断している間、3つのディスクが不足しています。

さて、これ以上読む前に、いいえ、私にはバックアップがなく、情報はそれほど重要ではありません。

とにかく以前に、私はある種のHWの一時的な中断があり、おそらく電源が切れたか何かがあり、アレイの回復に問題がありました。ディスクの1つに障害が発生したのではなく、別の問題でした。

2番目の「障害が発生した」ディスクに簡単に追加し直すことができ、数分でバックアップして実行しました。たぶん、ある種のファイルシステムチェックを実行しなければならなかったのかもしれませんが、わかりません。

私は数日ではないにしても何時間もかけて、前回それを行う方法を考え出し、それ以来忘れていました。

問題の核心は、sdb、sdc、およびsddでmdadm --examineを実行すると、sddはそれがまだ配列の一部であると見なしますが、sdbおよびsdcのスーパーブロック情報では、sddが削除されたとリストすることです。

sdaはずっと前に故障したディスクであり、すべてのディスクに誤って削除されたものとして正しくリストされています。

TIA。問題のサーバーはインターネット上にないため、さまざまなコマンドの出力をフォーラムにC&Pすることはできません。

私は知っています、今ではあなたの多くはおそらく私がニトウィット、またはもっと悪いと思っています。ただし、実行する一連のコマンドを理解すると、それはかなり簡単な手順であり、うまく機能したことを思い出します。

3
Inovagent

ドライブが実際に故障しておらず、一時的に使用できなくなった場合、またはその他の理由で同期が取れなくなった場合は、各メンバーの変更番号/タイムスタンプを無視して、強制的にオンラインでレイドを試みることができます。

これを行うと、特に最後にオフラインになったドライブがわからない場合に、データが破損するリスクがありますが、選択肢がほとんどないようです。

Mdadmのマニュアルページで--forceオプションを使用するさまざまな方法を確認してください。

ドライブの1つが実際に故障し、別のドライブが同期していない場合でも、レイドをオンラインにして、故障したドライブのデバイスIDとして「missing」を--forceオプションと組み合わせて提供できます。これにより、レイドが劣化した状態で開始されます。

3
Roy

RAID5は2ディスク障害から回復することになっていますか?私はそれが想定されていなかったと思いました。探しているのは、おそらくドライブをRAIDアレイにホットリムーブおよびホットアドするコマンドです。

mdadm --remove /dev/md0 /dev/sdX
mdadm --add /dev/md0 /dev/sdX
1
sybreon

他に失敗した場合は、raidextractを使用できます: http://www.chiark.greenend.org.uk/~peterb/linux/raidextract/

1
sendmoreinfo

あなたができること:

mdadm --stop /dev/md0
mdadm --assemble --force /dev/md0 /dev/sdX /dev/sdY...

ドライブを最初に作成されたのと同じ順序で、同じストライプサイズなどで指定することを忘れないでください。また、最初にドライブをイメージングすることをお勧めします。

0
Raynet

mdadm --create /dev/md0 --level=5 --raid-devices=4 missing /dev/sd{b..d}を試すことができます

LinuxQuestionsスレッドbuntuスレッド から適応しました

0
James Cassell

助けてくれてありがとう。アセンブルするメンバーを明示的に指定しようとすると、「missing:devicenotfound」などのエラーが発生します。

だから私はちょうど-配列の開始を強制することを試みました、そしてそれは魅力のように働きました。デバイスの順序などを覚えておく必要はありません。

0
Inovagent