web-dev-qa-db-ja.com

XFSがスーパーブロックを読み取れません

今朝目が覚めたら、RAIDホスト(LinuxソフトウェアRAID)から、ドライブに障害が発生したことを知らせる電子メールが届きました。それは消費者向けハードウェアであり、大したことではありません。コールドスペアがあります。しかし、サーバーにアクセスしたとき、すべてが応答しませんでした。ある時点で、電源を切って再起動するしかないと思いました。

システムが起動しましたが、故障したドライブはまだ故障としてマークされています。/proc/mdstatは正しいようです。ただし、/dev/md0はマウントされず、次のように通知されます。

mount: /dev/md0: can't read superblock

今、私は心配し始めています。だから私はxfs_checkxfs_repairを試してみましたが、前者は次のように教えてくれます。

xfs_check: /dev/md0 is invalid (cannot read first 512 bytes)

後者:

Phase 1 - find and verify superblock...
superblock read failed, offset 0, size 524288, ag 0, rval 0

fatal error -- Invalid argument

今、私は怖くなってきています。これまでのところ、私のグーグルは役に立たなかった。今、私は以前に怖がっていたので、まだパニックモードにはなっておらず、それは常に数日以内に解決されます。今夜もコールドスペアをポップして再構築し(36時間)、ファイルシステムがより使いやすい状態にあるかどうかを確認できます。 (ファイルシステムをまだ拡張していないので)アレイを現在の11から10ドライブに再形成して、それが役立つかどうかを確認することもできます(1週間の大部分を占めます)。

しかし、私が仕事をしている間、今夜家でこれを行う前に、ここで専門家の助けを求めたいと思います。

ファイルシステムとRAIDに精通している人はいますか?たぶん、ファイルシステムの問題をさらに診断したり、それを永久に修復したりするために、ここからSSHを介してできることがありますか?

編集

/proc/mdstatが実際に手がかりを提供しているようです。

Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md0 : inactive sdk1[10] sdh1[7] sdj1[5] sdg1[8] sdi1[6] sdc1[2] sdd1[3] sde1[4] sdf1[9] sdb1[0]
      19535119360 blocks

inactive?だから私は配列を組み立てようとします:

# mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1
mdadm: device /dev/md0 already active - cannot assemble it

すでにアクティブですか? /proc/mdstatが非アクティブであると言っているのに?

4
David

私が恐れ始めていたほど、潜在的なデータ損失は怖くなかったことがわかりました。配列がinactiveであることに気付いたが、アセンブルできなかったので、停止しました。

# mdadm -S /dev/md0
mdadm: stopped /dev/md0

その後それを組み立てようとしました:

# mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1
mdadm: /dev/md0 assembled from 10 drives - not enough to start the array while not clean - consider --force.

まだ少し怖いので、/proc/mdstatが何を言っているか見てみましょう。

# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md0 : inactive sdb1[0](S) sdk1[10](S) sdf1[9](S) sdg1[8](S) sdh1[7](S) sdi1[6](S) sdj1[5](S) sde1[4](S) sdd1[3](S) sdc1[2](S)
      19535119360 blocks

すべて...スペア...?わかりました、また怖いです。もう一度停止します。

# mdadm -S /dev/md0
mdadm: stopped /dev/md0

そして、--forceを使用して、それが示唆することを試してください。

# mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1 --force
mdadm: /dev/md0 has been started with 10 drives (out of 11).

11人中10人は、コンピューターの隣の棚に座っているので、これまでのところ良いです。

# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md0 : active raid6 sdb1[0] sdk1[10] sdf1[9] sdg1[8] sdh1[7] sdi1[6] sdj1[5] sde1[4] sdd1[3] sdc1[2]
      17581607424 blocks level 6, 64k chunk, algorithm 2 [11/10] [U_UUUUUUUUU]

安堵のため息をつく、最後のテスト:

# mount /dev/md0 /mnt/data
# df -ahT
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/root     ext4     73G  6.9G   63G  10% /
proc          proc       0     0     0   -  /proc
sysfs        sysfs       0     0     0   -  /sys
usbfs        usbfs       0     0     0   -  /proc/bus/usb
tmpfs        tmpfs    1.7G     0  1.7G   0% /dev/shm
/dev/md0       xfs     15T   14T  1.5T  91% /mnt/data

すべての周りの救済。私は飲み物が必要...

4
David

私は2009年に同様の問題を抱えていましたが、Facebookでそれについて自慢し、その後ソリューションを再現できませんでした。しかし、それはもっとデータ損失が怖かったです。私は後世のために、そしてそれを見つける私自身の能力のために投稿しています。

問題はわずかに異なりました-gpartedは、sda1はxfsであり、sda2は不明であり、両方ともraidパーティションであり、xfsはmd0にある必要があると述べました

# mdadm --assemble --force /dev/md0 /dev/sda1 /dev/sdb1
# xfs_repair -v /dev/md0
# mount /dev/md0 /mount/myRaid
0
MaKR