XFS не может прочитать суперблок

XFS не может прочитать суперблок

Я проснулся сегодня утром и обнаружил письмо от моего RAID-хоста (программный RAID Linux), в котором говорилось, что диск вышел из строя. Это потребительское оборудование, это не проблема. У меня есть холодные резервы. Однако, когда я добрался до сервера, он не отвечал. В какой-то момент я понял, что у меня нет выбора, кроме как отключить питание и перезагрузить его.

Система загрузилась, неисправный диск все еще отмечен как неисправный, /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 часов), а затем посмотреть, находится ли файловая система в более пригодном состоянии. Я, возможно, даже могу попробовать перестроить массив обратно до 10 дисков с текущих 11 (поскольку я еще не увеличил файловую систему) и посмотреть, поможет ли это (что займет большую часть недели).

Но пока я на работе, прежде чем я смогу сделать что-либо из этого дома сегодня вечером, я хотел бы обратиться за помощью к экспертам здесь.

Есть ли у кого-нибудь более осведомленного о файловых системах и 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).

10 из 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

Всеобщее облегчение. Мне нужно выпить...

решение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

Связанный контент