Сначала я создаю правильно выровненный раздел в новом использовании таблицы GPT, разделенном путем определения процентов для запуска и конца раздела:
# parted -a optimal /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mktable gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Y
(parted) mkpart primary 0% 1%
(parted) p
Model: ATA WDC WD30EZRX-00M (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 2097kB 1049kB primary
(parted) quit
Обратите внимание, что этот диск использует Усовершенствованный Формат, но правильно сообщает о физическом размере сектора 4096B
к Разделенному. Давайте посмотрим на него снова, с помощью секторов в качестве единицы:
# parted -a optimal /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s
(parted) p
Model: ATA WDC WD30EZRX-00M (scsi)
Disk /dev/sdb: 5860533168s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
1 2048s 4095s 2048s primary
(parted) quit
2048s
и нет 34s
который является первым возможным сектором?34s
не правильно выровнен сектор запуска, если физический размер сектора 4096B
и логическое (который является тем, который Вы указываете в Разделенном) размер сектора 512B
. Правильно выровненный запускаются, сектор является одним передаваемым по наследству 8
(так как физический размер сектора / логический размер сектора = 8
). Но это означает 40s
является первым правильно выровненный, запускают сектор, все же он не используется. Почему?Если мы пытаемся создать правильно выровненный раздел 100MiB
способность, запускающаяся в 40s
в новой таблице разделов GPT:
# parted -a optimal /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Y
(parted) mkpart primary 40s 204839s
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? I
(parted) unit MiB
(parted) p
Model: ATA WDC WD30EZRX-00M (scsi)
Disk /dev/sdb: 2861588MiB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
1 0.02MiB 100MiB 100MiB fat32 primary
(parted)
(parted) unit s
(parted) p
Model: ATA WDC WD30EZRX-00M (scsi)
Disk /dev/sdb: 5860533168s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
1 40s 204839s 204800s fat32 primary
(parted)
Warning: The resulting partition is not properly aligned for best performance.
предупреждение, даже при том, что 40s
и 204 840 с (204839s
+ 1) оба передаваемы по наследству 8
. Почему?Расстались, просто чрезмерно консервативны. В настоящее время обычной практикой является выравнивание разделов на границах 1 МБ (2048 секторов), поскольку это работает на дисках Advanced Format, на определенных типах настроек RAID, которые требуют выравнивания, и на большинстве твердотельных накопителей. Для диска с расширенным форматом, если выравнивание кратно 8, все в порядке, а 2048 - кратно 8. Потерянное дисковое пространство - ничтожно - 0,0000336% от общего дискового пространства, если бы я это сделал математика права и ничего не опечатка. Так что не беспокойся об этом; просто используйте выравнивание 1MiB.
Я, вероятно, добавлю, что на Linux можно существовать ситуации где parted
никогда может не передавать оптимальное и минимальную проверку выравнивания одновременно.
Причина этого - это parted
(по крайней мере, с версии 3.2), полагается libblkid
, который в свою очередь сообщает о значениях от /sys/block/<disk>/queue/minimum_io_size
и /sys/block/<disk>/queue/optimal_io_size
(см. io-limits.txt).
Таким образом, в то время как для Усовершенствованного диска Формата первый, вероятно, будет чем-то как 4k, у последнего может быть некоторое безумное значение - например. 65535 * 512 == 33553920
.
Теперь, если мы смотрим на исходный код - "надлежащая", или "лучшая производительность" выравнивание определяется формулой в parted.c:: partition_align_check ():
part->geom.start % pa->grain_size == pa->offset,
где grain_size
прибывает из размера блока ввода-вывода выше, geom.start
наше смещение раздела и смещение выравнивания pa->offset
вполне часто нуль.
По умолчанию, разделенный предположил бы, что 1 мебибайт оптимальное, и ~4k, чтобы быть минимальным (не совсем так, это - определенное упрощение), размер блока, таким образом, эти значения коррелировали бы; однако, если libblkid
решает иначе, parted
имеет тенденцию доверять ему и заменять то значение по умолчанию 1 мебибайт со значением, найденным в /sys/block/<disk>/queue/optimal_io_size
. (В то же время, /sys/block/<disk>/queue/minimum_io_size
довольно вероятно, даст Вам те же 4096 B.)
В этом случае разделенная оптимальная проверка никогда не будет передавать одновременно с минимальной проверкой, что могло возможно немного сбивать с толку.
С этим в памяти - если в сомнении, взгляните на queue/optimal_io_size
и queue/minimum_io_size
, и если первый не является делимым последним, просто проигнорируйте разделенное' предупреждение и решите для себя, делают ли Вы хотите пойти с оптимальным или минимальной проверкой.