Я делаю жесткий диск без SSD с parted, потому что я хочу таблицу разделов GPT.
parted /dev/sda mklabel gpt
Теперь я пытаюсь создать правильно выровненные разделы, поэтому использую следующую команду, чтобы узнать, где начинается первый сектор:
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
Мы видим, что он начинается в секторе 34 (это значение по умолчанию при использовании этой таблицы разделов).
Итак, для создания первого раздела я попытался:
parted /dev/sda mkpart primary 63s 127s
выровнять его по сектору 64, так как он кратен 8, но показывает:
Предупреждение: результирующий раздел не выровнен должным образом для лучшей производительности.
Размеры логического и физического секторов на моем жестком диске составляют 512 байт:
cat /sys/block/sda/queue/physical_block_size
512
cat /sys/block/sda/queue/logical_block_size
512
Как правильно создать разделы? Что я делаю неправильно?
parted /dev/sda mkpart primary 64s 128s
(в случае, если он начинается в 1), но он возвращает то же предупреждение.Ответы:
Для выравнивания раздела
parted
вы можете использовать--align
опцию. Допустимые типы выравнивания:Другой полезный совет: вы можете установить размер в процентах, чтобы выровнять его. Начните с 0% и заканчивайте на 100%. Например:
parted -a optimal /dev/sda mkpart primary 0% 4096MB
источник
0% 100%
? Откуда4096MB
берутся?'0%'
в кавычки для моей оболочки, чтобы выполнить команду должным образом.print
Мое решение состояло в том, чтобы использовать gdisk, который может выполнять выравнивание разделов автоматически по 2048 секторам (1024 КБ) по умолчанию, хотя это можно изменить в экспертном меню.
источник
Из Arch Wiki :
При создании раздела parted может предупреждать о неправильном выравнивании разделов, но не указывает на правильное выравнивание. Например:
Предупреждение означает, что раздел
start
не выровнен.В
Ignore
любом случае нажмите Enter , напечатайте таблицу разделов в секторах, чтобы увидеть, где она начинается, и удалите / заново создайте раздел с начальным сектором, округленным до возрастающей степени 2, пока предупреждение не прекратится. Например, на флеш-накопителе с секторами 512 В Parted хотел, чтобы разделы запускались в секторах, кратных 2048, что соответствует выравниванию 1 МБ.Кроме того, чуть выше этого раздела они утверждают, что более точные двоичные единицы МЭК KiB, MiB, GiB и т. Д. Приемлемы для единиц, а также менее точные КБ, МБ, ГБ и т. Д.
Лично моя точная команда, которая решила это, была:
Он не жаловался, я думаю, он хотел выравнивания 1 МБ.
источник
Незначительная коррекция. Насколько я понимаю, GPT-диски больше не имеют типов разделов, все они являются «первичными». Команда «mkpart primary» не создает основной раздел, как на дисках msdos, она просто создает раздел с именем primary. Вы также можете использовать команду
Это может привести к путанице, если вы попытаетесь создать логические разделы, я знаю, что это помогло мне.
Вы не можете создать раздел под названием «логический» внутри раздела под названием «расширенный».
источник
Принят ответ на @lik показывает , как вы можете указать предпочтительное выравнивание. Однако parted всегда использует это выравнивание для проверки результирующего раздела, но не всегда создает разделы с таким выравниванием.
TL; DR: когда 1MiB является оптимальным выравниванием, указание 0% будет работать для дисков объемом 200MiB и больше. Для дисков меньшего размера или большего выравнивания указание 0G может работать, а 0% - нет. Смотрите ниже о том, почему.
Parted пытается удовлетворить ограничения выравнивания при создании раздела, но он также не будет слишком сильно отклоняться от запрошенных вами значений. То, что считается «слишком большим», зависит от того, как вы указали позиции.
Когда вы указываете начальную (или конечную) позицию для команды mkpart, она внутренне генерирует диапазон допустимых значений. Этот диапазон центрируется на указанном вами значении и в равной степени расширяется с обеих сторон на половину используемого вами размера блока (это то, что я прочитал из кода , в комментариях говорится, что один полный размер блока на обоих концах).
Например, если вы укажете «10M», он попытается использовать любую позицию между 9,5M и 10,5M. То же самое относится и к процентам, поэтому, если вы укажете 0%, он будет использовать любое значение от 0% до 0,5% (очевидно, что оно не становится отрицательным).
Единственным исключением является то, что при использовании степени двух единиц (например, КиБ для 1024, в отличие от К для 1000) parted предполагает, что вы пытаетесь указать точную позицию, и учитывает только указанное вами значение.
Поскольку оптимальное выравнивание, как правило, кажется выровненным на 1 МБ, блокам K и M часто не хватает места для достижения оптимального выравнивания. Задание позиций в G должно иметь много места, но обычно тоже хорошо.
Вот почему 0% обычно работает, хотя даже это имеет ограничения.
источник