14 junio 2007

Respuesta a la pregunta anterior: el MBR y el tamaño de las particiones

Bien, la pregunta planteada en el post anterior no ha sido respondida correctamente, aunque no iban mal encaminados. Para resolverla debemos tener en cuenta que hablamos de arquitecturas basadas en IA-32, que es la más común la que tenemos en casa. Vamos a resolverla.

Cuando le damos al botón de encendido del PC un programa básico de inicio, almacenado en un chip EEPROM de la placa base, arranca: hablamos de la BIOS. La BIOS hace su tarea y le pasa el testigo al MBR. El MBR corresponde al primer sector del disco duro (512 bytes). Esos 512 bytes se dividen en 446 para código (no nos importa ahora para qué), 2 bytes para una firma de unidad arrancable (tampoco nos interesa) y 64 bytes para la tabla de particiones. ¡Estos si nos interesa para resolver el problema!

Esos 64 bytes para la tabla de particiones indican que hay 512 bits=2^9 para direccionar las particiones del disco duro. Estando en una arquitectura de 32 bits, ¿cuánto podemos direccionar con 512 bits? Lo tenemos a huevo:

2^32 x 2^9 = 2^41 = 2 TB

Efectivamente, el máximo tamaño direccionable de partición es de 2 TeraBytes. Esto es independiente del sistema operativo, es un problema de arquitectura.

Entonces, ¿no podemos tener particiones mayores de 2 TB? Sí. El problema que estamos tratando se refiere a que no podemos tener particiones arrancables mayores de 2 TB. Para el resto de particiones existen los volúmenes dinámicos (tanto en Windows como en el famoso LVM de Linux). A partir de particiones más pequeñas hacemos un conjunto, de tal manera que todas ellas se vean como una sola (para los muy profanos esto sería un RAID JBOD de particiones).

¿Realmente no puede haber particiones arrancables de más de 2 TB? No. Ya hemos visto que en la arquitectura IA-32 no se puede, pero otras arquitecturas están preparadas para usar gigantescas particiones arrancables. Estas se basan en EFI (un MBR mejorado) y particionado GPT. ¿Un ejemplo de arquitectura con EFI? Itanium e Itanium 2.

¿Que hay después del MBR? Cuándo este ejecuta su código cede el testigo al sistema operativo. El resto es de sobra conocido.

7 comentarios:

oriol18 dijo...

Uy, perdona por haber comentado en el post anterior: liferea no me mostraba tu nueva entrada. Volviedo al tema de los discos duros: entonces, podríamos tener una particion arrancable de 15 GB y una no arrancable de 128 PB. Y además, los Macs, (que ahora usan EFI), sí podrían arrancar desde una partición de 128 PB. Pero, ¿no hay ningún gesor de arranque que pueda evitar esta "molesta" caracteríatica? Digo molesta porque el disco duro más grande que existe hoy en día es de 1 PB.(¿Lo dijiste tú en un post anterior, verdad?)

Joaquin Arias dijo...

No sé cuál es el disco más grande, el que yo comenté es de 1 TB. Efectivamente, esto es bastante engorroso. Algunas controladoras permiten "engañar" al sistema y crear volúmenes arrancables dentro una partición gigante.

Sí, los Macs usan EFI, están fuera de la arquitectura IA-32 y han evolucionado más rápido que esta.

Un saludo.

oriol18 dijo...

Yo tengo entendido que para alcanzar más de 1 TB se suele usar RAID, o cosas parecidas, y ahora que lo pienso: ¿Lacie no tenía un HDD externo de 2 TB?

Joaquin Arias dijo...

Uy no, el RAID no sirve para eso ni mucho menos. Puedes tener RAID de 100 MB o de 10 TB, el tamaño no importa (aquí no :-) )

No sé de que disco de Lacie me hablas, nunca he visto uno externo.

Joaquin Arias dijo...

Ey, quería decir que nunca he visto uno externo tan grande, me extraña esta capacidad, sobre todo por precio :-)

anne dijo...

La gran ventaja de los sistemas raid, pasa por la redundancia manteniendo los tiempos de transferencia, por eso los niveles 0 de raid no son los mas efectivos. Pero ojo, que a veces los raid fallan y la recuperación de sus datos se puede convertir en una pesadilla. Si en un momento dado necesitais recuperar datos de varios discos duros en raid os recomiendo las siguiente web : http://www.lineared.com/es/recuperar/raid-discos-duros.htm

Joaquin Arias dijo...

Hola Anne, encantado de verte por aquí.

Efectivamente, los RAID permiten detectar y corregir errores y son fundamentales en ambientes servidores, de eso no hay duda.

Sin embargo el RAID 0 no es el más efectivo en cuanto a detección y corrección, ya que en este RAID no hay información de paridad y redundancia. Este RAID es el que permite un ancho de banda más grande, y es fundamental en streaming de video, por ejemplo.

Un saludo.