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
говорит мне, что это неактивно?
2 ответа
Оказывается, это было не так страшно с потерей потенциальных данных, как я начинал бояться. Когда я заметил, что массив был 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
Облегчение вокруг. Мне нужно выпить...
У меня была похожая проблема в 2009 году, я хвастался этим на Facebook, а затем не смог воссоздать решение. Однако потеря данных была более страшной. Я пишу для потомков и для моей собственной способности найти его.
Проблема была немного другой - gparted сказал, что sda1 был xfs, а sda2 неизвестен, оба должны быть разделами рейда, а xfs должен быть на md0
# mdadm --assemble --force /dev/md0 /dev/sda1 /dev/sdb1
# xfs_repair -v /dev/md0
# mount /dev/md0 /mount/myRaid