web-dev-qa-db-ja.com

MDADMスーパーブロックリカバリ

電源を入れ直した後、RAID 5アレイが機能しなくなっていることがわかりました。配列を再構築するためにさまざまな方法を試しましたが、今のところ何も機能していません。 どういうわけかスーパーブロックとUUIDを再作成する必要があると思いますが、大量のデータを失わないようにするためにバレルに入れることに消極的でした。読んでくれてありがとう。

cat /etc/mdadm/mdadm.conf

DEVICE partitions
ARRAY /dev/md0 level=raid5 num-devices=4 metadata=0.90 UUID=fd522a0f:2de72d76:f2afdfe9:5e3c9df1
MAILADDR root

これは正常です。 4x2000GBドライブ(sda、sdc、sde、sdd)が必要です。

cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : inactive sdd[1](S)
  1953514496 blocks

unused devices: <none>

これは問題だ。アレイ内の1つのドライブのみが表示され、非アクティブです。アレイには、sda、sdc、およびsdeも含まれている必要があります。 mdadm --examine /dev/sddを実行すると、すべてが正常に見えます。他のドライブでは、/ dev/sdXにRAIDスーパーブロックがないと調べます。

mdadm --examine --scan

ARRAY /dev/md0 level=raid5 num-devices=4 metadata=0.90 UUID=fd522a0f:2de72d76:f2afdfe9:5e3c9df1

そこに助けはありません。

mdadm --assemble --scan -v

mdadm: looking for devices for /dev/md0
mdadm: no RAID superblock on /dev/sde
mdadm: /dev/sde has wrong uuid.
mdadm: cannot open device /dev/sdd: Device or resource busy
mdadm: /dev/sdd has wrong uuid.
mdadm: no RAID superblock on /dev/sdc
mdadm: /dev/sdc has wrong uuid.
mdadm: cannot open device /dev/sdb5: Device or resource busy
mdadm: /dev/sdb5 has wrong uuid.
mdadm: no RAID superblock on /dev/sdb2
mdadm: /dev/sdb2 has wrong uuid.
mdadm: cannot open device /dev/sdb1: Device or resource busy
mdadm: /dev/sdb1 has wrong uuid.
mdadm: cannot open device /dev/sdb: Device or resource busy
mdadm: /dev/sdb has wrong uuid.
mdadm: no RAID superblock on /dev/sda
mdadm: /dev/sda has wrong uuid.

これから、sda、sdc、およびsdeのUUIDとスーパーブロックがないように見えます。

Sudo fdisk -l

Disk /dev/sda: 2000.4 GB, 2000397852160 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907027055 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sda doesn't contain a valid partition table

Disk /dev/sdb: 250.1 GB, 250058268160 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488395055 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x353cf669

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63   476327249   238163593+  83  Linux
/dev/sdb2       476327250   488392064     6032407+   5  Extended
/dev/sdb5       476327313   488392064     6032376   82  Linux swap / Solaris

Disk /dev/sdc: 2000.4 GB, 2000397852160 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907027055 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdc doesn't contain a valid partition table

Disk /dev/sdd: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdd doesn't contain a valid partition table

Disk /dev/sde: 2000.4 GB, 2000397852160 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907027055 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sde doesn't contain a valid partition table

このことから、RAIDディスクにはパーティションテーブルまたはUUIDがないように見えます。私の問題に最も近いものは このスレッド で、mdadm --create /dev/md0 -v -l 5 -n 4 /dev/sda /dev/sdc /dev/sde /dev/sddを実行し、fsck -fn /dev/md0で有効なファイルシステムをチェックすることを提案しました。ただし、最初のコマンドはmdadm: no raid-devices specified.を吐き出しました。sda1、sdc1などを使用してコマンドを再試行しましたが、次のようになります。

mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: super1.x cannot open /dev/sda1: No such file or directory
mdadm: ddf: Cannot open /dev/sda1: No such file or directory
mdadm: Cannot open /dev/sda1: No such file or directory
mdadm: device /dev/sda1 not suitable for any style of array

コマンドでsda1を作成して「欠落」変数として残すと、sdc1についても同じことがわかります。

私はこれを必要以上に複雑にしていると確信しています。経験のある人が助けてくれますか?事前にお問い合わせいただきありがとうございます。

*edit*dumpe2fs /dev/sdaを実行すると:

dumpe2fs 1.41.14 (22-Dec-2010)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          bbe6fb91-d37c-414a-8c2b-c76a30b9b5c5
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype     needs_recovery sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              366288896
Block count:              1465135872
Reserved block count:     73256793
Free blocks:              568552005
Free inodes:              366066972
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      674
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Filesystem created:       Wed Oct 28 12:23:09 2009
Last mount time:          Tue Oct 18 13:59:36 2011
Last write time:          Tue Oct 18 13:59:36 2011
Mount count:              17
Maximum mount count:      26
Last checked:             Fri Oct 14 17:04:16 2011
Check interval:           15552000 (6 months)
Next check after:         Wed Apr 11 17:04:16 2012
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      17e784d8-012e-4a29-9bbd-c312de282588
Journal backup:           inode blocks
Journal superblock magic number invalid!

ですから、まだそこにあります。まだ調査中...

6
Teque5

うわぁ!なんとピクルス。ソートできるかどうか見てみましょう。ディスクとパーティションテーブルの要約から始めます。

sda - no partition table
sdb - sdb1 [Linux] sdb2 [Linux extended] sdb5 [swap]
sdc - no partition table
sdd - no partition table
sde - no partition table
  1. これらはどれもマークされていませんfd Linux raid autodetect、これはデフォルトです
  2. パーティションを使用してディスク容量を整理していません[0]
  3. ディスク全体がext2/3用にフォーマットされているようですandは、ディスク全体をraidsetの一部として使用しています

最後のポイントは、あなたが元に戻したと思うところです。初期スクリプトは、おそらくあなたがfsckの期限が来たと考え、正気度でボリュームをチェックし、その過程でMDスーパーブロックを一掃しました。 dumpe2fsは、RAIDセットのボリューム部分に何も返さないはずです

RAIDを例にとります。

root@mark21:/tmp/etc/udev# fdisk -l /dev/sda

Disk /dev/sda: 640.1 GB, 640135028736 bytes
255 heads, 63 sectors/track, 77825 cylinders, total 1250263728 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000ffc4

Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048  1240233983   620115968   fd  Linux raid autodetect

root@mark21:/tmp/etc/udev# dumpe2fs /dev/sda1
dumpe2fs 1.41.14 (22-Dec-2010)
dumpe2fs: Bad magic number in super-block while trying to open /dev/sda
Couldn't find valid filesystem superblock.

RAIDセットをまったく再作成できたことは非常に幸運ですが、それによって展開の基本的な欠陥が変わることはありません。 これは再び起こります

私がお勧めするのは:

  1. そのRAIDセットのすべてをバックアップします
  2. アレイを破壊し、各デバイスからmdスーパーブロックを消去します(mdmdを使用)
  3. これらのディスクをゼロにします:dd if=/dev/zero of=/dev/sdX bs=1M count=100
  4. ディスクの99%にまたがるパーティションをsda、sdc、sdd、およびsdfに作成します[0]
  5. それらのパーティションにtype fdとしてタグを付けます linux-raid wiki
  6. これらのパーティションをいかなる種類のファイルシステムでも決してフォーマットしないでください
  7. 新しいRAID 5を作成します:mdadm --create/dev/md0 -v -f -l 5 -n 4/dev/sda1/dev/sdc1/dev/sdd1/dev/sde1
  8. /etc/mdadm.confの新しいUUIDを更新します
  9. 末永く幸せに過ごす

あなたの説明から、sdbはシステムディスクであり、それで問題ないと思います。 RAIDセットの作成に誤ってそれを含めないようにしてください。この後、あなたは正しい軌道に乗るべきであり、二度とこの問題に遭遇することはありません。

[0] SATAブロックで多数の不良ブロックがあったときに、非常に厄介な障害が発生しました。ベンダーツールを使用してディスクを再構成した後。かつて同一のディスクセットはユニークでしたが、不良ドライブは低レベルフォーマットが開始される前よりも数ブロック少なくなりました。これにより、もちろんパーティションテーブルが破壊され、ドライブがMD RAIDセットに再参加できなくなりました。

通常、ハードドライブには、一回だけ使用されるバックアップブロックの「空きリスト」があります。私の理論では、そのリストは使い果たされているはずであり、これはエンタープライズディスクではないため、安全に失敗してデータリカバリのためにリストを送信する機会を許可する代わりに、データを切り捨てて全体のサイズを変更することにしましたディスクイン.

したがって、RAIDセットを作成するときにディスク全体を使用することはなく、通常はディスク全体にまたがるパーティションを作成するときに、使用可能な空き領域の95〜99%の任意の場所を使用します。これにより、障害のあるメンバーを交換する際の柔軟性も向上します。たとえば、250 GBのすべてのディスクに同じ量の空きブロックがあるわけではないため、許容範囲内で最大値を下回った場合、ほぼすべてのディスクブランドを使用して障害のあるメンバーを交換できます。

4
ppetraki

私は以前に同じ問題を抱えていましたが、それを文書化しませんでした(そして少し前)。

e2fsck -b <superblockSector> /dev/sdXの使用と スーパーブロックセクターのバックアップ の試行について思い出します

TestDisk もご覧ください

1
Thermionix

あなたの投稿からしばらく経ちましたが、私はこれを書きます:

"mdadm:デバイス/ dev/sdb1:デバイスまたはリソースがビジー状態で開けません"

チェックするのは良いことです

cat/proc/mdstat

あなたのドライブは、いくつかのレイドに接続されていると思います。/dev/md126

もしそうなら、襲撃を止める

mdadm --stop/dev/md125

そして、raid/dev/md0を再構築してみてください

mdadm --assemble --verbose --update summaries/dev/md0/dev/sda3/dev/sdb3/dev/sdc3/dev/sdd3

しかし、より重要な問題:

1.5以上のディスクグレーダーでRAID 5を使用しないでくださいTB !!!

回復不能なビット誤り率

これは、巡回冗長検査(CRC)コードと複数の再試行を適用した後、ドライブがデータを回復できないレートです。 UBE(回復不能ビットエラー)レートは通常、エンタープライズクラスドライブ(SCSI、FC、SAS)の場合は10 ^ 15の1ビット、デスクトップクラスドライブ(IDE/ATA/PATA、SATA)の場合は10 ^ 14の1ビットで指定されます。 。 (つまり〜1.7 TBごと)

したがって、ドライブの1つに障害が発生した場合、〜55%の確率でWO N'T rebuild(UBE 10 ^ -14の場合)幸運を祈ります。 。

詳細: http://www.raidtips.com/raid5-ure.aspx

0
sirkubax