Crear partición alineada usando parted


68

Estoy particionar un disco duro SSD no con separaron porque quiero una tabla de particiones GPT.

parted /dev/sda mklabel gpt

Ahora, estoy tratando de crear las particiones correctamente alineadas, así que utilizo el siguiente comando para saber dónde comienza el primer sector:

parted /dev/sda unit s p free

Disk /dev/sda: 488397168s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End         Size        File system  Name      Flags
        34s    488397134s  488397101s  Free Space

Podemos ver que comienza en el sector 34 (ese es el valor predeterminado cuando se usa esta tabla de particiones).

Entonces, para crear la primera partición que probé:

parted /dev/sda mkpart primary 63s 127s

para alinearlo en el sector 64 ya que es un múltiplo de 8 pero muestra:

Advertencia: la partición resultante no está alineada correctamente para un mejor rendimiento.

Los tamaños de sector lógico y físico en mi disco duro son 512 bytes:

cat /sys/block/sda/queue/physical_block_size
512

cat /sys/block/sda/queue/logical_block_size 
512

¿Cómo creo particiones correctamente alineadas? ¿Qué estoy haciendo mal?


¿Estás seguro de que los números de sector comienzan en cero?
Burton Samograd

1
También lo intenté parted /dev/sda mkpart primary 64s 128s(en caso de que comience en 1) pero devuelve la misma advertencia.
Marc

Parece que hay un comando para verificar si un valor está alineado: gnu.org/software/parted/manual/html_node/align_002dcheck.html . ¿Tal vez intente eso con varios valores usando un bucle for y escupe los valores que están bien?
Burton Samograd

Burton, no sabía sobre ese comando, pero no se puede usar hasta tener una partición.
Marc

Lo siento, no leí la descripción con suficiente cuidado.
Burton Samograd

Respuestas:


68

Para alinear la partición con partedusted puede usar la --alignopción. Los tipos de alineación válidos son:

  • none : utilice la alineación mínima permitida por el tipo de disco.
  • cilindro : alinee las particiones con los cilindros.
  • minimal : utilice la alineación mínima que proporciona la información de topología del disco. Este y el valor opt utilizarán la información de diseño proporcionada por el disco para alinear las direcciones de la tabla de partición lógica con los bloques físicos reales en los discos. El valor mínimo es la alineación mínima necesaria para alinear la partición correctamente con los bloques físicos, lo que evita la degradación del rendimiento.
  • óptimo Utilice la alineación óptima según la información de topología del disco. Esto se alinea con un múltiplo del tamaño del bloque físico de una manera que garantiza un rendimiento óptimo.

Otro consejo útil es que puede establecer el tamaño con porcentajes para alinearlo. Comienza en 0% y termina en 100%. Por ejemplo:

parted -a optimal /dev/sda mkpart primary 0% 4096MB


55
¿No debería terminar el comando 0% 100%? De donde 4096MBviene
njahnke

44
El valor 4096MB se usa aquí solo como un ejemplo para mostrar la capacidad de mezclar% y números de tamaño específicos
como el

3
Solo una nota, tuve que incluir las '0%'comillas entre comillas para que mi shell ejecutara el comando correctamente.
Adam Eberlin

@lik, ¿tiene alguna sugerencia para esta publicación? unix.stackexchange.com/questions/248939/…
AnkurTank

1
No importa lo anterior, me acabo de dar cuenta de que la partición printusa kB como 1000 bytes ...
jiggunjer

9

Mi solución ha sido usar gdisk que puede realizar la alineación de particiones automáticamente en 2048 sectores (1024 KB) de forma predeterminada, aunque se puede cambiar en el menú experto.


7

Del Arch Wiki :

Al crear una partición, Parted puede advertir sobre una alineación incorrecta de la partición, pero no sugiere una alineación adecuada. Por ejemplo:

(parted) mkpart primary fat16 0 32M
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel?                                                     

La advertencia significa que la partición startno está alineada.

Ingrese Ignorepara continuar de todos modos , imprima la tabla de particiones en sectores para ver dónde comienza y elimine / vuelva a crear la partición con el sector de inicio redondeado a potencias crecientes de 2 hasta que se detenga la advertencia. Como ejemplo, en una unidad flash con 512B sectores, Parted quería que las particiones comenzaran en sectores que eran un múltiplo de 2048, que es una alineación de 1 MB.

Además, justo encima de esta sección, afirman que las unidades binarias IEC más precisas de KiB, MiB, GiB, etc., son aceptables para las unidades, así como los KB, MB, GB, etc., menos precisos.

Personalmente, mi comando exacto que resolvió esto fue:

mkpart hd ext4 1024KiB 8470MB

No se quejó, supongo que quería alineaciones de 1 MB.


No, probé 1048576KiB, sin dados.
Behrooz

5

Una corrección menor. Según tengo entendido, los discos GPT ya no tienen tipos de partición, todos son "primarios". El comando 'mkpart primary' no crea una partición primaria como lo hace en los discos msdos, solo crea una partición llamada primaria. También puedes usar el comando

(parted) mkpart Parted-FUN! 21476MB 4000787MB
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start    End        Size       File system  Name         Flags
 1      1.05MB   17181MB    17180MB    ext4         raid-var
 2      17181MB  21476MB    4295MB                  raid-swap
 3      21476MB  4000786MB  3979310MB               Parted-FUN!

Esto puede causar confusión si intenta crear particiones lógicas, sé que lo hizo por mí.

(parted) mkpart extended 21476MB 4000787MB
(parted) mkpart logical 21476MB 1000787MB
Warning: You requested a partition from 21476MB to 1000787MB.
The closest location we can manage is 4000786MB to 4000786MB.
Is this still acceptable to you?
Yes/No? Yes
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start      End        Size       File system  Name       Flags
 1      1.05MB     17181MB    17180MB    ext4         raid-var
 2      17181MB    21476MB    4295MB                  raid-swap
 3      21476MB    4000786MB  3979310MB               extended
 4      4000786MB  4000786MB  0.00MB                  logical

No puede crear una partición llamada "lógica" dentro de una partición llamada "extendida".


gracias, solo perdí bastante tiempo gracias a estas herramientas cli malas, y me hiciste descubrir qué está pasando.
Florian Heigl

5

La respuesta aceptada por @lik muestra cómo puede especificar la alineación preferida. Sin embargo, parted siempre usa esa alineación para verificar la partición resultante, pero no siempre crea particiones con esa alineación.

TL; DR: cuando 1MiB es la alineación óptima, especificar 0% funcionará para discos de 200MiB y mayores. Para discos más pequeños o una alineación más grande, especificar 0G podría funcionar donde 0% no funciona. Vea a continuación sobre por qué.

Parted intenta satisfacer las restricciones de alineación al crear una partición, pero tampoco se desviará demasiado de los valores solicitados. Lo que cuenta como "demasiado" depende de cómo haya especificado las posiciones.

Cuando especifica una posición inicial (o final) para el comando mkpart, genera internamente un rango de valores aceptables. Este rango se centra en el valor que especifique, y se extiende por igual en ambos lados por la mitad del tamaño de la unidad que usó (eso es lo que leí del código , los comentarios dicen un tamaño de unidad completo en ambos extremos).

Por ejemplo, cuando especifique "10M", intentará usar cualquier posición entre 9.5M y 10.5M. Lo mismo ocurre con los porcentajes, por lo que si especifica 0% utilizará cualquier valor entre 0% y 0.5% (obviamente, no es negativo).

Una excepción es que cuando se usa la potencia de dos unidades (como KiB para 1024, en lugar de K para 1000) se supone que está tratando de especificar una posición exacta y solo considera el valor exacto que especificó.

Dado que la alineación óptima generalmente parece estar alineada a 1MiB, las unidades K y M a menudo no tendrán suficiente espacio para alcanzar la alineación óptima. Especificar posiciones en G debería tener mucho espacio, pero el% también suele estar bien.

Entonces, esta es la razón por la cual el 0% generalmente funciona, aunque incluso eso tiene límites.


¿Podría resumir un TLDR práctico de su respuesta: qué exactamente debería hacerse mejor de una manera diferente en comparación con la respuesta aceptada?
yurkennis

Buena sugerencia, agregué un TL; DR. En la práctica, creo que el 0% funcionará para todos los discos, excepto los realmente pequeños, pero mi respuesta agrega un poco de información sobre cómo funciona exactamente.
Matthijs Kooijman
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.