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

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

今朝目覚めると、RAID ホスト (Linux ソフトウェア RAID) からドライブが故障したというメールが届いていました。これは消費者向けハードウェアなので、大した問題ではありません。予備のドライブはあります。しかし、サーバーにたどり着いたときには、すべてが応答しなくなっていました。ある時点で、電源を切って再起動するしかないと判断しました。

システムが起動し、故障したドライブは故障としてマークされたままで、/proc/mdstat正しいように見えます。しかし、マウントされず/dev/md0、次のメッセージが表示されます。

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

心配になってきました。そこで、 を試してみました。xfs_check前者xfs_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

怖くなってきました。これまでのところ、Google で検索しても何も見つかりません。以前も怖かったのですが、いつも数日以内に解決したので、今のところはまだパニックにはなっていません。今夜、コールド スペアを挿入して再構築 (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非アクティブだと言われているのに?

答え1

結局、私が恐れていたほど、データ損失の可能性は高くありませんでした。配列は組み立てられている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

みんなほっとした。飲み物が欲しい…

答え2

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

関連情報