¿Qué significa "alinear" particiones?

Respuestas:

15

Alinear la partición significa alinearla para que coincida con la estructura de bloques subyacente verdadera.

Durante mucho tiempo, los discos duros han utilizado bloques de 512 bytes. Debido a que esto ha continuado durante mucho tiempo, ahora es casi imposible cambiar el tamaño del bloque. Sería necesario reparar demasiado software.

En una SSD, el tamaño real del bloque podría ser de 128 KB. En una matriz RAID, puede ser de 64 KB. En una unidad de formato avanzado será de 4 KB.

Por compatibilidad con versiones anteriores, la unidad continúa funcionando con bloques de 512 bytes. Pero por razones de rendimiento, su sistema realmente debería conocer el verdadero tamaño del bloque.

Uno de los ajustes de rendimiento más fáciles de hacer es alinear la partición de la unidad con el tamaño de bloque verdadero para que cuando su sistema operativo escriba 4 KB o 64 KB o 128 KB escriba un bloque completo.

Si la partición no estaba alineada, el resultado sería escribir 512 bytes en el primer bloque y 4K - 512 bytes en el segundo bloque, forzando al disco / SSD / RAID a hacer dos ciclos de lectura-modificación-escritura en lugar de una sola escritura.

Zan Lynx
fuente
¿Tiene alguna sugerencia en unix.stackexchange.com/questions/248939/…
ART
@AnkurTank: No, la pregunta allí parece estar bien cubierta.
Zan Lynx
Gracias por su atención, lo único que queda es cómo confirmar que las particiones están alineadas. Porque para mí separado todavía se queja de que las particiones no están alineadas. Además, intenté usar otra herramienta, por ejemplo, gdisk, pero no puedo cruzar la compilación de gdisk. Así que pensé que si tienes alguna sugerencia sobre cómo verificar eso, será útil.
ART
3

Las particiones son secuencias de bloques , y por convención de larga data un bloque tiene 512 bytes.

Por lo tanto, una partición puede comenzar en cualquier múltiplo de 512 bytes dentro de un disco, "visto" como una cadena muy larga de bytes.

Sin embargo, el hardware de disco subyacente, que originalmente tenía el mismo tamaño de sector de 512 bytes, ahora usa un tamaño más grande para mayor eficiencia. Digamos que son 4096 bytes.

Por razones de compatibilidad, el firmware que se encuentra entre el sistema operativo y el hardware todavía "habla en sectores". Entonces le preguntas al primer sector, y el hardware recupera el primer bloque (4096 bytes), y el firmware extrae y entrega el segmento apropiado. Pide el segundo bloque y el bloque probablemente se recupera del caché.

Hasta ahora, el desajuste del tamaño del sector no tiene inconvenientes.

Pero el sistema operativo también emplea bloques (generalmente llamados clústeres ) para mayor eficiencia, y los alineará con la partición. Por lo tanto, un grupo de 4 sectores estará compuesto por los sectores 5, 6, 7 y 8.

Cuando el sistema operativo solicita el clúster del sistema de archivos n . ° 2, al firmware se le solicitan los sectores lógicos 5, 6, 7 y 8. Si todos están en el mismo bloque de disco , entonces el disco debe realizar UNA lectura.

Pero si la partición comienza en el sector "incorrecto", el primer clúster en el sistema de archivos, por ejemplo, terminará, simplificándose, en los sectores 2, 3, 4 y 5. Y podrían estar a la mitad en el primer bloque de disco (1 -2-3-4), la mitad en el segundo (5-6-7-8).

Ahora se necesita una lectura adicional . Para relaciones de sistema operativo a disco de 1: 1, esto es lo mismo que duplicar las lecturas. Si la relación del sistema operativo al disco es 2: 1, un clúster es dos bloques de disco de hardware, necesitará 2 + 1 = 3 lecturas, una penalización del 50%:

OS   |--- cluster  12 ---|--- cluster  13 ---|--- cluster  14...
     |                   |                   |
HDD  --|----|----|----|-a--|--b-|-c--|-d--|-e--|----|---        BAD
     |                   |                   |
HDD  |----|----|----|----|-a--|--b-|-c--|-d--|----|----|---     GOOD

Arriba, un clúster tiene 4 bloques de hardware (relación 4: 1) de 2 sectores cada uno. Alinearse en sectores "pares" significa que para leer un clúster esas lecturas de 8 sectores se traducen en lecturas de 4 bloques. Alinearse en sectores impares significa que las mismas lecturas de 8 sectores requieren 4 + 1 = 5 lecturas de bloque, una penalización de rendimiento del 25% (agrega una lectura cada cuatro).

Si tiene un disco desalineado con una relación de 4: 1, alineándolo lo hará un 20% más rápido (guarda una lectura cada 5).

Para hacer una partición "alineada", puede mover / establecer su desplazamiento desde el comienzo del disco al múltiplo apropiado de 512b-sectores, o (dependiendo de la herramienta) puede insertar una pequeña partición al comienzo del disco, con un tamaño tal que la siguiente partición comienza exactamente en un límite del sector del disco. En este segundo caso, mientras que, en teoría, necesita en la mayoría de los sectores N-1, es decir, muy pocos kilobytes, en la práctica probablemente tendrá que desperdiciar unos cientos de kilobytes, posiblemente megabytes enteros, para exprimir la mayor cantidad de rendimiento de sus disco duro de varios gigabytes.

(Probablemente podría recuperar ese espacio, y mucho más, eligiendo correctamente el tamaño del clúster del sistema operativo ).

LSerni
fuente
1
Las lecturas no son tan malas, sí, tiene que leer un poco de datos adicionales, pero leer tres bloques contiguos no cuesta mucho más tiempo que leer dos. El verdadero problema son las escrituras, para escribir una sección que sea más pequeña que el tamaño del bloque subyacente requiere leer los datos, esperar a que el disco gire una revolución completa y luego volver a escribirla.
plugwash
1
Además, no es necesario crear particiones adicionales, no hay una regla que indique que todo el espacio en un disco debe ser particionado.
plugwash
2

Las unidades casi siempre se dividen en sectores lógicos de 512 bytes, otros tamaños son posibles pero rara vez se usan debido a problemas de compatibilidad. Con los discos duros más antiguos, estos eran sectores separados que podían escribirse individualmente.

Hasta mediados de la década de 2000, las particiones estaban tradicionalmente alineadas con los límites de "cilindros". Por razones históricas, un "cilindro" era normalmente de 63 sectores. El sector 0 contiene el sector de arranque y la tabla de partición. Los sectores posteriores en el cilindro 0 a veces continuaron con información adicional para el gestor de arranque. La primera partición generalmente comenzó al comienzo del cilindro 1.

La mayoría de los sistemas de archivos agrupan sectores en bloques más grandes (a veces llamados "clústeres"). Estos suelen tener un tamaño de 4KiB.

En algún momento, los proveedores de unidades confiaron en que sería más eficiente si también usaran sectores físicos 4K, pero por razones de compatibilidad mantuvieron el tamaño del sector lógico en 512 bytes. Si el host lee o escribe todo el sector físico a la vez, las cosas son rápidas. Si la parte de lectura sigue siendo bastante rápida, la unidad puede descartar los datos no deseados. Sin embargo, si el host escribe solo una parte de un sector físico, la unidad debe leer el sector físico, combinar los datos leídos con los datos del host y luego reescribir el sector modificado. Eso significa esperar a que la unidad gire a su posición dos veces en lugar de una.

Esto funciona bien si los grupos de 4K del sistema de archivos están alineados con los sectores físicos de 4K de la unidad. Desafortunadamente, la forma tradicional de particionar unidades significa que la primera partición está básicamente garantizada para estar desalineada y las particiones posteriores solo tenían una probabilidad de 1 en 8 de estar alineadas. Por lo tanto, los proveedores de unidades de formato avanzado tuvieron que apresurar las herramientas para ayudar a las personas a realinear sus particiones.

Se pueden aplicar consideraciones similares con matrices de incursiones y SSD. Si bien una banda de incursión es probablemente mucho más grande que un solo clúster de sistema de archivos, algunos sistemas de archivos pueden tener regiones o similares que están alineadas en función de dos límites.

La práctica normal actual es alinear las particiones a los límites de 1MiB, que es una potencia lo suficientemente grande de dos para ser un múltiplo de todos los tamaños de bloque comunes.

lavado
fuente
0

No sé si esto es útil, pero entiendo que la alineación de la partición es cuando se alinea una partición determinada con una unidad de banda RAID subyacente.

Aparentemente, el rendimiento puede ser malo cuando usa un RAID basado en hardware o software; podrían surgir problemas si la ubicación inicial de la partición no está alineada con un límite de unidad de banda en la partición del disco que se crea en el RAID.

Dependiendo de la factorización para crear grupos de volumen, se puede crear un grupo de volumen sobre un límite de unidad de banda en lugar de al lado del límite de la unidad de banda. Este comportamiento podría causar una partición desalineada .

Puedo estar muy lejos y esto podría no tener nada que ver con RAID;)

LuxuryMode
fuente