miércoles, 15 de febrero de 2012

Linux: Crear particions marcant els sectors dolents

Val a dir que encara no he provat cap d'aquestes opcions. És útil quan tenim un disc dur que té alguns sectors defectusos de manera que marcant-los evitem que el sistema els llegeixi i que es perdi el conseqüent temps. Aprofito per afegir que aquest blog no es cap blog per penjar-se medalles ni fer tutorials ni res sino que és una guia per a mi, de comandes i sol·lucions davant diversos problemes determinats. Generalment quan creo alguna entrada en cito la font d'on ho he tret.  Aquesta vegada no serà excepció: 

http://www.gultgu.org/node/152



En este tutorial encontrara la información para realizar mantenimiento a sistemas de ficheros ext2, ext3 y ext4. Ademas de marcar (para que no sean utilizados) esos molestos sectores defectuosos que ponen en riesgo la integridad de los datos.
Es muy importante darle mantenimiento periodico a los sistemas de ficheros ( FS ),
para prevenir perdidas de información.

Las herramientas que utilizaremos en este tutorial son:
 -badblocks
-mke2fs
-e2fsck


Antes de iniciar con la parte técnica es importante entender lo siguiente:
Sector físico: Imaginemos un sector físico como un cuadrito de una hoja de papel cuadriculado. Normalmente un sector físico tiene un tamaño de 512 bytes.
Sector lógico: Es un grupo de sectores físicos, también conocido como bloques o cluster. Con un lápiz podríamos crear un bloque de 2 cuadritos en nuestra hoja, ese bloque seria de 1024 bytes que es igual a 1Kbytes.
badblocks: Como su nombre lo indica, sirve para listar sectores lógicos defectuosos (bloques)
si no se especifica el tamaño de bloque ( opcion -b ) generara bloques de 1k.
mke2fs: Crea FS del tipo; ext2, ext3, ext4.
e2fsck: Es el que repara los FS ext[2, 3, 4].
Ahora planteo unos casos para ilustrar el tutorial:
CASO 1
Si tenemos un disco duro de años, es posibles que tenga sectores defectuosos, asi que es recomendable marcar los sectores defectuosos para que el FS no los utilice. podemos crear particiones con fdisk. Supongamos que creamos una sola particion llamada hdb1. ( En alguna partición de hda esta nuestro SO, que resulta idenfirente ).
Crear FS y marcar sectores lógicos malos:
#mke2fs -t ext4 -c /dev/hdb1

-La opción " -t " es para decir que sistema de fichero usaremos, podría ser ext2 o ext3.
-mke2fs crea bloques de 4k si no se le dice lo contrario. ( opción " -b " )
-La opción " -c " es para marcar bloques malos usando badblocks.
-Listo tenemos una partición con ext4 y con los bloques malos marcados ( no se usaran ).
 
CASO 2
A pasado el tiempo y nuestra partición del ejemplo anterior necesita mantenimiento:
#e2fsck -p -c -k /dev/hdb1
-La opción " -p ", intentara repara automáticamente ( si no me equivo es la opción que se usa al inicio en mantenimiento programado )
- Opción " -c " en combinación con la opción " -k ", agrega nuevos bloques defectuosos a la lista ( y asi no se escanea nuevamente los ya dañados )
*Si no se formateo con la opción " -c " ( ver caso 1 ) simplemente: ( sin " -k " ya que no hay una lista previa de bloques malos )
#e2fsck -c /dev/hdb1.
 
CASO 3
Supongamos que hdb1 sera formateado constantemente por alguna razon. Para no estar analizando los sectores defectuosos cada vez que se desee formatear, se puede crear una lista de sectores defectuosos:
#badblocks /dev/hdb1 -o bloques_dañados
Marcar al formatear usando la lista generada por badblocks:
#mke2fs -t ext4 -l bloques_dañados /dev/hdb1
y si no se marca al formatear también se puede después de formatear:
#e2fsck -l bloques_dañados /dev/hdab1.
 
Notas Importantes:
1)elegí hdb1 para mostrar que por seguridad, no debe de estar montada la partición a la que le daremos mantenimiento.
2) En general le podemos dar mantenimiento a cualquier partición siempre y cuando no este montada.
3)En el caso 3 es muy importante que el tamaño de bloque que genera badblocks coincida con el tamaño de bloque generado por mke2fs y e2fsck. Es decir que si planea usar o usa un sistema de ficheros con tamaño de bloque de 2k
tendría que especificarlo en el comando badblocks: #badblocks -b 2048 /dev/hdb1 -o bloques_dañados
De no ser asi se cometera un error lógico.
4) K = 1000, entonces 2K = 2000?
si pero en este caso hay que recordar que un sector fisico es igual 512 bytes,
2K es igual a 4 sectors físicos. O sea que cada bloque tendra 4 sectores fisicos.
5) Agregar opción -v en los comandos anteriores para que muestren mas información.

No hay comentarios: