Я не уверен, почему libparted делает это, но у меня есть три гипотезы:
- Это может быть пережитком прошлых времен. При использовании выравнивания цилиндров старого стиля число секторов на современном диске редко было равным точному количеству цилиндров, то есть последний цилиндр был бы частичным. Таким образом, при разбиении MBR-дисков с выравниванием цилиндров было принято оставлять неиспользуемые несколько секторов в конце диска. Возможно, что алгоритмы, которые использует libparted для этого, в конечном итоге создают разрыв в 1 МБ на дисках GPT. Если это так, то это можно считать ошибкой, хотя и очень незначительной.
- Это может быть ошибка округления. В последних версиях libparted точки начала раздела выровнены по границам 1 МБ. Разработчики, возможно, намеревались иметь конец раздела в самом последнем пригодном для использования секторе, но ошибка округления могла вызвать его падение на значение выравнивания раздела 1 МБ.
- Это может быть преднамеренным. Пробел в конце диска можно использовать для загрузочного раздела BIOS (который пользователи иногда должны добавлять после разбиения, потому что они не понимают, что он в этом нуждается) или для настройки размера таблицы разделов. К сожалению, для этой гипотезы libparted не позволяет использовать это пространство ни одним из этих способов, хотя
gdisk
делает.
Я перечислил эти варианты в порядке уменьшения вероятности. Обратите внимание, что я являюсь автором GPT fdisk (gdisk
, sgdisk
и cgdisk
), поэтому я очень хорошо знаком с потребностями разбиения GPT. Я даже добавил несколько строк кода для libparted, но я не знаком с конкретными областями libparted, которые ответственны за это поведение, отсюда спекулятивный характер моих гипотез.