web-dev-qa-db-ja.com

「mdadm--create ... missing」でRAID5リカバリを試行

最初に私がこの状況に陥った方法:

それぞれ2TBのディスク(外部USBディスク)を備えたRAID5アレイがあったので、より大きな暗号化アレイを作成したいと思いました。したがって、2つの追加ディスク(それぞれ2 TB))を入手し、元のアレイを劣化モードで実行し、新しい暗号化アレイをセットアップし、データの一部をコピーしてから、縮小する計画でした。元のアレイを2ディスク劣化モードに拡大し、新しいアレイを拡大し、残りのデータをコピーして、最後に劣化していないRAID5を7ディスクに拡大します。手順全体を/dev/loopXデバイスでそれぞれ2GBずつ実行して、計画には注意点があります。

新しいディスクの1つに障害が発生するまで、すべてが実際のアレイでうまくいきました。これを交換すると、次回の再起動後にディスクがカーネルによって認識される順序が変更されました(/dev/sdb/dev/sdc、...はすべて以前とは異なるディスクでした)。すべてが台無しになり、ディスクの1つが間違ったアレイのメンバーとして再同期されるまで気づきませんでした。私はこの話の詳細を惜しまず、要点をまっすぐに説明します。

これで、暗号化されたアレイが1つあります。3ディスクRAID5で、/dev/sdc1/dev/sdd1で劣化し、すべてのデータが正常に動作し、fsck -fによる正常なファイルシステムです。ここまでは順調ですね。

全体の問題は現在3ディスクになっています-この暗号化されていないアレイを再び機能させることはできません。データ[〜#〜] has [〜#〜]/dev/sdf1/dev/sdg1/dev/sdh1にあると確信しています。これは、ディスクの1つが台無しになる直前の作業アレイ(前述のように、誤って他の暗号化されたアレイのメンバーとして再同期されました)。したがって、これら3つのディスクの1つに誤ったアレイデータがある可能性がありますが、どれですか?そして、そのうちの2つは優れている必要がありますが、どうすればそれを理解できますか?

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>

どんな助けでも大歓迎です!

4
Ice Ra

1つのディスクを失ったばかりの場合、shouldは、非常に安全な--assembleを使用してそのディスクから回復できたはずです。

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

とにかく、あなたは間違ったディスクを使おうとしているのか、間違ったチャンクサイズを使おうとしているのだと思います(デフォルトは時間とともに変化していると思います)。古いアレイが別のスーパーブロックバージョンを使用している可能性があります(デフォルトは確実に変更されています)。これにより、すべてのセクターがオフセットされる可能性があります(また、一部のデータが破壊される可能性があります)。最後に、間違ったレイアウトを使用している可能性がありますが、その可能性は低くなります。

テストアレイが(mdの観点から)読み取り/書き込みであり、ext3を使用しようとして実際にいくつかの書き込みが行われた可能性もあります。例:ジャーナルのリプレイ。しかし、それはある時点でスーパーブロックが見つかった場合のみだと思います。

ところで:もちろん、劣化したアレイは再構築を開始しようとはしませんが、実際には--assume-cleanを使用する必要があると思います。次に、すぐに読み取り専用に設定することをお勧めします。

2
derobert

私はあきらめて、保存できるアレイにすべてのディスクを追加することから1歩離れています。

1)重要なデータのかなりの部分と、他の方法で取得できる多くの失われたファイルを含む古いバックアップをいくつか見つけました。

2)私はoneうまくいかない可能な解決策に行き着きました。

私を悩ませているのは、1つのドライブが欠落している可能性のある配列を作成することですはずは機能しますが、どのスーパーブロックを使用しようとしても、有効なファイルシステムを取得できません(これはext3ファイルシステムでした)。 mdadmのメンテナーにこの問題について尋ねようと思っていますが、私のようなばかげた質問がたくさんあります。 ;)

結論:私の質問が閉じられたと考えてください。知るのは本当に興味深いことですがなぜ 1つのドライブが欠落しているアレイを再作成することは機能しませんでした。

0
Ice Ra

ここの人々は意図的にRAID6をいくつかのストレステストにかけ、それからそれらから回復しようとしました。それはあなたをさらに前進させるかもしれません。手遅れかもしれませんが、UDEVルールを使用したRAIDsda用にデバイスに/ dev/rsdaなどの名前を付けています..。

そこでいくつかの回復手順を試してみましたが、RAID6で3つのディスクが失われませんでした。ただし、少しずつ役立つかもしれません

HTPC + RAID6(mdadm)

DEV RAID 6デバイスの命名

参考までに、extN FSはXFS。YMMVほど信頼性が低い可能性があります。

0
HnyveD.