GNU/Linux : I/O error, dev sda, sector 72575533

El Viernes 20060623 cometí un error de esos que a uno le hacen sentirse el protagonista de frases como esta:

"Dos cosas son infinitas: el universo y la estupidez humana; y yo no estoy seguro sobre el universo." — Albert Einstein

Estaba con el ogame a 10 minutos de poder subir un nivel de una mina de cristal, es decir, con el planeta cargado de recursos. Si me voy me lo destrozan todo y a volver a empezar. Hablo con tanta seguridad porque estoy jugando sin alianza y la alianza Draconia no hace más que tocar las narices.
Pues me llama un amigo (el alber) desde el móvil diciéndome que acababa de gripar la moto a bastante más velocidad de la que permite tráfico (p'haberse matao ;-) ), que si podía ir a buscarle. Vale, con prácticas para el carnet de moto dentro de 2 horas y va y gripa la moto. :-/

Gran dilema: si me quedo a esperar los 10 minutos salvo el juego pero soy un mal amigo. Si me voy corriendo me crugen en el juego pero voy a ayudar a mi amigo.
Decisión: ir a preparar todos los trastos (lata de aceite por si se ha quedado sin aceite, cuerda) para remolcar la moto hasta casa (si, es ilegal ¿y que?), cuando termine apagar el ordenador y salir corriendo.

Cuando terminé de prepararlo todo todavía quedaban 5 minutos ... y por 5 minutos. Esperé hasta que pasaran, dejé el juego en situación ventajosa, apagué todo utilizando el botón de la UPS para ahorrar tiempo y me fui.

Lo de la moto salió bien, incluso fue divertido empujarle como cuando éramos pequeños e íbamos en bici ... pero al volver, arrancar el ordenador y montar / vi esa palabra que todos tememos ... o deberíamos temer: DriveSeekError.
Estoy bastante acostumbrado a verla porque trabajo con DVDs regrabables mucho tiempo y eso significa que tiene un rallajo así que es momento de cambiarlo ... pero en un disco duro significa que el disco está jodido en mayor o menor medida -> mal rollo.

Así que hice lo que cualquier geek haría en esta ocasión ... apagar el ordenador e irse con los colegas a dar una vuelta, que total, un día después va a estar igual de mal la cosa. ;-)

El día después probé a arrancar con otro de los 5 GNU/Linux que tengo instalados en el ordenador ¡y arrancó Breezy sin problemas! así que hice lo que todo geek hubiera hecho al conseguir arrancar un ordenador estropeado ... abrir el ogame para mover las naves e irme a dar una vuelta con los colegas. ;-)

Y así hasta hoy, que la cosa empieza a oler.
Mi PC tiene incluso una UPS para que no pasen estas cosas, pero a veces parezco novato y hago cosas como desenchufar el ordenador de la red sin pensarlo dos veces. Lo que pasó es que debieron aterrizar las cabezas y me llevé por delante unos cuantos sectorcillos del disco.
Parece que la partición de datos está bien y sólo hay sectores defectuosos dentro de la partición de sistema de Dapper. ¡buena noticia!

Es la primera vez que me pasa algo así. Me leo la ayuda de fsck y no encuentro nada de sectores defectuosos. Sólo detecta errores lógicos pero peta con los físicos.
Leo la ayuda del e2fsck y parece que con la opción -c utiliza la herramienta badblocks para ver cuales son los sectores defectuosos y marcarlos.

La salida de /var/log/messages para este tipo de error es:

Jun 25 10:05:34 localhost kernel: [4297838.699000] ata1: status=0x25 { DeviceFault CorrectedError Error }
Jun 25 10:05:34 localhost kernel: [4297838.699000] SCSI error : <0 0 0 0> return code = 0x8000002
Jun 25 10:05:34 localhost kernel: [4297838.699000] sda: Current: sense key: Hardware Error
Jun 25 10:05:34 localhost kernel: [4297838.699000] Additional sense: No additional sense information
Jun 25 10:05:34 localhost kernel: [4297838.699000] end_request: I/O error, dev sda, sector 72575549

Bueno, pues allá voy:

root@yinyan:/home/jmferrerm# e2fsck -c /dev/sda5
e2fsck 1.38 (30-Jun-2005)

Aquí se eternizó bastante.

Se están revisando los bloques malos (prueba de sólo lectura): 0/ hecho 4
Paso 1: revisando nodos i, bloques y tamaños

Running additional passes to resolve bloques claimed by more than one nodo i...
Pass 1B: Rescanning for multiply-claimed bloques
Multiply-claimed bloque(s) in nodo i 8: 15232 15234 15235 15236 15237 15238 15239 15241 15242 15243 15244 15245 15246 15247 15249 15250 15251 15252 15253 15254 15255 15257 15258 15259 15260 15261 15262 15263 15265 15266 15267 15268 15269 15270 15271 15273 15274 15275 15276 15277 15278 15279 15281 15282 15283 15284 15285 15286 15287 15289 15290 15291 15292
Pass 1C: Scanning directories for nodo is with multiply-claimed bloques
Pass 1D: Reconciling multiply-claimed bloques
(There are 0 nodo is containing multiply-claimed bloques.)

File (nodo i #8, mod time Wed May 31 09:00:25 2006)
has 53 multiply-claimed bloque(s), shared with 1 file(s):
(nodo i #1, fecha de modificación Sun Jun 25 10:00:55 2006)
Clone multiply-claimed blocks? si

Error leyendo el bloque 15282 (Attempt to read block from filesystem resulted in short read). Se ignora el error? si

Se fuerza la reescritura? si

Error leyendo el bloque 15283 (Attempt to read block from filesystem resulted in short read). Se ignora el error? si

Se fuerza la reescritura? si

Error leyendo el bloque 15284 (Attempt to read block from filesystem resulted in short read). Se ignora el error? si

Se fuerza la reescritura? si

Error leyendo el bloque 15285 (Attempt to read block from filesystem resulted in short read). Se ignora el error? si

Se fuerza la reescritura? si

Error leyendo el bloque 15286 (Attempt to read block from filesystem resulted in short read). Se ignora el error? si

Se fuerza la reescritura? si

Error leyendo el bloque 15287 (Attempt to read block from filesystem resulted in short read). Se ignora el error? si

Se fuerza la reescritura? si

Error leyendo el bloque 15289 (Attempt to read block from filesystem resulted in short read). Se ignora el error? si

Se fuerza la reescritura? si

Error leyendo el bloque 15290 (Attempt to read block from filesystem resulted in short read). Se ignora el error? si

Se fuerza la reescritura? si

Error leyendo el bloque 15291 (Attempt to read block from filesystem resulted in short read). Se ignora el error? si

Se fuerza la reescritura? si

Error leyendo el bloque 15292 (Attempt to read block from filesystem resulted in short read). Se ignora el error? si

Se fuerza la reescritura? si

Paso 2: revisando la estructura de directorios
Paso 3: revisando la conectividad del directorio.
Paso 4: revisando las cuentas de referencia
Paso 5: revisando el resumen de información del grupo
La cuenta de bloques libres es incorrecta para el grupo #0 (65483, contados=0).
Arreglo? si

La cuenta de bloques libres es incorrecta para el grupo #1 (31704, contados=31651).
Arreglo? si

Diferencias del mapa de bits del nodo i: -162585
Arreglo? si

La cuenta de nodos i libres es incorrecta para el grupo #10 (16195, contados=16196).
Arreglo? si

La cuenta de nodos i libres es incorrecta (1166398, contados=1166399).
Arreglo? si

/dev/sda5: ***** EL SISTEMA DE FICHEROS FUE MODIFICADO *****
/dev/sda5: ficheros 215361/1381760 (0.5% no contiguos), bloques 1303564/2761164

Vale, y ahora vamos a ver si ha hecho algo ejecutando el mismo comando otra vez.
Si hubiera salido todo bien ya no debería tener errores.

root@yinyan:/home/jmferrerm# e2fsck -c /dev/sda5
e2fsck 1.38 (30-Jun-2005)
Se están revisando los bloques malos (prueba de sólo lectura): 0/ hecho 4
Paso 1: revisando nodos i, bloques y tamaños
Paso 2: revisando la estructura de directorios
Paso 3: revisando la conectividad del directorio.
Paso 4: revisando las cuentas de referencia
Paso 5: revisando el resumen de información del grupo

/dev/sda5: ***** EL SISTEMA DE FICHEROS FUE MODIFICADO *****
/dev/sda5: ficheros 215361/1381760 (0.5% no contiguos), bloques 1303510/2761164
root@yinyan:/home/jmferrerm#

Pues ya está, todo perfecto.

Ahora voy a reiniciar en Dapper y a ver que pasa.