Formato a bajo nivel en GNU/Linux

viernes, febrero 22, 2008

Esta es una pregunta que estuve haciéndome por un buen tiempo. "¿Cómo puedo formatear a bajo nivel en GNU/Linux?". Bueno, la respuesta es muy sencilla... NO SE PUEDE

Voy a explicar por qué no se puede. Los primeros discos duros usaban un mecanismo impreciso para el movimiento de los cabezales basado en tecnología de motores de paso. Este mecanismo movía el motor un número determinado de pasos y la pista correcta "debería" aparecer bajo el cabezal. No obstante, si el disco era usado en posición vertical, la gravedad podía mover el cabezal haciendo que se desalineara ligeramente e impidiendo la localización de la pista deseada. La expansión térmica también podía hacer que la pista se moviera relativamente de la posición donde el cabezal esperaba encontrarla, resultando en un error de lectura.

Los daños en la superficie de los discos y en los materiales de almacenamiento magnéticos (con una baja resistencia a la desmagnetización) fueron problemas muy comunes que impedían la lectura de la data y ocasionaban muchos dolores de cabeza.

El formato a bajo nivel era usado entonces para establecer el patron MFM del disco, redefinir la geometría física (ubicando las pistas en las nuevas posiciones donde el motor de paso movía el cabezal) y mapeando los sectores defectuosos. Este último proceso se lograba estableciendo nuevos límites para el disco, permitiéndole al dispositivo funcionar nuevamente "como nuevo" pero con una considerable pérdida de espacio.

Esas son las razones por las cuales el término Formato a Bajo Nivel (o LLF - Low Level Formatting en inglés) se hizo tan popular en los 80 y continua siendo usado en la actualidad de una forma incorrecta.

Los nuevos discos duros están diseñados de una forma más precisa; usan estructuras internas complejas y mapean los sectores defectuosos de manera transparente y automática. Esta complejidad hace que los discos solo sean formateados a bajo nivel en la fábrica por el resto de su vida útil. No existe manera de hacer un formato a bajo nivel en un disco duro IDE/ATA/SATA/SCSI moderno (al menos no sin destruirlo...) y tampoco existe razón para intentarlo.

Existe una manera para redefinir la geometría lógica del disco y es haciendo particiones. Pero debe tenerse en cuenta que geometría lógica es una cosa completamente diferente de geometría física

Actualmente es común oír sobre formato a bajo nivel cuando la gente tiene problemas serios con el disco duro, bien sea por un virus en el sector de booteo, o porque el dispositivo a empezado a descubrir un montón de sectores dañados o incluso porque desean intentar recuperar ese viejo disco duro con "aparentes" daños en la superficie.

Después de investigar y leer mucho me dí cuenta que es imposible hacer un formato a bajo nivel en un disco nuevo. Lo que se necesita hacer es una Reinicialización a la Configuración de Fábrica o Formato a Nivel Medio. La reinicialización incluye identificar (y mapear si es posible) cualquier sector que no pueda ser escrito y leído correctamente, así como también el llenado de todas las localidades direccionables del disco con cero bytes (conocido también como Zero-Filling o Zero-Byte Filling). Cuando reinicializas un disco duro, basicamente usas una utilidad que sobreescribe todo el disco con ceros. Cada localidad del disco es limpiada.

Para reinicializar un disco cada fabricante debería proporcionar una aplicación especial desarrollada para tal fin. Sin embargo estas aplicaciones la mayoría de las veces solo funcionan sobre Windows o MS-DOS.

Afortunadamente eso no es limitante para nosotros, pues podemos hacer la reinicialización en GNU/Linux boteando desde un diskette de inicio (pruebe el Tom's Root/Boot en http://www.toms.net/rb) y ejecutando:

Para un floppy:
dd if=/dev/zero of=/dev/fda
Para un disco IDE:
dd if=/dev/zero of=/dev/hda
Para un disco SCSI o USB:
dd if=/dev/zero of=/dev/sda

Al terminar el proceso el dispositivo no tendrá particiones, necesitamos definir nuestra geometría lógica y formatear las nuevas particiones. Eso podemos lograrlo con:

mke2fs -j /dev/hda3

Con estos dos comandos tendremos nuestro disco como salido de la fábrica ;)

19 comentarios:

Unknown dijo...

Excelente explicacion de lo que es o era un formateo a bajo nivel.
gracias por el aporte a Linuz que era lo que buscaba desde hace días.

Unknown dijo...

Upss, estoy escribiendo desde un live de Lucid y me quedó en el comentario anterior "Linuz" en lugar de Linux.

Anónimo dijo...

vale madre no sirve

chato dijo...

JAJA pobre anonimo ha de ser un windowzero perdido en linux, gracias compa a mi si me sirvio, solo una pregunta porque le ppusiste /dev/hda3

Unknown dijo...

hola....
muchas gracias por la info, muy buena...
y tambien me gustaria saber porque le pusiste hda3??
gracias

Anónimo dijo...

excelente aclaración muy buen aporte, confio mas en la formateada linux que la del fabricante.

Anónimo dijo...

Exelente me sirvio mucho se agradese

bgreinfeld dijo...

Acabo de hacer el tonto por despistado... puse en la terminal dd if=/dev/zero of=/dev/sda y ese es mi disco con el sistema y datos... me di cuenta del error y cancele la orden en seguida y lo hice dd if=/dev/zero of=/dev/sdb que es la unidad que quería que se aplicara...

CLARO, que aunque solo fue 1 segundo ahora mi unidad sda no funciona... ¿Alguna forma de recuperar los datos que están ahí?

GRACIAS!!!!!

PD: Es de idiotas el despiste ese...

el mostro dijo...

porque le pusiste hd3?

xdiegoxlionheartx dijo...

y como le haces si es un Hard drive SATA?

Darkshadow dijo...

TRIANGLE HEAD ...

dd if=/dev/zero of=/dev/hda

seria

dd if=/dev/zero of=/dev/sda

solamente se cambia por la unidad a la cual se lo quieres aplicar, pero la unidad en si (la unidad), No sus diferentes particiones

Anónimo dijo...

gracias muy buena explicación, es la primera vez que leo sobre este asunto; lo que no me queda claro es desde que "fecha" se considera lo que llamas ..."los nuevos discos duros".

s.o.s como ayuda al amigo de "linuz", la z está junto a la x, ...se le fue el dedo ... jaja

Anónimo dijo...

Gracias por el aporte yo he formateado a bajo nivel en Windows, con Hard Disk Low Level Format Tool, y la verdad es que elimina los sectores defectuosos, pero también habrá que probar esta aplicación con los comandos. Saludos

waxfalcon dijo...

Hice esto y ahora mi Disco duro no tiene información. Eliminó todo!!!! Tendré que instalar Linux de nuevo. Perdí todo mi trabajo.

Eze dijo...

waxfalcon Sos un tremendo pelotudo jajaja...

Hagan un "fdisk -l" antes de todo y vean la denominación que tiene el disco que desean formatear, después sigan los pasos que se explica en este blog.

Abunaa dijo...

Excelente, me has librado de un problema con estos comandos....
Se te agradece el aporte.
...............................................................

Anónimo dijo...

Tal como indica comentario anterior "fdisk -l" Con este comando listas particiones. Apunta bien que particion vas a matar con "dd if of" . Si haceis edicion copiar pegar lo que dice en un blog seguro que ocurre desastre. Para aquellos que se equivocaron... Intentad rescatar tabla particiones (otro tutorial). Saludos

Anónimo dijo...

Buena explicación, muchas gracias

ELEMENTO Z dijo...

oigan amigos soy algo nuevo en esto de linux asi que me gustaria saber si pueden responder a mi pregunta es sencilla lla que la terminal no muestra algun progreso cuando lo hago como me doy cuenta cuando ya termino? mostrara alguna notificacion mensaje leyenda o algo?