lunes, 15 de febrero de 2010

Notas - Error SuperBloques, FSCK ...

En varias ocasiones me he encontrado con problemas de discos y siempre me ocurre lo mismo....
Como pasa bastante tiempo entre cada ocasión, aún sabiendo por donde andan los tiros, me toca buscar y buscar comandos para solucionar el tema, asi que voy a intentar hacer un compendio de lo que suelo usar.

Discos etiquetados UUID
Cuando nuestro sistema usa un mecanismo de etiquetado de discos por UUID (Como fedora12), podemos obtener la relación entre etiqueta y dispositivo con el comando "blkid"

[celtha@gandalf ~]$ blkid
/dev/sda1: UUID="2e889011-bbb8-4aa9-84f9-2512fa2629cc" TYPE="ext3"
/dev/sda2: UUID="b0976fd1-0096-4b04-8132-304c0b1ca91c" TYPE="swap"
/dev/sdb1: UUID="7ea13ece-13a2-44ca-bd24-9a800718cf2e" TYPE="ext3"
/dev/sdb2: UUID="8d7db7f0-b75f-4b5a-b00e-14064eb246d0" TYPE="ext3"
/dev/sdc1: UUID="a6a54e7f-79c8-4c03-a10d-3d533a2aef83" TYPE="ext3"
/dev/sdc2: UUID="b6aaaa31-8e25-4e44-8783-e9b252408111" TYPE="ext3"
/dev/sdd1: UUID="8f52dc50-e5c5-4ea7-9edd-f8607374abe7" TYPE="ext3"

También podemos ver esta relación listando el contenido del directorio "/dev/disck/by-uuid"

[celtha@gandalf ~]$ ls -las /dev/disk/by-uuid/
total 0
0 drwxr-xr-x 2 root root 180 feb 20 14:37 .
0 drwxr-xr-x 5 root root 100 feb 20 14:44 ..
0 lrwxrwxrwx 1 root root 10 feb 20 14:37 2e889011-bbb8-4aa9-84f9-2512fa2629cc -> ../../sda1
0 lrwxrwxrwx 1 root root 10 feb 20 14:37 7ea13ece-13a2-44ca-bd24-9a800718cf2e -> ../../sdb1
0 lrwxrwxrwx 1 root root 10 feb 20 14:37 8d7db7f0-b75f-4b5a-b00e-14064eb246d0 -> ../../sdb2
0 lrwxrwxrwx 1 root root 10 feb 20 14:37 8f52dc50-e5c5-4ea7-9edd-f8607374abe7 -> ../../sdd1
0 lrwxrwxrwx 1 root root 10 feb 20 14:37 a6a54e7f-79c8-4c03-a10d-3d533a2aef83 -> ../../sdc1
0 lrwxrwxrwx 1 root root 10 feb 20 14:37 b0976fd1-0096-4b04-8132-304c0b1ca91c -> ../../sda2
0 lrwxrwxrwx 1 root root 10 feb 20 14:37 b6aaaa31-8e25-4e44-8783-e9b252408111 -> ../../sdc2



Obtener lista de SuperBloques
Cuando tenemos el SuperBloque dañado fsck no podrá hacer su "trabajo", por lo que deberemos recuperarlo.
Para esto debemos saber en que posiciones del disco están almacenados los de respaldo, para lo que podemos usar el comando "mke2fs".

#mke2fs -n /dev/XXX .... Respaldo del súper bloque guardado en los bloques: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424

Recuperar SuperBloque
Para recuperar el SuperBloque usaremos cualquiera de los valores anteriores, pasandoselo al comando "e2fsck".

#e2fsck -b 11239424
....
dev/sda3: ***** EL SISTEMA DE FICHEROS FUE MODIFICADO *****
/dev/sda3: ficheros 1695324/9502720 (7.3% no contiguos), bloques
15338562/18998870


Llegados a este punto y si todo ha salido correctamente, podremos usar las opciones de "fsck" para reparara nuestro sistema de ficheros.
Como leí en su momento fsck es un Front-End de diversas aplicaicones, esto se ve con ejemplos más adelante.

FSCK
Podemos sacar las opciones desde su manual, aunque las que mas habitualmente uso son las siguientes:

-C Mostrar barra de progreso.
-A Chequea los sistemas definidos en fstab.
-M No chequea sistemas montados.
-V Salida detallada

-a Automatico, no pide confirmacion.
-c Busca bloques dañados y los agrega a lista de bloques defectuosos.
-n Solo reporta errores no los repara.
-f Metodo forzado.
-v Verbose, salida detallada.
-y Si a todas las preguntas.


Chequeo básico (Verbose)

#fsck -V /dev/sda1
fsck xxxx
[
/sbin/fsck.ext3 (1) -- /dev/sda1] fsck.ext3 /dev/sda1
e2fsck xxxx
limpio.........

Nota: He marcado en negrita la aplicación que se está ejecutando, por lo que comentaba de que era un compendio de aplicaicones.

Ejemplos de uso comun:

Comprobar bloques dañados.
fsck -c /dev/hdb2

Chequeo sin reparación.
fsck -CV -n /dev/hdb6

No hay comentarios: