web-dev-qa-db-fra.com

Créer une partition alignée à l'aide de parted

Je partitionne un disque dur non SSD avec séparé parce que je veux une table de partition GPT.

parted /dev/sda mklabel gpt

Maintenant, j'essaie de créer les partitions correctement alignées, j'utilise donc la commande suivante pour savoir où commence le premier secteur:

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

Nous pouvons voir qu'il commence dans le secteur 34 (c'est la valeur par défaut lorsque cette table de partition est utilisée).

Donc, pour créer la première partition, j'ai essayé:

parted /dev/sda mkpart primary 63s 127s

pour l'aligner sur le secteur 64 car c'est un multiple de 8 mais ça montre:

Avertissement: la partition résultante n'est pas correctement alignée pour de meilleures performances.

Les tailles de secteur logique et physique de mon disque dur sont de 512 octets:

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

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

Comment créer des partitions correctement alignées? Qu'est-ce que je fais mal?

72
Marc

Pour aligner la partition sur parted, vous pouvez utiliser --align option. Les types d'alignement valides sont:

  • aucun - Utilisez l'alignement minimum autorisé par le type de disque.
  • cylindre - Aligne les partitions sur les cylindres.
  • minimal - Utilisez un alignement minimum comme indiqué par les informations de topologie du disque. Ceci et la valeur opt utiliseront les informations de disposition fournies par le disque pour aligner les adresses de la table de partition logique sur les blocs physiques réels sur les disques. La valeur min est l'alignement minimum nécessaire pour aligner correctement la partition sur des blocs physiques, ce qui évite une dégradation des performances.
  • optimal Utilisez un alignement optimal comme indiqué par les informations de topologie du disque. Cela s'aligne sur un multiple de la taille du bloc physique de manière à garantir des performances optimales.

Un autre conseil utile est que vous pouvez définir la taille avec des pourcentages pour l'aligner. Commencez à 0% et finissez à 100%. Par exemple:

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

73
lik

Depuis le Arch Wiki :

Lors de la création d'une partition, parted peut avertir d'un alignement incorrect de la partition, mais n'indique pas un alignement correct. Par exemple:

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

L'avertissement signifie que la partition start n'est pas alignée.

Entrez Ignore pour continuer quand même , imprimez la table de partition par secteurs pour voir où elle commence et supprimez/recréez la partition avec le secteur de démarrage arrondi à des puissances croissantes de 2 jusqu'à ce que l'avertissement s'arrête. Par exemple, sur un lecteur flash avec des secteurs de 512B, Parted voulait que les partitions démarrent sur des secteurs qui étaient un multiple de 2048, ce qui correspond à un alignement de 1 Mo.

De plus, juste au-dessus de cette section, ils indiquent que les unités binaires plus précises IEC KiB, MiB, GiB, etc.) sont acceptables pour les unités ainsi que les unités KB, MB, GB moins précises. , etc.

Personnellement, ma commande exacte qui a résolu ce problème était:

mkpart hd ext4 1024KiB 8470MB

Il ne s'est pas plaint, je suppose qu'il voulait des alignements de 1 Mo.

9
Travis Rodman

Ma solution a été d'utiliser gdisk qui peut effectuer l'alignement des partitions automatiquement sur 2048 secteurs (1024KiB) par défaut, bien qu'il puisse être modifié dans le menu expert.

9
Marc

Une correction mineure. Si je comprends bien, les disques GPT n'ont plus de types de partition, ils sont tous "primaires". La commande 'mkpart primary' ne crée pas de partition principale comme elle le fait sur les disques msdos, elle crée simplement une partition appelée primaire. Vous pouvez tout aussi bien utiliser la commande

(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!

Cela peut prêter à confusion si vous essayez de créer des partitions logiques, je sais que cela a été le cas pour moi.

(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

Vous ne pouvez pas créer une partition appelée "logique" à l'intérieur d'une partition appelée "étendue".

7
Miksa

Le réponse acceptée par @lik montre comment vous pouvez spécifier l'alignement préféré. Cependant, parted utilise toujours cet alignement pour vérifier la partition résultante, mais ne crée pas toujours des partitions avec cet alignement.

TL; DR: Lorsque 1 Mo est l'alignement optimal, la spécification de 0% fonctionnera pour les disques de 200 Mo et plus. Pour des disques plus petits ou un alignement plus important, la spécification de 0G pourrait fonctionner là où 0% ne fonctionne pas. Voir ci-dessous pourquoi.

Parted essaie de satisfaire les contraintes d'alignement lors de la création d'une partition, mais il ne s'écartera pas trop des valeurs demandées. Ce qui compte comme "trop" dépend de la façon dont vous avez spécifié les positions.

Lorsque vous spécifiez une position de début (ou de fin) pour la commande mkpart, elle génère en interne une plage de valeurs acceptables. Cette plage est centrée sur la valeur que vous spécifiez et s'étend également des deux côtés de la moitié de la taille de l'unité que vous avez utilisée (c'est ce que je lire le code , le les commentaires disent one taille de l'unité complète aux deux extrémités).

Par exemple, lorsque vous spécifiez "10M", il essaiera d'utiliser n'importe quelle position entre 9,5M et 10,5M. Il en va de même pour les pourcentages, donc si vous spécifiez 0%, il utilisera n'importe quelle valeur entre 0% et 0,5% (il ne devient pas négatif, évidemment).

Une exception est que lorsque vous utilisez la puissance de deux unités (comme KiB pour 1024, par opposition à K pour 1000) parted suppose que vous essayez de spécifier une position exacte et ne prend en compte que la valeur exacte que vous avez spécifiée.

Étant donné que l'alignement optimal semble généralement aligné sur 1 Mo, les unités K et M n'ont souvent pas suffisamment d'espace pour atteindre un alignement optimal. La spécification des positions en G devrait avoir beaucoup de place, mais% est généralement aussi bien.

C'est pourquoi 0% fonctionne généralement, même si cela a des limites.

7
Matthijs Kooijman