XFS无法读取超级块


3

我今天早上醒来,发现我的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个驱动器(因为我还没有增加文件系统),看看是否有帮助(这需要一周的大部分时间)。

但是当我在工作的时候,在今晚我可以在家做任何这件事之前,我想在这里寻求专家的帮助。

有没有更多关于文件系统和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告诉我它不活跃?

Answers:


4

事实证明,这并不像我开始担心的那样潜在的数据丢失可怕。当我注意到阵列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).

十分之十,因为一个人坐在电脑旁边的架子上,到目前为止一直很好:

# 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

四处救济。我需要喝一杯......


0

我在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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.