Надлежащее выравнивание разделов на Усовершенствованном Формате Разделенное использование жесткого диска

Сначала я создаю правильно выровненный раздел в новом использовании таблицы 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. Почему?
15
задан 13 April 2017 в 15:24

2 ответа

Расстались, просто чрезмерно консервативны. В настоящее время обычной практикой является выравнивание разделов на границах 1 МБ (2048 секторов), поскольку это работает на дисках Advanced Format, на определенных типах настроек RAID, которые требуют выравнивания, и на большинстве твердотельных накопителей. Для диска с расширенным форматом, если выравнивание кратно 8, все в порядке, а 2048 - кратно 8. Потерянное дисковое пространство - ничтожно - 0,0000336% от общего дискового пространства, если бы я это сделал математика права и ничего не опечатка. Так что не беспокойся об этом; просто используйте выравнивание 1MiB.

0
ответ дан 13 April 2017 в 15:24

Я, вероятно, добавлю, что на 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, и если первый не является делимым последним, просто проигнорируйте разделенное' предупреждение и решите для себя, делают ли Вы хотите пойти с оптимальным или минимальной проверкой.

0
ответ дан 23 November 2019 в 02:45

Другие вопросы по тегам:

Похожие вопросы: