
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/mdstat
parece correcta. Sin embargo, no se monta /dev/md0
y me dice:
mount: /dev/md0: can't read superblock
Ahora estoy empezando a preocuparme. Entonces lo intento xfs_check
y 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/mdstat
en 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/mdstat
me 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 inactive
pero 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/mdstat
tiene 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