|
|
|
Autor: Ferrán García Hace unos días, mandé a la lista Casa Amiga un mensaje pidiendo ayuda y consejo sobre un disco duro que me estaba dando problemas. Para los que no lo leyeron: acababa de adquirir a buen precio un disco Seagate IDE de 2 GB usado, en el que hice dos particiones de 1 GB c/u., la segunda de ellas dedicada a Mac/Shapeshifter y sin problemas, y la primera dedicada a Amiga y con 12 sectores defectuosos. En principio no me preocupé por esos 12 sectores, no sólo porque sólo suponen 6 KB sino porque, además, QuarterBack Tools los detecta y crea un fichero en esa partición, llamado 'bad.blocks', asignándole precisamente los sectores defectuosos, con lo que impide que estén disponibles para escribir sobre ellos. Hasta aquí, todo correcto. El problema surge cuando quieres, por ejemplo, formatear o reorganizar el disco duro o, como ha sido mi caso, convertir la partición de Fast File System (FFS) a Smart File System (SFS) mediante una utilidad llamada 'FFS2AFS', que te permite hacer el cambio sin tener que vaciar el disco para formatearlo posteriormente con el nuevo sistema de ficheros. El caso es que cuando dicha utilidad llega al fichero ficticio 'bad.blocks' da un error, ya que no se puede leer. Si quito el fichero para que no entre en conflicto con esa utilidad, me quedarían sueltos en SFS los 12 sectores, con el consiguiente riesgo de escribir información sobre ellos. También es cierto que desconozco si hay utilidades para SFS que hagan algo similar a lo que hace QBTools... Pensé que una buena solución sería eliminar definitivamente los sectores malos, marcándolos como no disponibles en el RDB del disco duro, de manera que sean invisibles para el sistema operativo y poder operar con normalidad, pero, para complicar más las cosas, ni HDToolBox (AmigaOS v3.5) ni HDInst (Aminet) detectan error alguno en el disco con sus respectivas funciones de comprobación (desconozco el por qué), a pesar de que QBTools sí lo hace. El caso es que recordé que el HDToolBox del AmigaOS v3.1, que tampoco detecta error alguno, te permite introducir manualmente sectores defectuosos. El problema es que la única información de que dispongo son los números de sector/bloque defectuoso que me da QBTools, y HDToolBox te pide nº. de cilindro, de cabeza (head) y de sector. ¿Cómo pasar de uno a otro? Si se comprueba la configuración del disco en HDToolBox, se obtendrá el nº. de cilindros del disco, cabezas o pistas por cilindro (H), bloques o sectores por pista (S) y bloques por cilindro (C), resultado de multiplicar H por S. Son estas tres últimas cifras las que vamos a utilizar: H, S y C. Después, hay que tener en cuenta que los números que da QBTools son relativos a la unidad lógica y empiezan desde cero, mientras que la partición real raramente empieza desde cero: si es la primera partición, suele tener delante dos cilindros reservados para contener el RDB y el sistema de archivos, y si no es la primera hay que tener en cuenta el total de cilindros de particiones precedentes más los dos del RDB. Las únicas excepciones son los discos que se montan con fichero de montaje (normalmente, en 'devs:dosdrivers' o en 'sys:storage/dosdrivers'), que facilitan la información necesaria y hacen el RDB prescindible. Para obtener el nº. de cilindro, cabeza y sector correspondiente a partir del número de bloque (B) que da QBTools: -Se suma a B el resultado de multiplicar el cilindro inicial (I) de la partición por el número de bloques por cilindro, es decir: B + ( I * C ) - El resultado se divide por el nº. de bloques por cilindro (C). La parte entera del resultado es el NÚMERO DE CILINDRO donde se encuentra el bloque B. - Se resta la parte entera y se multiplica el resto, la parte fraccionaria, por el nº. de pistas por cilindro del disco (H). La parte entera del resultado es el NÚMERO DE PISTA (head) donde se encuentra el bloque B. - Se resta la parte entera y se multiplica el resto, la parte fraccionaria, por el nº. de sectores por pista del disco (S). Dependiendo de la precisión de la calculadora o programa utilizado, habrá que redondear el resultado (será del tipo x.99999999). El resultado es el NÚMERO DE SECTOR que corresponde al bloque B. Y así tenemos los tres números necesarios para introducir el bloque defectuoso en HDToolBox Se verá más claro con un ejemplo: - Partimos de un disco (el mío ;-) de 4092 cilindros, 16 cabezas o pistas por cilindro (H), 63 bloques o sectores por pista (S) y 1008 bloques por cilindro (C). La partición con errores empieza en el cilindro 2 (el 0 y el 1 están reservados para el RDB). - El primer error que me facilita QBTools es el bloque 722. Así que:
- Dividimos por C
La parte entera, 2, es el NÚMERO DE CILINDRO. - Restamos la parte entera y multiplicamos el resto por H:
La parte entera, 11, es el NÚMERO DE PISTA (head). - Restamos la parte entera y multiplicamos por S:
Este el el NÚMERO DE SECTOR. Así, el bloque 722 de QBTools equivale al cilindro 2, pista (head) 11, sector 29. Se repite la operación para el resto de bloques defectuosos, se introducen estos datos en la sección "Modify Bad Block List" del HDToolBox del AOS v3.1, se guardan los cambios y los errores desaparecen: se puede operar con el disco con toda normalidad, como si ya no tuviese errores. Se podrá formatear o reorganizar sin problemas, y QBTools ya no dará más errores. |