XFS no puede leer el superbloque

XFS no puede leer el superbloque

Me desperté esta mañana y encontré un correo electrónico de mi host RAID (RAID de software de Linux) que me decía que había fallado una unidad. Es hardware de consumo, no es gran cosa. Tengo repuestos fríos. Sin embargo, cuando llegué al servidor, todo no respondía. En algún momento pensé que no tenía más remedio que cortar la energía y reiniciar.

El sistema se encendió, la unidad fallida todavía está marcada como fallida y /proc/mdstatparece correcta. Sin embargo, no se monta /dev/md0y me dice:

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

Ahora estoy empezando a preocuparme. Entonces lo intento xfs_checky xfs_repair, el primero de los cuales me dice:

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

y este último:

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

fatal error -- Invalid argument

Ahora me estoy asustando. Hasta ahora mi búsqueda en Google ha sido inútil. Ahora bien, todavía no estoy en modo de pánico porque ya he tenido miedo antes y siempre se soluciona en unos pocos días. Todavía puedo colocar mi repuesto frío esta noche, dejar que se reconstruya (durante 36 horas) y luego ver si el sistema de archivos está en un estado más utilizable. Tal vez incluso pueda intentar remodelar la matriz de nuevo a 10 unidades de las 11 actuales (ya que aún no he ampliado el sistema de archivos) y ver si eso ayuda (lo que lleva la mayor parte de una semana).

Pero mientras estoy en el trabajo, antes de poder hacer algo de esto en casa esta noche, me gustaría buscar la ayuda de expertos aquí.

¿Alguien con más conocimientos sobre sistemas de archivos y RAID tiene alguna recomendación? ¿Quizás haya algo que pueda hacer a través de SSH desde aquí para diagnosticar mejor el problema del sistema de archivos o incluso repararlo?

Editar:

Parece que /proc/mdstaten realidad ofrece una pista:

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? Entonces trato de ensamblar la matriz:

# 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

¿Ya está activo? ¿Aunque /proc/mdstatme dice que está inactivo?

Respuesta1

Resulta que la posible pérdida de datos no fue tan aterradora como estaba empezando a temer. Cuando noté que la matriz estaba inactivepero no se podía ensamblar, la detuve:

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

EntoncesIntenté montarlo:

# 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.

Todavía da un poco de miedo, veamos qué /proc/mdstattiene que decir:

# 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

¿Todos... repuestos...? Ok, asustado de nuevo. Detente de nuevo:

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

Y prueba lo que sugiere, usando --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 sobre 11, ya que uno está sentado en la estantería junto al ordenador, hasta ahora todo bien:

# 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]

Respirando aliviado, una última prueba:

# 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

Alivio por todas partes. Necesito una bebida...

Respuesta2

Tuve un problema similar en 2009, me jacté de ello en Facebook y luego no pude recrear la solución. Sin embargo, la pérdida de datos fue más aterradora. Estoy publicando para la posteridad y para mi propia capacidad de encontrarlo.

El problema fue ligeramente diferente: gparted dijo que sda1 era xfs y sda2 era desconocido, ambas deberían ser particiones raid y xfs debería estar en md0.

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

información relacionada