mdadm-raid5 再組み立て

mdadm-raid5 再組み立て

私の友人は9つのディスクを持つmdadm-raid5を持っていますが、もう組み立てられません。

システムログを調べた後、ディスクsdiがアレイから追い出されたことがわかりました。

Jul  6 08:43:25 nasty kernel: [   12.952194] md: bind<sdc>
Jul  6 08:43:25 nasty kernel: [   12.952577] md: bind<sdd>
Jul  6 08:43:25 nasty kernel: [   12.952683] md: bind<sde>
Jul  6 08:43:25 nasty kernel: [   12.952784] md: bind<sdf>
Jul  6 08:43:25 nasty kernel: [   12.952885] md: bind<sdg>
Jul  6 08:43:25 nasty kernel: [   12.952981] md: bind<sdh>
Jul  6 08:43:25 nasty kernel: [   12.953078] md: bind<sdi>
Jul  6 08:43:25 nasty kernel: [   12.953169] md: bind<sdj>
Jul  6 08:43:25 nasty kernel: [   12.953288] md: bind<sda>
Jul  6 08:43:25 nasty kernel: [   12.953308] md: kicking non-fresh sdi from array!
Jul  6 08:43:25 nasty kernel: [   12.953314] md: unbind<sdi>
Jul  6 08:43:25 nasty kernel: [   12.960603] md: export_rdev(sdi)
Jul  6 08:43:25 nasty kernel: [   12.969675] raid5: device sda operational as raid disk 0
Jul  6 08:43:25 nasty kernel: [   12.969679] raid5: device sdj operational as raid disk 8
Jul  6 08:43:25 nasty kernel: [   12.969682] raid5: device sdh operational as raid disk 6
Jul  6 08:43:25 nasty kernel: [   12.969684] raid5: device sdg operational as raid disk 5
Jul  6 08:43:25 nasty kernel: [   12.969687] raid5: device sdf operational as raid disk 4
Jul  6 08:43:25 nasty kernel: [   12.969689] raid5: device sde operational as raid disk 3
Jul  6 08:43:25 nasty kernel: [   12.969692] raid5: device sdd operational as raid disk 2
Jul  6 08:43:25 nasty kernel: [   12.969694] raid5: device sdc operational as raid disk 1
Jul  6 08:43:25 nasty kernel: [   12.970536] raid5: allocated 9542kB for md127
Jul  6 08:43:25 nasty kernel: [   12.973975] 0: w=1 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973980] 8: w=2 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973983] 6: w=3 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973986] 5: w=4 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973989] 4: w=5 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973992] 3: w=6 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973996] 2: w=7 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973999] 1: w=8 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.974002] raid5: raid level 5 set md127 active with 8 out of 9 devices, algorithm 2

残念ながら、これは認識されず、他のドライブがキックされます(sde)。

Jul 14 08:02:45 nasty kernel: [   12.918556] md: bind<sdc>
Jul 14 08:02:45 nasty kernel: [   12.919043] md: bind<sdd>
Jul 14 08:02:45 nasty kernel: [   12.919158] md: bind<sde>
Jul 14 08:02:45 nasty kernel: [   12.919260] md: bind<sdf>
Jul 14 08:02:45 nasty kernel: [   12.919361] md: bind<sdg>
Jul 14 08:02:45 nasty kernel: [   12.919461] md: bind<sdh>
Jul 14 08:02:45 nasty kernel: [   12.919556] md: bind<sdi>
Jul 14 08:02:45 nasty kernel: [   12.919641] md: bind<sdj>
Jul 14 08:02:45 nasty kernel: [   12.919756] md: bind<sda>
Jul 14 08:02:45 nasty kernel: [   12.919775] md: kicking non-fresh sdi from array!
Jul 14 08:02:45 nasty kernel: [   12.919781] md: unbind<sdi>
Jul 14 08:02:45 nasty kernel: [   12.928177] md: export_rdev(sdi)
Jul 14 08:02:45 nasty kernel: [   12.928187] md: kicking non-fresh sde from array!
Jul 14 08:02:45 nasty kernel: [   12.928198] md: unbind<sde>
Jul 14 08:02:45 nasty kernel: [   12.936064] md: export_rdev(sde)
Jul 14 08:02:45 nasty kernel: [   12.943900] raid5: device sda operational as raid disk 0
Jul 14 08:02:45 nasty kernel: [   12.943904] raid5: device sdj operational as raid disk 8
Jul 14 08:02:45 nasty kernel: [   12.943907] raid5: device sdh operational as raid disk 6
Jul 14 08:02:45 nasty kernel: [   12.943909] raid5: device sdg operational as raid disk 5
Jul 14 08:02:45 nasty kernel: [   12.943911] raid5: device sdf operational as raid disk 4
Jul 14 08:02:45 nasty kernel: [   12.943914] raid5: device sdd operational as raid disk 2
Jul 14 08:02:45 nasty kernel: [   12.943916] raid5: device sdc operational as raid disk 1
Jul 14 08:02:45 nasty kernel: [   12.944776] raid5: allocated 9542kB for md127
Jul 14 08:02:45 nasty kernel: [   12.944861] 0: w=1 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944864] 8: w=2 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944867] 6: w=3 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944871] 5: w=4 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944874] 4: w=5 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944877] 2: w=6 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944879] 1: w=7 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944882] raid5: not enough operational devices for md127 (2/9 failed)

これでアレイが起動しなくなりました。ただし、各ディスクにはRAIDメタデータが含まれているようです。

/dev/sda:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 8600bda9:18845be8:02187ecc:1bfad83a

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : e38d46e8 - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdc:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : fe612c05:f7a45b0a:e28feafe:891b2bda

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : 32bb628e - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdd:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 1d14616c:d30cadc7:6d042bb3:0d7f6631

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : 62bd5499 - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sde:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : active
    Device UUID : a2babca3:1283654a:ef8075b5:aaf5d209

    Update Time : Mon Jul 14 00:45:07 2014
       Checksum : f78d6456 - correct
         Events : 123123

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdf:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : e67d566d:92aaafb4:24f5f16e:5ceb0db7

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : 9223b929 - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdg:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 2cee1d71:16c27acc:43e80d02:1da74eeb

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : 7512efd4 - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdh:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : c239f0ad:336cdb88:62c5ff46:c36ea5f8

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : c08e8a4d - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdi:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : active
    Device UUID : d06c58f8:370a0535:b7e51073:f121f58c

    Update Time : Mon Jul 14 00:45:07 2014
       Checksum : 77844dcc - correct
         Events : 0

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : spare
   Array State : AAAAAAA.A ('A' == active, '.' == missing)


/dev/sdj:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : f2de262f:49d17fea:b9a475c1:b0cad0b7

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : dd0acfd9 - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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

ただし、見てわかるように、2つのドライブ(sde、sdi)がアクティブであるが(raidは停止)、sdiはスペアドライブです。 sdeは他のほとんどのドライブよりも少しイベント数が少なく(123132ではなく123123)、sdiのイベント数は0です。だから私はsdeがほぼ最新バージョンだと思います。しかし、sdiはそうではありません。

今、私たちは、深刻な停電がこのような「ブロック」メッセージを引き起こす可能性があることをオンラインで見ています。実際、私の友人は1〜2回深刻な停電を引き起こしました。だから私たちはオンラインで見つけた指示に従ってsdeをアレイに追加しようとしました。

$ mdadm /dev/md127 --add /dev/sde
mdadm: add new device failed for /dev/sde as 9: Invalid argument

しかし、失敗し、mdadm --examine /dev/sdesdeのイベントカウントも0です(+はsdiのように待機状態になりました)。

/dev/sde:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 689e0030:142122ae:7ab37935:c80ab400

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : 5e6c4cf7 - correct
         Events : 0

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : spare
   Array State : AAA.AAA.A ('A' == active, '.' == missing)

私たちは、2つのドライブエラーが通常raid5の死を意味することを知っています。しかし、データを保存できるように少なくともsdeをレイドに追加する方法はありますか?

ベストアンサー1

さて、今襲撃に入ることができるようです。少なくとも最初に確認したファイルは大丈夫です。これが私たちがしたことです:


これ襲撃回復記事kernel.org wikiでは、問題に対する2つの可能な解決策を提案しています。

  1. 使用--assemble --force(derobertも言及します)
    記事は次のように言います。

    [...] イベント数が 50 個未満に差がある場合、ドライブの情報はまだ正常である可能性があります。 [...] イベントの数がほとんど一致しているが正確でない場合は、「mdadm --assemble --force /dev/mdX」を使用して、mdadm がアレイをアセンブルするように強制します [...]。ドライブのイベント数が[...]から大幅に超えている場合は、ドライブ[...]をアセンブリに含めないでください。

    この例では、ドライブsdeのイベント差分は9です。したがって、--force成功する可能性が高いです。ただし、--addコマンドを実行した後、イベント数が0に低下し、ドライブがスペアとしてマークされました。

    だから私たちはそれを使用するのをやめることをお勧めします--force

  2. 配列の再作成
    このソリューションは、誤ってデータが失われる可能性があるため、危険であると明示的に示されます。しかし、これが私たちの唯一の選択肢のようです。

    アイデアは、古いraidと同じ構成で既存のraidデバイスに新しいraidを作成し(つまり、デバイスのスーパーブロックを上書きする)、mdadmにそのraidがすでに存在し、クリーンであると仮定する必要があることを明示的に通知することです。

    イベント数の差が9に過ぎなかったため、唯一の問題はスーパーブロックを失ったということでした。したがって、sde新しいスーパーブロックを作成すると、データにアクセスするための良い機会がありました。 :-)


私たちのソリューション

注:この回避策は当社の問題に固有のものであり、お客様の設定には適用されない場合があります。タスクの完了方法を理解するには、次のメモを作成する必要があります。しかし、状況に最も適したものが何であるかを調べる必要があります。

サポート
私たちはスーパーブロックを失いました。そのため、今回はsd[acdefghij]ddを使用してRAIDを処理する前に、各RAIDデバイス()の最初と最後のGBを保存しました。各攻撃台デバイスに対してこれを行います。

# save the first gigabyte of sda
dd if=/dev/sda of=bak_sda_start bs=4096 count=262144

# determine the size of the device
fdisk -l /dev/sda
# In this case the size was 4000787030016 byte.

# To get the last gigabyte we need to skip everything except the last gigabyte.
# So we need to skip: 4000787030016 byte - 1073741824 byte = 3999713288000 byte
# Since we read blocks auf 4096 byte we need to skip 3999713288000/4096=976492502 blocks.
dd if=/dev/sda of=bak_sda_end bs=4096 skip=976492502

情報を収集する
レイドを再生成するときは、前のレイドと同じ構成を使用することが重要です。これは、異なる mdadm バージョンを使用して別のコンピュータでアレイを再作成する場合に特に重要です。この場合、mdadmのデフォルト値が異なる場合があり、既存のraidに合わないスーパーブロックが生成されることがあります(wikiの記事を参照)。

私たちの場合は、同じシステム(したがって同じmdadmバージョン)を使用してアレイを再作成します。ただし、アレイは最初にサードパーティのツールによって作成されます。したがって、ここではデフォルト値に依存したくなく、既存の攻撃台に関するいくつかの情報を収集する必要があります。

出力では、mdadm --examine /dev/sd[acdefghij]raidに関する次の情報を取得します(注:sdbはオペレーティングシステムを含むSSDであり、raidの一部ではありません)。

     Raid Level : raid5
   Raid Devices : 9
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
         Layout : left-symmetric
     Chunk Size : 512K
   Device Role : Active device 0

Used Dev Size512バイトブロック単位で価格が設定されます。以下を確認できます。
7814034432*512/1000000000 ~= 4000.79
ただし、mdadmにはキビバイト単位のサイズが必要です。7814034432*512/1024 = 3907017216

Device Role新しいレードでは、各デバイスが以前と同じ役割を果たす必要があることが重要です。私たちの例では:

device  role
------  ----
sda     0
sdc     1
sdd     2
sde     3
sdf     4
sdg     5
sdh     6
sdi     spare
sdj     8

注:再起動後にドライブ文字(および順序)が変わる可能性があります!

次のステップにはレイアウトとブロックサイズも必要です。

攻撃隊を再現する
これで、最後のステップの情報を使用して配列を再作成できます。

mdadm --create --assume-clean --level=5 --raid-devices=9 --size=3907017216 \
    --chunk=512 --layout=left-symmetric /dev/md127 /dev/sda /dev/sdc /dev/sdd \
    /dev/sde /dev/sdf /dev/sdg /dev/sdh missing /dev/sdj

装置を正しい順序で通過することは非常に重要です!また、イベント数が少なすぎて追加
しませんでした。sdiだから7番目のレイドスロットをmissing。したがって、raid5には9つのデバイスのうち8つが含まれており、劣化モードで組み立てられます。そしてスペアが足りないため、自動的に再構築が始まりません。

--examine次に、新しいスーパーブロックが古いスーパーブロックに合うことを確認するために使用します。実際に :-) ファイルシステムをマウントしてデータを読み取ることができました。次のステップは、データをバックアップして再度追加してsdi再構築を開始することです。

おすすめ記事