「mdadm --create ...missing」を使用したRAID5リカバリの試み

「mdadm --create ...missing」を使用したRAID5リカバリの試み

最初に私がどのようにこのような状況に陥ったのか:

各ディスク(外部USBディスク)が2 TBのRAID 5アレイを持ち、より大きな暗号化アレイを作成したいと思います。そのため、2つの追加ディスク(それぞれ2TB)を取得し、計画は、パフォーマンス低下モードで元のアレイを実行し、新しい暗号化アレイを設定し、一部のデータをコピーしてから、パフォーマンス低下モードで元のアレイをディスク2つに縮小することです。です。新しく展開し、残りのデータをコピーし、最後にダウングレードされていないRAID 5ディスク7つに展開します。/dev/loopX注意事項があるかどうかを計画をテストするために、デバイスごとに2 GBを使用してプロセス全体を進めました。

新しいディスクの1つが故障するまで、実際のアレイではすべてがうまく機能しました。このディスクを交換したとき、次の再起動後にカーネルがディスクを認識する順序が変わりました(/dev/sdb、、、/dev/sdc...すべて以前とは異なるディスクです)。すべてが解放され、ディスクの1つが間違ったアレイのメンバーに再同期されるまで、私はそれを実現できませんでした。私はこの話を詳しく扱うことなく、まさに要点に入ります。

これで暗号化されたアレイ、3つのディスクRAID 5があり、/dev/sdc1ダウングレードされ、完全に実行され、これまで/dev/sdd1すべてのデータがそのまま残ります。fsck -f

これで、問題全体が3つのディスクに帰結します。この暗号化されていないアレイを再び動作させることはできません。データが確実です。持つこれは動作するアレイであるため、/dev/sdf1ディスクの1つが混乱する直前に(前述のように、誤って他の暗号化されたアレイのメンバーに再同期されます)。その場合、3つのディスクのうちの1つのアレイデータが正しくない可能性があります。ところでどんなディスクですか?そのうちの2つは良好でなければなりません。しかし、どのように修正しますか?/dev/sdg1/dev/sdh1

たとえば、...と「欠落」のすべてのmdadm --create順列を試しました。/dev/sdf1/dev/sdg1/dev/sdh1

mdadm --create /dev/md0 --level=5 --raid-devices=3  /dev/sdf1 /dev/sdg1 missing

mdadm --create /dev/md0 --level=5 --raid-devices=3  /dev/sdf1 missing /dev/sdg1

...

もちろん毎回確認する

fsck /dev/md0

間違ったスーパーブロックについて文句を言います。

mdadmが配列を作成するたびにそれを読み取るファイルシステムがなく、ゴミだけが含まれ、mdadmが使用するすべての置換は最終的に機能しなくなります。今私の質問はこんな感じです。どんなオプションがありますか?もちろん、データが失われ、アレイを最初から再構築する場合は除外されます。

以下はいくつかの追加情報です(すべてのディスク)。

mdadm --examine /dev/sdb1
/dev/sdb1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : cfee26c0:414eee94:e470810c:17141589
           Name : merlin:0  (local to host merlin)
  Creation Time : Sun Oct 28 11:38:32 2012
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 3906760704 (1862.89 GiB 2000.26 GB)
     Array Size : 3906759680 (3725.78 GiB 4000.52 GB)
  Used Dev Size : 3906759680 (1862.89 GiB 2000.26 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : f4f0753e:56b8d6a5:84ec2ce8:dbc933f0

    Update Time : Sun Oct 28 11:38:32 2012
       Checksum : 60093b72 - correct
         Events : 0

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : AA. ('A' == active, '.' == missing)


mdadm --examine /dev/sdc1
/dev/sdc1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 5cb45bae:7a4843ba:4ad7dbfb:5c129d2a
           Name : merlin:1  (local to host merlin)
  Creation Time : Wed Sep 26 07:32:32 2012
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 3906760704 (1862.89 GiB 2000.26 GB)
     Array Size : 3905299456 (3724.38 GiB 3999.03 GB)
  Used Dev Size : 3905299456 (1862.19 GiB 1999.51 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 9e2f9ae6:6c95d05e:8d83970b:f1308de0

    Update Time : Fri Oct 26 03:26:37 2012
       Checksum : 79d4964b - correct
         Events : 220

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 0
   Array State : AA. ('A' == active, '.' == missing)


mdadm --examine /dev/sdd1
/dev/sdd1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 5cb45bae:7a4843ba:4ad7dbfb:5c129d2a
           Name : merlin:1  (local to host merlin)
  Creation Time : Wed Sep 26 07:32:32 2012
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 3906760704 (1862.89 GiB 2000.26 GB)
     Array Size : 3905299456 (3724.38 GiB 3999.03 GB)
  Used Dev Size : 3905299456 (1862.19 GiB 1999.51 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 98b07c41:ff4bea98:2a765a6b:63d820e0

    Update Time : Fri Oct 26 03:26:37 2012
       Checksum : 6e2767e8 - correct
         Events : 220

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : AA. ('A' == active, '.' == missing)


mdadm --examine /dev/sde1
/dev/sde1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 6db9959d:3cdd4bc3:32a241ad:a9f37a0c
           Name : merlin:0  (local to host merlin)
  Creation Time : Sun Oct 28 12:12:59 2012
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 3905299943 (1862.19 GiB 1999.51 GB)
     Array Size : 3905299456 (3724.38 GiB 3999.03 GB)
  Used Dev Size : 3905299456 (1862.19 GiB 1999.51 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 677a4410:8931e239:2c789f83:e130e6f7

    Update Time : Sun Oct 28 12:12:59 2012
       Checksum : 98cb1950 - correct
         Events : 0

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 2
   Array State : A.A ('A' == active, '.' == missing)


mdadm --examine /dev/sdf1
/dev/sdf1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 3700a0a6:3fadfd73:bc74b618:a5526767
           Name : merlin:0  (local to host merlin)
  Creation Time : Sun Oct 28 11:28:30 2012
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 3905392640 (1862.24 GiB 1999.56 GB)
     Array Size : 3905391616 (3724.47 GiB 3999.12 GB)
  Used Dev Size : 3905391616 (1862.24 GiB 1999.56 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 5a8a5423:10b7a542:26b5e2b3:f0887121

    Update Time : Sun Oct 28 11:28:30 2012
       Checksum : 8e90495f - correct
         Events : 0

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : AA. ('A' == active, '.' == missing)


mdadm --examine /dev/sdg1
/dev/sdg1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 202255c9:786f474d:ba928527:68425dd6
           Name : merlin:0  (local to host merlin)
  Creation Time : Sun Oct 28 11:24:36 2012
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 3905299943 (1862.19 GiB 1999.51 GB)
     Array Size : 3905299456 (3724.38 GiB 3999.03 GB)
  Used Dev Size : 3905299456 (1862.19 GiB 1999.51 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 4605c729:c290febb:92901971:9a3ed814

    Update Time : Sun Oct 28 11:24:36 2012
       Checksum : 38ba4d0a - correct
         Events : 0

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : AA. ('A' == active, '.' == missing)


mdadm --examine /dev/sdh1
/dev/sdh1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 682356f5:da2c442e:7bfc85f7:53aa9ea7
           Name : merlin:0  (local to host merlin)
  Creation Time : Sun Oct 28 12:13:44 2012
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 3906761858 (1862.89 GiB 2000.26 GB)
     Array Size : 3906760704 (3725.78 GiB 4000.52 GB)
  Used Dev Size : 3906760704 (1862.89 GiB 2000.26 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 489943b3:d5e35022:f52c917a:9ca6ff2a

    Update Time : Sun Oct 28 12:13:44 2012
       Checksum : f6947a7d - correct
         Events : 0

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : AA. ('A' == active, '.' == missing)



cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md1 : active raid5 sdc1[0] sdd1[1]
      3905299456 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]

unused devices: <none>

どんな助けでも大変感謝します!

ベストアンサー1

ディスク1枚だけを紛失した場合しなければならない非常に安全な方法で回復できました--assemble

これで、createを複数回実行して、すべてのUUIDが変わりました。 UUIDを共有しますsdc1sdd1作業アレイであるため予想されます)。残りのディスクは名前を共有しますが、すべて異なるUUIDを持ちます。だから私はこれが元のスーパーブロックではないと思います。とてもひどいです...

とにかく、私はあなたが間違ったディスクを使用しようとしているか、間違ったブロックサイズを使用しようとしていると思います(デフォルトは時間の経過とともに変わったと思います)。以前のアレイは他のスーパーブロックバージョンを使用することができます(デフォルトは間違いなく変更されます)、すべてのセクタが消去され、一部のデータが破損する可能性があります。最後に、そうではないかもしれませんが、間違ったレイアウトを使用している可能性があります。

テスト配列が読み書き(mdの観点から)でext3を使用しようとすると、実際にいくつかの書き込みが実行されることがあります。たとえば、日記の再生。しかし、私の考えでは、ある時点でスーパーブロックを発見すると仮定しました。

注:私の考えにはを使うべきだと思います--assume-clean。もちろん、劣化したアレイは再構築を開始しようとしません。その後、今すぐ読み取り専用に設定できます。

おすすめ記事