Acerca de...
El equipo
Encuestas
Política de privacidad
WinTablets

Encuesta

¿Cual crees que triunfará?

Ver Resultados

Cargando ... Cargando ...

últimas entradas importantes

Categorías

Archivos

01
Dic 2011
DesarrolloHardware

Windows 8 y los discos duros grandes

Windows 8 va a soportar discos duros grandes de forma nativa. Me refiero a futuros discos duros grandes, del orden de 10 ó 15 terabytes, que según los pronósticos podrían aparecer allá por el 2015. Y Windows 8 quiere estar preparado para ello.

Antes de entrar en detalles sobre el tema, se exige una pequeña explicación sobre cómo funcionan los discos duros.

Quizás seas demasiado joven para entender la expresión C/H/S. Si es así, no te lo pierdas porque la cosa tiene su miga, y de paso aprenderás cómo los hombres de pelo en pecho se las agenciaban para hacer cosas que en un principio parecían imposibles.

C viene de Cylinders, cilindros. H de Heads (Cabezas), y S de Sectors o sectores en castellano. Y esa era la forma que teníamos de decirle a la BIOS que teníamos un disco duro. Ve a la cocina de tu casa, coge cuatro platos de la vajilla y ponlos uno encima del otro. Ahora imagina que los unes por un eje central y los pones a girar todos a la vez. Pon el dedo en cualquier parte de la superficie del de arriba. El círculo que trazas es un cilindro, ya que se transmite hacia abajo para todos los platos. ¿Cuántos platos has puesto? Si han sido cuatro, suponte que cada cara de cada uno es la superficie magnética de tu disco duro. Tienes 8 cabezas. Y finalmente toma un cilindro y divídelo en sectores o en trocitos iguales.

¿Lo ves? Esa es la geometría real de un disco duro, al menos en los tiempos del MS-DOS.

Pues bien, cada modelo de disco tenía sus tres valores, que debías preguntar o mirar en la pegatina (cuando la traían, claro). Y si los ponías mal lo menos malo que podía pasarte era que te reconociera un disco de menor tamaño, aunque en general simplemente el disco no arrancaba.

Eso tenía serias limitaciones, ya que realmente estabas especificando la geometría real del disco, con lo que si bien sí que podías tener 65535 sectores, no podías hacer lo mismo con las cabezas porque tenías las que tenías y punto.

Pronto se llegó al límite físico de aquello, y entonces se implementaron los C/H/S lógicos. Es decir, tu indicabas una geometría que luego el firmware del disco traducía a lo real. Pero tampoco podías poner lo que quisieras, sino tan solo valores aceptados. El doble de cabezas, que luego se traducían en más sectores o cilindros, como si el disco duro tuviera dos cabezas por plato y cada una de ellas llegara solamente a una parte del mismo. Y así.

Era bastante complicado, y muchas veces tu, con paciencia y muchos reinicios podías sacarle algunos bytes más a tu disco cambiando esos valores, o incluso hacer que funcionara más rápido al combinar la geometría virtual con la división en particiones y demás.

Era cuando los desfragmentadores de disco servían para algo, y cuando uno, si formateaba a bajo nivel cambiando el interleave, podía sacarle algo más de rendimiento a su disco, y de paso envejecerlo un poco más deprisa.

Para los curiosos, el interleave de un disco es cada cuántos sectores se escribe dado que, una vez detenida y estabilizada la cabeza sobre un cilindro, y dada la velocidad de rotación del disco, junto a la velocidad de transmisión de los datos, no siempre es posible escribir de continuo y hay que ir saltando sectores.

Todo un arte, vamos, que fue mejorado cuando se añadió la opción de que el disco duro le dijera a la BIOS cuáles eran sus valores, cosa que no siempre funcionaba y a veces había otros mucho mejores.

***

Cuando el tema llegó a niveles insospechados de complejidad, los fabricantes se reunieron y decidieron cambiar el tema y no repetir el mismo error que con la memoria (ya sabéis, los famosos 640KB que Bill Gates no dijo que eran suficientes).

Ahora los discos se acceden mediante un número lógico, sin tantas zarandajas ni complicaciones. Cuando uno instala un disco duro, la BIOS te lo reconoce de forma automática.

¿Por qué? Muy sencillo: el disco te dice el número de sectores y su tamaño. Lo habitual es que el tamaño sea de 512 bytes, y el número de sectores indica el tamaño del disco.

A esto se lo conoce como LBA (logical block address, o dirección de bloques lógicos), y lo que haya debajo y dentro del disco, es cosa del Firmware del mismo, que ahora es una cosa compleja y que a veces, como nos demostró Seagate no hace mucho, puede estropear tu disco si hay algún error de implementación.

Este valor es un número de 32 bits, por lo que el tamaño máximo de un disco con sectores de 512 bytes es de 2.2 Terabytes. Haz el cálculo si quieres.

Y es entonces cuando todo el tema de desfragmentación y formateo de bajo nivel pierde su sentido. El formateo a bajo nivel ya no existe. Cuando usas una utilidad que te dice que hace eso, realmente el disco duro está pasando de ti y está realizando uno normal y corriente, dándole al programa lo que quiere.

El caso de los desfragmentadores es algo diferente, pese a lo mucho que digan sus fabricantes. Ahora nadie sabe (es un decir) lo que hay debajo del LBA. Ni los cilindros, ni los sectores ni las cabezas. De hecho puede que ya no se hagan así, y de hecho lo habitual ahora son discos con uno o dos platos y hasta cuatro cabezas. Por lo tanto, el que un desfragmentador te ponga los sectores lógicos (los LBA) uno al lado del otro no te garantiza que esa disposición sea la más óptima en cuanto al disco en sí, porque ni siquiera se sabe si un mismo LBA está siempre en una misma parte del disco.

***

¿Qué pasa con las BIOS actuales? Pues que sólo tienen sitio para números LBA de 32 bits, y en las particiones pasa lo mismo, por lo que el tamaño máximo de una partición de arranque son esos 2.2TB.

Pues bien, Windows 8 cambia eso. Pero necesitamos una BIOS UEFI y particiones de tipo GPT en lugar de MBR. Por cierto, es el tipo de BIOS y particionado que llevan usando los MAC desde hace mucho tiempo.

Si tenemos un equipo con UEFI, podremos ponerle discos de más de 2.2TB en una sola partición sin problemas. Es otro motivo más para comprar placas bases que ya lleven este sistema, y recordemos que aquello de lo que hablamos sobre arranques firmados y cifrados es algo voluntario del implementador, no de Microsoft. Por si se nos había olvidado.

Windows 8 no va a implementar los sistemas con truco actuales para permitir instalar un disco de mayor tamaño, no porque son una chapuza y como tal, tendente a los errores y a las pérdidas de datos. Por una vez Microsoft está haciendo las cosas bien y dejando de lado el soporte para elementos heredados que siempre terminan dando problemas que se achacan, indebidamente, a la compañía.

***

Todavía no hemos hablado cómo implementar discos de más del tamaño citado. Es muy sencillo: los sectores del LBA serán de 4KB en lugar de 512 bytes. Es decir, multiplicamos la capacidad máxima por ocho, hasta casi los 18 TB. Es decir, cuando la BIOS UEFI le pregunte al disco de quién es, éste responderá que tiene X sectores LBA de 4KB. Es algo en lo que se han puesto de acuerdo todos los fabricantes.

Pero ahora surge un pequeño problema: los sistemas de partición y disco actuales suponen 512 bytes en lugar de 4KB, y si se cambia todo eso la mayoría de programas dejarán de funcionar, por lo que para el nivel de las particiones, se seguirán especifiando sectores de 512 bytes.

Y es aquí donde está el truco del almendruco. Con GPT podemos indicar valores de barrera para las particiones mayores de 32 bits, con lo cual podremos tener particiones de más de los 2.2TB citados. Y luego, el sistema operativo hará esa traducción lógica a los 4KB físicos reales del disco.

Es algo similar a la virtualización de la memoria, pero para el disco.

Finalmente surge un pequeño problema de rendimiento: para escribir un sector completo de 512 bytes, el nuevo sistema tendrá que leer 4KB del disco, cambiar el sector adecuado y volver a escribir los 4KB leídos.

Generalmente al programador medio eso no le importa mucho, ya que no suele preocuparse de esas cosas, aunque a veces debería hacerlo, ya que es mucho más óptimo escribir a disco en bloques con módulo de 512 bytes. Por lo tanto Windows 8 va a implementar nuevas APIs (interfaces de programación) para que se le puedan preguntar al sistema esas cosas de forma sencilla (cosa que de hecho ya se puede hacer, pero no hay un API claro ni documentado para ello).

Por lo tanto, Windows 8 va a implementar:

  • Un API sencillo para que el programador pueda preguntar al sistema todo esto.
  • Modificar el sistema NTFS para que pueda trabajar (y optimizar) la nueva forma.
  • Modificar el formato del fichero VHDx de simulación de disco para virtualización.
  • Modificar el código de arranque de Windows para que entienda los discos con sectores físicos de 4KB.

Esta entrada está basada en esta, publicada hace unos días en un blog de Microsoft y, cómo no, en la propia experiencia de abuelo Cebolleta del autor.

Por RFOG | 13 Comentarios
contacto@wintablet.info tema WinTablet.info por Ángel García (Hal9000)