Solucionar «wrong fs type, bad option, bad superblock on /dev/»

A casi todos los que trasteamos con discos duros conectados a un sistema linux por puertos USB tarde o temprano nos ocurre algo similar a esto..

mount: /dev/sdb5: Can’t read superblock o wrong fs type, bad option, bad superblock on /dev/

Vamos a ver en este arículo alguna de las maneras en las que podemos afrontar esta situación.

Si usamos un ordenador convencional es casi seguro que el primer superbloque de nuestro disco estará dañado, pero si usamos una Raspberry Pi con ext4 podemos tener suerte y que el problema sea unicamente que la estemos alimentando con un «transformador» un poco justito. Así que empezaremos por hablar de este segundo caso.

Si conectando una pantalla a nuestra Raspberry Pi observamos un indicador con forma de rayo amarillo en la esquina superior izquierda, o un recuadro con los colores del arcoiris si estamos en una versión más antigua del sistema, puede que el programa encargado de mantener la inteegridad a la hora de grabar informacióne en los discos duros, conocido como «Journaling» haya tenido la mala fortuna de demandar más intensiddad ed la que nuestra fiuente a de alimentación puede suministrar (pero si la suficiente ocmo para que la Raspberry Pi no haya dejado de funcionar) provocando un dato «erroreo» en el programa mencionado, que ante la duda dejará de funcionar montando nuestra partición como ext2 de solo lectura, sin la seguridad del journaling, por lo que el sistema dejará de respodner corectamente.

¿Como podemos comprobar si este es nuestro caso?

Sencillo. Solo dedemos volver a montar las particiones y si durante un «rato» vuelven a funcionar sin problema yo apostaria a que que cambiando la fuente de alimentación por una de 2,5 Amperios el problema queda definitivamente resuelto.

sudo mount -a

Pero como no siempre vamos a tener a la diosa fortuna de nuestro lado, y que con tan poco esfuerzo podamso solventar el problema, veamos alguno de los pasos que podemos dar si tras verificar lo que hemos comentado antes, nuestro problema persistiera.

Lo primero que podemos deducir del mensaje de error que da título a este artículo es que tenemos una probabilidad muy alta de que el primer superbloque de ese disco duro está dañado, por lo que una solución que podemos intentar darle, es recurrir a una de las copias automáticas de superbloque que el sistema de archivo realiza, bien ¿y como encuentro esa copia tan necesitada?, pues podemos hacerlo de diferentes maneras. Vamos a ver dos sencillas.

1. Si leemos el man del comando e2fsck en la sección de OPTIONS y allí nos vamos a la -b superblock, veremos que al final del todo dice: “For filesystems with 1k block‐sizes, a backup superblock can be found at block 8193; for filesystems with 2k blocksizes, at block 16384; and for 4k blocksizes, at block 32768“. Vale pues sabiendo esto queda conocer el block-size, para esto podemos ejecutar el siguiente comando:

$ sudo dumpe2fs /dev/sdb5 |grep «Block size»

dumpe2fs 1.42.9 (4-Feb-2016)

Block size: 4096

Ya sabemos que es de 4k por lo que el backup del superbloque estará en el bloque 32768

2. Para hacerlo de esta forma es “casi necesario” el saber el tamaño del bloque, digo casi porque puede ayudarnos a obtener resultados mas preciso, pero bueno sabiendo la opción 1, que nos cuesta conocer el tamaño no?. Aún así citaré este modo porque tendremos la ventaja de que conoceremos mas bloques que contienen backups del superbloque, algo clave por si el bloque 32768 está corrupto.

$ sudo mke2fs -b 4096 -n /dev/sdb5 |grep -A 3 «Respaldo»

mke2fs 1.42.9 (4-Feb-2014)

Respaldo del superbloque guardado en los bloques:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624

Por partes:

mke2fs como ya sabremos, lo utilizamos para crear un sistema de archivo ¡ CUIDADO ! la opción «-n» es importantísima de no ponerla puedes apagar el PC ya e irte a que te de el aire :D. La opción -b pasa el tamaño del bloque y la segunda parte del comando es la “pijadita” para que nos muestre las líneas exactas de las direcciones donde obtendremos los bloques que contienen las copias del superbloque.

Bueno pues ahora que ya tenemos las direcciones de los bloques donde podremos obtener la copia del superbloque, queda restaurar el primer superbloque con alguna de estas copias. Para esto usaremos el siguiente comando:

Nota: Antes de usar fsck podemos intentar montar la partición con mount indicando el nuevo superbloque y comprobar si podemos navegar por el sistema de archivos, si es así, lo mejor será hacer una copia de seguridad de archivos importantes por si tuviésemos algún contratiempo con fsck. Esto lo haremos así:

$ sudo mkdir /mnt/suerte$ sudo mount sb=32768 /dev/sdb5 /mnt/suerte

Si no hemos tenido suerte o no hemos podido navegar por todo el sistema de archivos entonces:

Importante: Estar seguro de que tenemos la partición desmontada!!

$ sudo fsck -b 32768 -p /dev/sdb5

¿Está claro no?, con -b indicamos el bloque y con -p estamos diciéndole que repare de forma automática el sistema de archivos!!! 😀

Nota: En ocasiones veréis que se usa la opción -a, esta opción se mantiene por compatibilidad, usar -p mejor.

Dejar un comentario