Dar formato

Se denomina formatear al proceso de escribir marcas en el medio magnético que se utilizan para delimitar pistas y sectores. Antes de formatear un disco, su superficie magnética es un completo desorden de señales magnéticas. Cuando se le da formato, se trae un cierto orden al caos básicamente dibujando líneas en los lugares donde van las pistas, y donde son divididas para formar sectores. En una descripción en detalle no sería exactamente así, pero esto es irrelevante. Lo importante aquí es que un disco no puede utilizarse a menos que haya sido formateado.

La terminología aquí se vuelve un poco confusa: en MS-DOS y MS Windows, la palabra formatear se utiliza para cubrir el proceso de creación de un sistema de archivos (que discutiremos más abajo). Allí, los dos procesos se combinan, especialmente en los discos flexibles. Cuando se necesita realizar la distinción, el formateo real se denomina formateo de bajo nivel, mientras que construir el sistema de archivos se llama formateo de alto nivel. En los círculos UNIX, los dos se llaman formatear y crear un sistema de archivos, y así será como también lo usemos en este libro.

Para los discos IDE y algunos SCSI el formateo se realiza en la fábrica y no necesita repetirse; así que la mayoría de la gente no deberá preocuparse por él. De hecho, formatear un disco duro puede hacer que funcione peor, por ejemplo porque necesite ser formateado de una forma especial para que funcione la sustitución automática de sectores defectuosos.

Discos que necesitan o pueden ser formateados usualmente requieren un programa especial, ya que, debido a que la interfase para realizar un formateo logico de un disco difiere de un disco a otro. El programa para formatear el disco está usualmente en la controladora de la BIOS o es suministrado por un programa MS-DOS. Ninguno de ellos puede ser usado facilmente dentro de Linux.

Durante el formateo uno puede encontrarse puntos defectuosos en el disco, llamados bloques malos o sectores defectuosos. Algunas veces estos son manejados por el propio disco, pero incluso entonces, si aparecen más de ellos, debe hacerse algo para evitar utilizar esas partes del disco. Lo lógico para hacer esto se encuentra dentro del propio sistema de archivos; cómo añadir la información al sistema de archivos se describe más abajo. De forma alternativa. uno puede crear una partición pequeña que cubra exactamente la parte mala del disco; esta opción puede ser una buena idea si la parte mala es muy grande, ya que los sistemas de archivos tienen problemas con zonas defectuosas muy grandes.

Los discos flexibles se formatean con fdformat. El archivo de dispositivo de disquete se proporciona como parámetro. Por ejemplo, el comando siguiente formatea un disquete de 3.5 pulgadas y alta densidad en ubicado en la primera unidad lectora-escritora de discos flexibles:

$ fdformat /dev/fd0H1440
Double-sided, 80 tracks, 18 sec/track. Total capacity 
1440 kB.
Formatting ... done
Verifying ... done
$

Tenga en cuenta que si desea utilizar el dispositivo auto-detectable (es decir, /dev/fd0), debe primero configurar los parámetros del dispositivo con setfdprm. Para lograr el mismo efecto que antes, debería hacer los siguiente:

$ setfdprm /dev/fd0 1440/1440
$ fdformat /dev/fd0
Double-sided, 80 tracks, 18 sec/track. Total capacity 
1440 kB.
Formatting ... done
Verifying ... done
$

Generalmente es más conveniente elegir el archivo de dispositivo que mejor se adapte al tipo del disquete. Tenga en cuenta que es desaconsejable formatear disquetes para contener más información que aquella para la que ha sido diseñado.

fdformat también comprobará el disquete, es decir, buscará sectores defectuosos. Intentará recuperar un sector defectuoso varias veces (normalmente se puede oír esto, el ruido del disco cambia drásticamente). Si el disco está solamente defectuoso temporalmente (debido a polvo en la cabeza de lectura/escritura, algunos errores son falsas alarmas), fdformat no lo indicará, pero un error real abortará el proceso de comprobación. El núcleo imprimirá mensajes por cada error de entrada/salida que encuentre; estos irán a parar a la consola, o si se usa syslog, al archivo /usr/log/messages. fdformat por sí mismo no indicará dónde está el error (tampoco importa mucho, los disquetes son lo suficientemente baratos como para desechar uno defectuoso).

$ fdformat /dev/fd0H1440
Double-sided, 80 tracks, 18 sec/track. Total capacity 
1440 kB.
Formatting ... done
Verifying ... read: Unknown error
$

El comando badblocks puede utilizarse para buscar bloques defectuosos en cualquier disco o partición (incluidos los disquetes). No formatea el disco, así que puede utilizarse incluso con sistemas de archivos existentes. El ejemplo siguiente comprueba un disquete de 3,5 pulgadas con dos sectores malos.

$ badblocks /dev/fd0H1440 1440
718
719
$

La salida de badblocks es el número de los bloques malos que encuentra. La mayoría de sistemas de archivos pueden evitar estos bloques. Mantienen una lista de sectores defectuosos conocidos, que se inicia cuando se crea el sistema de archivos, y se puede modificar más adelante. La búsqueda inicial de bloques malos puede hacerse a través del comando mkfs(que inicia el sistema del archivos), pero más adelante las comprobaciones deben realizarse con badblocks y los nuevos bloques deben añadirse con fsck. Describiremos mkfs y fsck más adelante.

Muchos discos modernos automáticamente detectan bloques malos, e intentan arreglarlos utilizando en su lugar un bloque especial reservado en buen estado. Esto es transparente al sistema operativo. Esta característica debe estar documentada en el manual del disco, si es lo bastante curioso para mirar si aparece. Incluso estos discos pueden fallar, si el número de sectores defectuosos crece demasiado, aunque existen posibilidades de que por entonces el disco esté tan estropeado que no pueda utilizarse.