¿Por qué solo hay cuatro particiones primarias en un disco MBR?

23

Estoy leyendo los documentos en CentOS.org .

En la sección 25.1.2. Particiones: Convertir una unidad en muchas , existe la siguiente declaración:

La tabla de particiones se divide en cuatro secciones o cuatro particiones primarias. Una partición primaria es una partición en un disco duro que puede contener solo una unidad lógica (o sección). Cada sección puede contener la información necesaria para definir una única partición, lo que significa que la tabla de particiones no puede definir más de cuatro particiones.

No entiendo por qué solo puede haber cuatro particiones. ¿Es así como se diseñó al principio? ¿Realmente solo puede haber 4 particiones primarias?

Jongosi
fuente

Respuestas:

36

¿Es así como se diseñó al principio? ¿Realmente solo puede haber 4 particiones primarias?

Sí, eso es exactamente La tabla de partición en la parte frontal de un disco MBR (a diferencia de un disco de estilo GPT) tiene una estructura de datos muy estricta que data de la década de 1980 cuando el espacio era algo precioso. La decisión de diseño en ese entonces era permitir solo cuatro particiones, pero permitir que una de ellas fuera una partición 'extendida' que fuera un puntero a otro punto en el disco que pudiera contener muchas más particiones 'lógicas'.

(Esta es la misma razón por la cual los discos formateados MBR tienen problemas con discos de 2 TB +. Grupos de 512 bytes de tamaño y campos de 32 bits que contienen recuentos de clúster para tamaño de partición = tamaño de disco máximo de 2 TB. Un tamaño de clúster de 4KB soluciona el problema en el futuro. )

GPT es un método actualizado para manejar particiones que no tiene estas limitaciones.

sysadmin1138
fuente
1
También es solo una restricción en los discos de tipo IDE. SCSI, por ejemplo, tiene 8, y el tercero por convención es una partición superpuesta que abarca todo el dispositivo.
MadHatter apoya a Monica el
18
@MadHatter la tabla de particiones por sí misma es independiente del tipo de almacenamiento. Parece que está describiendo Solaris Slices, que son un concepto ligeramente diferente.
the-wabbit
3
No he pensado que ese sea el caso, pero tienes toda la razón de que la mayor parte de mi experiencia de particionamiento SCSI es de Solaris. Me inclino ante tu corrección, ¡y gracias!
MadHatter apoya a Monica el
44
En realidad, las particiones extendidas llegaron mucho más tarde ; IBM PC DOS 2.0 introdujo el MBR como parte de su soporte HDD en marzo de 1983, pero no fue hasta 3.3 (abril de 1987) que las particiones extendidas estuvieron disponibles .
un CVn
En realidad, la "partición extendida" simplemente apunta a otra tabla de partición de estilo MBR, que a su vez también puede contener solo 4 entradas (cada una de las cuales podría ser una entrada de partición extendida que apunta a otra tabla de partición, que también puede contener 4 entradas ( cada uno de los cuales podría ser una partición extendida ...)) En realidad, algunos sistemas operativos solo permiten particiones extendidas en la ranura 4 y si hay una, entonces las ranuras 2 y 3 deben estar vacías, por lo que lo que termina en la práctica es lista vinculada de tablas de partición con una primaria en el espacio 1 y un enlace a la siguiente tabla en el espacio 4.
Jörg W Mittag
25

Solo hay cuatro porque las estructuras de datos para la tabla de particiones MBR solo permiten exactamente cuatro registros que describen particiones:

Puede crear tablas de particiones adicionales anidadas en definiciones de lo que se denomina una "partición extendida", pero las particiones definidas en ellas se denominan tradicionalmente particiones "lógicas". Tenga en cuenta que esta es una limitación de esta implementación específica. Otros tipos de particiones, como la tabla de particiones GUID , no comparten esta limitación.

el wabbit
fuente
3

Una partición primaria es un concepto de bajo nivel: tiene que ver con el proceso de arranque inicial de la máquina y se basa en un conjunto bien definido de especificaciones. Por lo tanto, es muy difícil cambiar el número de particiones primarias, porque muchos fabricantes de discos y placas base tendrían que aceptar implementar un nuevo estándar.

Sin embargo, en términos prácticos, este es un punto discutible: es relevante en el 'momento de arranque' para comenzar su sistema operativo en primer lugar, pero eso es todo. Existen particiones extendidas, que permiten más particiones en su disco. Sin embargo, no podrías arrancarlos.

Más fundamentalmente, la mayoría de los sistemas operativos funcionan con más abstracción de disco (administradores de volúmenes lógicos), lo que significa que la topología real en disco es en gran medida irrelevante. (Y, de hecho, a menudo no es deseable segmentar su grupo de almacenamiento)

Sobrique
fuente
1
Creo que te equivocas al no poder arrancar uno; Creo que GRUB felizmente arrancará Linux desde una partición extendida. Aparte de eso, estoy mayormente de acuerdo contigo.
MadHatter apoya a Monica el
Sin embargo, GRUB debe estar en una partición primaria: el arranque de bajo nivel inicia grub, que luego te permite elegir.
Sobrique
1
El cargador de la etapa 1 no debería estar en una partición; Debería estar en el MBR. El resto del código vive dentro de la /bootpartición, y como digo, creo que felizmente puede ser una partición extendida.
MadHatter apoya a Monica el
Lo suficientemente justo. Iré a leer y haré mi tarea. Pero supongo que aún respalda el caso de que, si bien las particiones primarias son limitadas, ese límite es en gran medida irrelevante ahora.
Sobrique
1
"... porque muchos fabricantes de discos y placas base tendrían que aceptar implementar un nuevo estándar". ¿Qué? ¿Cómo ese? Es completamente irrelevante para el disco, e incluso la placa base no debería tener que preocuparse por eso. Todo lo que necesita hacer la placa base es leer el sector 0 y ejecutar su código. Reconocer particiones es el trabajo de ese código.
glglgl
0

No estoy seguro si llego tarde a la fiesta, pero aquí va:

El tamaño de la tabla de particiones está diseñado para ser de 64 bytes y cada tabla de particiones es de 16 bytes. 16 * 4 = 64 y, por lo tanto, no hay más espacio para ninguna otra entrada en la tabla de particiones.

Para solucionar esto, la cuarta entrada tiene una disposición para una entrada de partición extendida que puede tener punteros secuenciales a otras particiones extendidas.

https://docs.microsoft.com/en-us/windows/win32/fileio/basic-and-dynamic-disks

Gurú
fuente