raid-5 mdadmアレイからディスクを1つ取り出すには?

raid-5 mdadmアレイからディスクを1つ取り出すには?

RAID-5から1台のHDDを削除しようとしましたが、問題が発生しましたが、まだデータを回復できるようにしたいと思います。 (事実すべてバックアップしておいたのでmdadm可能性の問題だけです。)

4×1 Tb RAID-5があり、ディスクの1つに多くの情報が表示され始めました。再割り当て_セクタ_Ctだから、削除することにしました。

私がしたこと:

  1. mdadm --manage /dev/md0 --fail /dev/sdc
  2. mdadm --manage /dev/md0 --remove /dev/sdc

  3. 以下を実行してみてください。

    root@darkstar:/home/anton# mdadm --grow /dev/md0 --raid-devices=3
    mdadm: this change will reduce the size of the array.
    use --grow --array-size first to truncate array.
    e.g. mdadm --grow /dev/md0 --array-size 1953262592
    
  4. mdadm --grow /dev/md0 --array-size 1953262592

ついに:

  1. mdadm --grow /dev/md0 --raid-devices=3 --backup-file=/root/grow_md1.bak

これで、外観の変更と復元が完了しました。/dev/md0(インストールされていません)resize2fs /dev/md0run firstを話し、e2fsck次のe2fsckことを言います。

The filesystem size (according to the superblock) is 732473472 blocks
The physical size of the device is 488315648 blocks
Either the superblock or the partition table is likely to be corrupt!

一方、次のようにmdadm -D /dev/md0教えてください。

Array Size : 1953262592 (1862.78 GiB 2000.14 GB)
Used Dev Size : 976631296 (931.39 GiB 1000.07 GB)

これは私のデータが失われないという希望をもたらしました。 3 x 1TbディスクのRAID-5アレイが動作するにはどうすればよいか知っていますか?

答え1

あなたがしなければならないことは最初のステップです

mdadm --manage /dev/md0 --fail /dev/sdc

この時点で、RAID 5アレイは劣化モードで実行されているため、ディスクを新しいディスクに置き換えることができます。

残念ながらあなたはそうです切り取ったアレイの有効サイズは2TBから1TBに増加するため、ファイルシステムの2番目の半分が破損します。幸いバックアップがあると言われました。

少し混乱しています。 RAID5構成に4つのディスクがある場合は、3TBの空き容量が必要です。しかし、結果を見ることなく、mdadm --examine私があなたに何をもっと提供できるのかわかりません。

答え2

順番が逆になりましたね。

縮小するには、最初ファイルシステムを縮小しresize2fs()、ブロックデバイスを2番目に縮小します(mdadm)。ファイルシステムを増やす順序は正確ですが、縮小する順序は逆です。

あなたのデータが破壊されました。これを回復するには、まずバックアップが破損していないことを確認する必要があります。その後、アレイをmkfsしてバックアップから復元します。バックアップが間違っている場合は、ファイルシステムの最初の2 TBからファイルを復元できます。 (下記参照)

PS:アレイを管理する一般的な方法は、ディスクに障害が発生した場合に容量が同じか大きいディスクに交換することです。mdadm --growディスクエラー処理の一般的な部分ではありません。

また覆う

ファイルシステムの元の3番目のテラバイトはデフォルトで上書きされ、そのスペースはパリティに使用されます。 (実際のセクタには、パリティと他のディスクから移動されたデータが混在しており、パリティが含まれています。)そのデータ部分は、セクタを読み取ることができる(おそらく理論的に)機能がないと永遠に消えます。復元できない古いコンテンツです。

また、ext4はファイルシステムの先頭にあるすべてのメタデータを保持せず、ファイルシステム全体に展開されます。したがって、多くのメタデータも失われます。重要なのは、ファイルデータの一部がまたはメタデータは見つからない3番目のエントリにあるため、ファイルにアクセスできません。 4番目のディスクでは、限られた範囲内でフラグメントを復元できます(そのディスクは、その時点で障害が発生したため、成長に影響されなかった可能性があります)。

最初の最も重要なステップは、4TBディスクを購入し、それを使用してファイルシステムの完全なコピー(イメージ)を作成することです。その後、4つのオリジナルディスクを別々に保管してください。ソースディスクの信頼性について疑問がある場合第二コピーを作成し、1 つのコピーでのみ作業します。また、部分的に破損している可能性があるファイルの複数のコピーを含む、回復されたファイルをコピーするには追加のディスクが必要です。

これで、回復手順を試してみることができます。コピーに。これらの作業のほとんどは新しいコピーで実行する必要があります。これらのステップは破壊的であるため、コピーでのみ作業する必要がある多くの理由の1つです。原稿を破棄しないでください。

  1. このようにしてみましょうe2fsck -y /path/to/copy。たぶん、インストール可能なものが作成される可能性があります。引き続きファイルをコピーしてください。

  2. コピーを元のサイズに戻します(スパスは機能しなければならず、truncate -s実行できます)。その後、マウントできます(読み取り専用で実行)。できるだけコピーしてください。それを削除し、e2fsck -yもう一度作業を実行します。再インストールしてできるだけ多くのコンテンツをコピーしてください。

  3. fsckを実行し-y、実際にこれらのすべてのメッセージを確認してください。たとえば、ファイルデータの一部が欠けている領域にあるときに実行するアクションを実際にユーザーが選択できるようにしたいとします(ゼロに置き換え、ファイルを削除)。おそらく、欠落しているメタデータに関するオプションも提供できます。まずはやります。-yなぜならたくさんあなたのための質問...

  4. 古いファイルシステムイメージのバックアップがある場合は、現在存在する2TB +バックアップから欠落している1TBを結合します。fsck結果を確認し、他のファイルを入手できることを確認してください。ただし、回復されたファイルが破損する危険性はかなり高いです。

  5. ファイルシステムイメージをスキャンしてデータパターンを検索するプログラムを使用します(例:photorecJPEG検索)。これは、新しいコピーの厳密なコピーを必要としない唯一のバージョンです。

  6. 理論的には、「失敗した」ディスク#4の最後の1/3の3/4には、一部の失われたデータが含まれています。セクタ/ブロックマッピングがわかったら(決してそうではありません!)、そのディスクから〜250 GBをイメージにコピーしてから、上記のすべての回復手順を繰り返して別のファイルを回復できます。

回復されたファイルはすべて破損している可能性があります(データの代わりにゼロで埋められたブロックなど)。どこかにチェックサムがある場合は確認するのは簡単ですが、そうでなければ退屈な手動プロセスになります。

破損したファイルシステムからデータを回復することについて多くの質問があります。コピーのみ処理データを危険にさらすことなく実験を実行できます。

答え3

デバイスを削除する正しい方法を要約するには、まずデバイスを障害としてマークします。

sudo mdadm /dev/md127 --fail /dev/sdc

縮小後、ファイルシステムの新しいサイズを予測します。

sudo resize2fs -P /dev/md127

ディスクが大きい場合は、ジョブをコミットする前にresize2fsコマンドにかかる時間を予測する必要があります。バラよりresize2fsの縮小にかかる時間予測 - プログラミングガーデンもっと学ぶ。

ファイルシステムを縮小します。

sudo resize2fs -p -M /dev/md127

ファイルシステムの確認:

sudo e2fsck -f /dev/md127

新しいファイルシステムサイズを確認してください(参照:ファイルシステムのサイズを見つける方法は? - Ubuntuに尋ねる):

sudo dumpe2fs -h /dev/md127 |& awk -F: '/Block count/{count=$2} /Block size/{size=$2} END{print count*size}'

このコマンドを実行し、エラーメッセージを確認してRAID5アレイの新しいサイズを見積もります。

mdadm --grow --raid-devices=3 /dev/md127

ファイルシステムが入るのに十分小さいことを確認してください。収縮ブロック装置:

mdadm --grow /dev/md127 --array-size new_size

冗長装置の取り外し:

mdadm --grow --raid-devices=3 /dev/md127 --backup-file /root/md127.backup 

使用可能なスペースをすべて占有するようにファイルシステムのサイズを変更します。

resize2fs /dev/md127

@roaimaが指摘したように、デバイスが故障して交換する方が一般的です。ここで提案された方法を使用するには、ライブシステムをシャットダウンする必要がありますが、これは通常許可されていません。

また見なさい:

関連情報