Cómo reparar un disco duro

El disco rígido es el principal medio de almacenamiento de información.

En un artículo anterior hablamos sobre cómo solucionar problemas relacionados con la BIOS. En este nos enfocaremos en otro componente que, si bien no es esencial, resulta necesario para sacarle todo el partido de nuestro ordenador. Ahora veremos cómo reparar un disco duro usando utilidades de software libre y código abierto.

La función del disco duro es la de permitir el almacenamiento y recuperación de grandes cantidades de información. En la mayoría de los casos ese almacenamiento es permanente (Al menos hasta que decidamos voluntariamente borrarla). Adicionalmente colabora con la RAM cuando esta debe almacenar más información de la que puede guardar actuando como lugar de almacenamiento temporario.

Cómo se repara un disco duro

Para saber cómo solucionar problemas primero debemos entender su naturaleza y, para ello necesitamos conocer la composición y funcionamiento de una unidad de disco duro.

Dentro de la caja hermética encontramos dos componentes bien diferenciados:

  • Un conjunto de componentes electrónicos y mecánicos encargado de los procedimientos para almacenar y recuperar datos.
  • Una pila de discos conocidos como platos. Los platos almacenan información en forma magnética tanto en el lado superior cómo el inferior en pequeños elementos que pueden ser magnetizados o desmagnetizados representando 1 o 0 en un bit de información.

Funcionamiento del disco duro

Las particiones permiten instalar diferentes sistemas operativos en un mismo disco duro.

Las particiones son divisiones establecidas mediante software que permite que una unidad funcione en la práctica como si fuera varias unidades diferentes.

Existe una cabeza de lectura y escritura por cada superficie, es decir que la cantidad de cabezas será el doble de la cantidad de platos. Mediante un brazo mecánico las cabezas se desplazan en forma lineal desde afuera hacia dentro. Al mismo tiempo la pila de platos va girando a una velocidad constante mientras se esté escribiendo o leyendo información. Cuando se va a leer o escribir algo las cabezas se ponen en posición y esperan que el disco gire hasta que la cabeza correspondiente se alinee o con la ubicación del dato buscado o con el lugar asignado para guardarlo.

Cada una de las superficies de las caras se dividen en círculos concéntricos denominados pistas. A las pistas que ocupan la misma posición en todos los discos de la pila se las denomina cilindros. Las pistas se subdividen en sectores que constituyen la mínima unidad de información que se puede escribir en un disco.

Para identificar cabeza, sector y cilindro debemos tener en cuenta que las cabezas y cilindros comienzan a numerarse a partir del cero y los sectores desde el uno. Es decir que el primer sector de un disco duro será el correspondiente a la cabeza 0, cilindro 0 y sector 1.

Sin embargo, Linux (Y los otros sistemas operativos) no trabajan con divisiones físicas, sino que utilizan divisiones basadas en software conocidas como particiones. En la práctica las particiones funcionan como si fueran unidades de almacenamiento separadas.

Dentro de cada partición el contenido se organiza en estructuras jerárquicas conocidas como directorios. Mientras que las particiones tienen tamaño fijo y ocupan cilindros contiguos, los directorios pueden cambiarlo y estar desperdigados por cualquier lugar de la partición. Dentro de una misma unidad de discos puede existir un sistema de archivos por cada partición el cuál será obligatorio para el contenido dentro de cada una de ellas.

Diferencias entre GPT y MBR

Para poder escribir o leer un dato específico, la unidad debe tener al menos una partición y un lugar donde encontrar la información sobre todas las particiones disponibles, dónde comienzan y terminan y cuál de ellas es la que inicia el sistema operativo al encender el ordenador.

Existen dos formas de almacenar esa información: Master Boot Record (MBR) y GUID Partition Table (GPT)

MBR es el método más antiguo. Consiste en un sector de arranque especial ubicado al principio de una unidad. Además de la información sobre las particiones de la unidad contiene el gestor de arranque que, en caso de tener instalado más de un sistema operativo, elegir con cuál iniciar.

MBR solo puede trabajar con unidades de hasta 2 TB y cuatro particiones primarias o tres primarias y una extendida que puede a su vez subdividirse en particiones lógicas.

Con GPT, a cada partición se le asigna un «identificador único global». GPT no tiene las limitaciones de capacidad de la unidad o cantidad de particiones de MBR, en todo caso las limitaciones que existan será las que imponga el sistema operativo.

Otra ventaja de GPT es que a diferencia de MBR, que almacenaba los datos de particionado y arranque al principio de la unidad, los guarda en múltiples copias a lo largo de todo el disco. Además, detecta problemas de integridad de los datos consultando los valores de comprobación de redundancia cíclica. En caso de encontrar daños intenta recuperarlos desde otra ubicación del disco.

Problemas comunes y cómo solucionarlos en Linux

En general podemos encontrarnos con 4 tipos de problemas:

  • Eliminación de datos claves: Esto puede pasar por un error del usuario que borra lo que no debe borrar o por bugs en el software utilizado.
  • Acción de virus: Aunque Linux tiene un sistema de permisos que lo hace menos vulnerable que otros sistemas operativos, ningún mecanismo de seguridad puede sobrevivir a la incompetencia de un usuario. Basta con visitar algún sitio web comprometido para que el software malicioso acceda a cualquiera de las unidades conectadas y alteren los datos.
  • Sectores defectuosos en el disco duro: En este caso puede ser por fallas en la fabricación o daños físicos producidos durante la manipulación.

Algunas formas en las que podemos detectar problemas en la unidad antes de que sea tarde son:

El comando dd

Con este comando podemos medir la velocidad de escritura. Para esto abrimos la terminal y escribimos:

dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync

Es posible medir la latencia con el comando:

dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync

El comando fsck

El comando fdisk -l muestra las particiones de todas las unidades con su identificador.

Para ejecutar los comandos debemos indicar el identificador de la unidad y de la partición sobre la que necesitamos trabajar.

Este comando lanza una utilidad que permite escanear la base de datos de archivos buscando y tratando de reparar errores. Además, genera un informe de los resultados. En caso de que el sistema se apague de forma inesperada, fsck se ejecuta automáticamente.

Para utilizar este comando debemos identificar la partición que queremos analizar. Lo hacemos con el comando:

sudo fdisk -l

Una vez que identificamos la partición buscada, debemos tomar nota de su identificador. Este toma la forma /dev/sdx* donde x es una letra comenzando con la a para la primera unidad y * un numero comenzando con el 1 para la primera partición.
Para hacer la comprobación primero desmontamos la partición con el comando
umount /dev/sdX*
y luego lanzamos el comando con:
fsck /dev/sdX*

Si queremos hacer el chequeo en una unidad completa escribimos los mismos comandos, pero sin indicar número de partición.

Para poder escanear la partición actual deberás hacerlo desde un medio de instalación o desde el modo de rescate del gestor de arranque.

El comando badlocks

Este comando encuentra sectores defectuosos y guarda la información en un archivo de texto.

La instrucción es la siguiente:

sudo badblocks -v /dev/sdX*> ~/sectores_dañados.txt

El comando e2fsck

Este es un comando de detección y corrección de errores específico para los sistemas de archivos Ext. La sintaxis es:

sudo e2fsck -cfpv /dev/sdX*

La instrucción cfpv indica:

  • c que el programa debe buscar los bloques defectuosos y añadirlos a una lista.
  • f que también debe hacerse una comprobación del sistema de archivos.
  • p que debe intentarse reparar los bloques defectuosos.
  • v que debe mostrarse en la terminar los resultados del procedimiento.

e2fsck y badlocks pueden combinarse haciendo que el primero lea la lista de errores detectados por el segundo.

sudo e2fsck -l sectores_dañados.txt /dev/sdX*

El comando Testdisk

Dentro de las particiones la información se almacena en directorios jerárquicos.

La aplicación TestDisk intenta recuperar los archivos y particiones borradas. Trabaja tanto con Linux como con Windows aunque no siempre los resultados son óptimos

TestDisk es una herramienta de recuperación de datos borrados en forma voluntaria, accidental o maliciosa.  El resultado no siempre es perfecto y los archivos no recuperarán los nombres originales por lo que debemos revisar uno por uno para encontrar lo que buscamos.

Antes de empezar a usarla debemos instalarla utilizando el gestor de paquetes de nuestra distribución. Una vez instalado lanzamos el programa con el comando

testdisk

Cuando reahcemos esto veremos tres opciones:

  1. Crear un archivo de registro
  2. Añadir información adicional a la recopilada en sesiones anteriores.
  3. No registrar la información.

A continuación, seleccionamos la unidad que queremos analizar con el cursor para luego desplazarnos a la instrucción de proceder y presionamos Enter. En las siguientes pantallas indicamos el tipo de tabla de particiones y el modo de recuperación. Por último, elegimos la partición.

Para completar vamos al directorio donde estaba el archivo borrado, lo marcamos, presionamos C para iniciar la recuperación y luego el lugar donde se guardará.

Muchos de estos comandos pueden utilizarse con una interfaz gráfica. Por ejemplo, en GNOME tenemos la aplicación Gparted que se encuentra en los repositorios y como una distribución Linux que puede utilizarse en modo Live. El escritorio KDE también cuenta con su propia herramienta de edición de particiones.

Por otra parte, existen algunas soluciones de recuperación de pago. Sin embargo, ninguna garantiza resultados perfectos por lo que lo mejor es tener múltiples copias de los archivos importantes tanto en local como en la nube.

from Linux Adictos https://ift.tt/MDQmvI5
via IFTTT