lunes, 13 de octubre de 2008

Reparacion del Hard Disk con sectores defectuosos

En esta oportunidad, vamos a ver como podemos realizar comprobaciones e intentar reparar nuestro disco rígido en gnu/linux. Lo primero que vamos a necesitar es un live cd, eso es muy sencillo de conseguir, a mi me gusta mucho DSL Damm Small Linux (DESCARGAR) ya que es muy liviano, tiene bastantes herramientas y carga practicamente en cualquier pc, digo esto porque a veces tenemos esas pc's viejitas donde un Live CD de Ubuntu, por ejemplo, no carga.

Bueno ahora como detectamos que nuestro disco rígido tiene errores?
  • Porque cuando intentamos por ejemplo compilar algo a mano nos devuelve errores de "hdaIO dma" Entrada y Salida
  • fdisk -f nos indica que tenemos errores
  • Al formatear ya nos indica que hay sectores defectuosos

Nosotros trataremos de repararlo, pero, no siempre se logra, si el disco tiene una falla física, es decir, se raya algunos de los platos, esto es imposible de recuperar, ahora si la falla es "Lógica" podemos correr algunas herramientas que aquí detallo:

  • GPART
Gpart es una herramienta que intenta supuestamente reparar la tabla de partición primaria del disco en caso que en el sector 0 este dañado , sea incorrecto o eliminado. DESCARGAR

  • Badblocks
Badblocks busca en una partición bloques con errores, por ejemplo /dev/hda1, esta herramienta la vamos a utilizar mas adelante así que no entrare en detalles ahora.

  • e2fsck
Chequea el sistema de archivos ext3/ext2 en una partición extendida, si cuando particionamos el disco, creamos una partición extendida.

  • fsck
Chequea y repara un sistema de archivos, también voy a explicarlo mas adelante.

Estas son algunas herramientas, hay muchas mas y si quieren pueden comentarlas, sin ningún inconveniente.

Lo primero que debemos hacer , es crearnos un backup de nuestros archivos, ya que siempre es conveniente trabajar con el disco limpio, también se recomienda hacer un formateo de bajo nivel, pero nosotros nos centramos a reparar en lo posible el disco.

Una vez que tenemos hecho nuestro backup, vamos a iniciar con un live CD , pero no debemos montar la partición a reparar, en nuestro caso HDA1.

Ahora comenzamos borrando todo el disco para ver si nos tira algún error

# dd if=/dev/zero of=/dev/hda1
Si nuestro disco tiene algún error seguramente nos dirá algo como lo siguiente

end_request: I/O error, dev 03:01 (hda), sector 2738288

Trataremos de repararlo, podemos bajarnos "gpart" , pero deberemos instalarlo en nuestro Live CD, sino sacar el disco, ponerlo en otra pc con Linux, y correrlo desde ahí, esto es incomodo, prefiero trabajar con un live cd.

Ahora vamos a intentar reparar este bloque, para eso corremos
# badblocks -f -s /dev/hda

Esto sera de solo lectura, es decir, no aplicara ninguna modificación, ahora si queremos reparar ejecutamos

# badblocks -w -s /dev/hda

Una vez finalizado esto, esperemos ver reparado los sectores defectuosos, como he dicho anteriormente, si los errores son físicos ya no podemos hacer nada.

Por ultimo vamos a correr fsck para chequear y reparar algún error en un sistema de archivo, la sintaxis seria

# fsck /dev/hda

Las posibles salidas serán :
0 - Sin errores
1 - Errores de sistema de archivo corregidos
2 - Reiniciar el sistema
4 - Errores en el sistema de archivos sin reparar
8 - Error operacional
16 - Error de sintaxis
32 - fsck cancelado por el usuario
128 - Error de librerías

Ahora en el caso de que la partición sea extendida corremos e2fsck
# e2fsck /dev/hda1

Las salidas son iguales a las de fsck así que no las vuelvo a detallar.

Por ultimo si esto no les funciona o nos les repara el disco, pueden probar el formateo de bajo nivel, pero ya puedo adelantarles que los sectores del disco son irreparables.

Que hacemos ahora si tenemos sectores que no podemos reparar, pues lo siguiente:
Desde un live cd ejecutamos

# fdisk -l /dev/hda
Device Boot Start End Blocks Id System
/dev/hda1 * 1 4801 38564001 83 Linux

38564001 es la cantidad de bloques, ahora vamos a separar los defectuosos

# badblock /dev/hda > badblocks

Esto nos puede llevar mucho tiempo, correrlo en una noche y en lo posible con nice. Ahora vamos a crear el sistema de archivos ext3 pero omitiendo los bloques dañados

# mkfs.ext3 -l badblocks /dev/hda1

Una vez terminado este proceso, montamos /dev/hda1 en por ejemplo /mnt/hda y ejecutamos df -h para ver la cantidad en MB de bloques dañados


11 comentarios:

MarMarAba dijo...

Gracias tío! Gran tuto

Anónimo dijo...

Hola, muchas gracias por el tutorial, lo estoy poniendo en practica en este momento y creo que lo del cine es en serio, jeje, vamos a ver como va.

Anónimo dijo...

¡Eres el mejor, gran trabajo!

Anónimo dijo...

Ah, en la línea

# badblock /dev/hda > badblocks

Te falta la "s" de badblocks

Saludos, ;)

dollo dijo...

A las órdenes badblocks si se les añade "-v", sin las comillas, muestra el número de sectores defectuosos

Anónimo dijo...

Increible la información, lo mejor de lo mejor, muchas gracias

caym dijo...

Gracias por el tutorial. Has conseguido que borre todos los datos de mi disco duro.

Por cierto, podrías dedicarte a escribir sobre otra cosa, si de informática no tienes ni idea...

Saludos.

Anónimo dijo...

muchas gracias amigo esperom poder segir paso apaso tu tuto en hora buena tio.

Anónimo dijo...

hola
lo que sucede es que ya aparte los sectores defectuosos y monte una partición .ext3 como hago ahora para instalar linux sin tomar los sectores defectuosos que ya separe

Anónimo dijo...

Gracias, todo un tutorial muy util para estos tiempos que no sobra el dinero.
Muchas gracias y feliz año.

Anónimo dijo...

Hola, el tutorial esta bueno pero falta aclarar que cuando utilizas el "badblock" con el modificador -w esta herramienta escribe datos en la partición que estas revisando destruyendo todos los datos existentes...
Se recomienda utilizar el modificador -n reemplazando al -w para no perder datos si es que la partición tiene datos.
Saludos.
Elpry