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?
Pour aligner la partition sur parted
, vous pouvez utiliser --align
option. Les types d'alignement valides sont:
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
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.
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.
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".
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.