最初に、間違いを犯したこと、およびこのRAID上のすべてではないがほとんどのデータのバックアップがあることを認めさせてください。残りのデータを回復することを望んでいます。ドライブを復旧の専門会社に持ち込むようなお金はありません。
間違い#0、100%のバックアップがない。知っている。
私が持っているmdadm
4x3TBのRAID5システムを。/ dev / sd [be]をドライブし/dev/sd[b-e]1
ます。すべて1つのパーティションがあります。非常に大きなドライブでのRAID5にはリスクがあることは承知していますが、とにかくそれを行いました。
最近のイベント
2つのドライブに障害が発生すると、RAIDは劣化します。一方のドライブ[/ dev / sdc]は実際になくなっており、もう一方の[/ dev / sde]は電源を入れ直した後に復旧しましたが、RAIDに自動的に再追加されませんでした。そのため、2つのアクティブドライブ[/ dev / sdbおよび/ dev / sdd]のみを持つ4デバイスRAIDが残っていました。
間違い#1、RAIDの復元にドライブのddコピーを使用していない。ドライブも時間もありませんでした。間違い#2 mdadm -E
。スーパーブロックと残りのドライブのバックアップを作成していません。
回復の試み
RAIDを縮退モードで再構成しました
mdadm --assemble --force /dev/md0, using /dev/sd[bde]1.
その後、データにアクセスできました。/dev/sdc
スペアに交換しました。空の; 同一のドライブ。
/dev/sdc1
RAIDから古いものを削除しました
mdadm --fail /dev/md0 /dev/sdc1
間違い#3、ドライブを交換する前にこれを行わない
次に、新しいパーティションを作成/dev/sdc
し、RAIDに追加しました。
mdadm --add /dev/md0 /dev/sdc1
その後、RAIDの復元を開始しました。ETA 300分 私はプロセス/proc/mdstat
を2%で実行し、他のことをしました。
結果を確認する
数時間後(ただし300分未満)、プロセスをチェックしました。の読み取りエラーにより停止しました/dev/sde1
。
ここが本当にトラブルが始まるところです
次に/dev/sde1
、RAIDから削除して、再度追加しました。なぜこれをしたのか思い出せません。遅かった。
mdadm --manage /dev/md0 --remove /dev/sde1
mdadm --manage /dev/md0 --add /dev/sde1
ただし、/dev/sde1
現在はスペアとしてマークされていました。そこで、-assume-cleanを使用して、正しい順序だと思っていたものを使用し、欠落している配列全体を再作成することにしました/dev/sdc1
。
mdadm --create /dev/md0 --assume-clean -l5 -n4 /dev/sdb1 missing /dev/sdd1 /dev/sde1
それは機能しましたが、マウントしようとしたときにファイルシステムが認識されませんでした。(EXT4である必要があります)。
デバイスの注文
次に、持っていた最近のバックアップを確認し/proc/mdstat
、ドライブの順序を見つけました。
md0 : active raid5 sdb1[0] sde1[4] sdd1[2] sdc1[1]
8790402048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
その後、私はこのRAIDが約1年前にドライブの損失を被っていたことを思い出し、故障したドライブを予備のドライブと交換することで回復しました。これにより、デバイスの順序が少し乱れた可能性があります。したがって、ドライブ[3]はなく、[0]、[1]、[2]、および[4]のみがありました。
Permute_arrayスクリプト(https://raid.wiki.kernel.org/index.php/Permute_array.pl)でドライブの順序を見つけようとしましたが、正しい順序が見つかりませんでした。
ご質問
主に2つの質問があります。
ドライブのすべてのスーパーブロックを台無しにしましたが、与えたのは次のもののみです。
mdadm --create --assume-clean
コマンド(したがって、データ自体を上書きするべきではありません
/dev/sd[bde]1
。正しいデバイスの順序が見つかった場合、理論的にはRAIDを復元できると/dev/sde1
思いますか?/dev/sde1
RAIDでデバイス番号[4]を指定することは重要ですか?私がそれを作成するときmdadm --create /dev/md0 --assume-clean -l5 -n4 \ /dev/sdb1 missing /dev/sdd1 /dev/sde1
番号[3]が割り当てられます。それがパリティブロックの計算に関係があるのだろうか。それが重要であることが判明した場合、どのようにして
/dev/sdb1[0]
missing [1]で配列を再作成でき/dev/sdd1[2]
/dev/sde1[4]
ますか?それが機能するようになったら、劣化モードで起動し、新しいドライブ/dev/sdc1
を追加して、再同期させます。
これが最善の行動ではなかったかもしれないことを私に指摘したいのなら大丈夫ですが、あなたは私がこれに気づいたことがわかるでしょう。誰か提案があれば素晴らしいでしょう。