Был увеличен физический диск у виртуальной машины, поэтому на появившемся месте нужно создать раздел и добавить его в группу томов LMV.
При создании тома было обнаружено нечто странное — а именно, «дырки» между уже имеющимися разделами.
$ sudo fdisk /dev/sda
Command (m for help): p
Disk /dev/sda: 128.8 GB, 128849018880 bytes 255 heads, 63 sectors/track, 15665 cylinders, total 251658240 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000e7217
Device Boot Start End Blocks Id System /dev/sda1 * 2048 499711 248832 83 Linux /dev/sda2 501758 104855551 52176897 5 Extended /dev/sda5 501760 104855551 52176896 8e Linux LVM
Command (m for help): n
...
First sector (499712-<b>251658239</b>, default 499712): Using default value 499712 Last sector, +sectors or +size{K,M,G} (499712-<b>501757</b>, default 501757):
Можно заметить, что /dev/sda1 заканчивается на секторе 499711, а /dev/sda2 начинается на секторе 501758 — то есть имеется дырка примерно в 1Мб. Соответственно, при создании нового раздела fdisk предлагает начать его именно с сектора 499712.
Диск размечался автоматически при установке Ubuntu.
Вопросы:
1. Откуда могла взяться эта дырка, и стоит ли беспокоиться об этом вопросе?
2. Правильно ли я понимаю, при создании нового раздела мне просто нужно указать в качестве первого сектора значение 104855552?
1. Не стоит беспокоится. Откуда взялась — смотрите ниже.
Путём нехитрых махинаций:
а) первый раздел (/dev/sda1):
смещение: 2048 [сектор] = 1048576 [байт] = 1 [мегабайт]
размер: (499711 — 2048 + 1) = 497664 [сектор] = 254803968 [байт] = 243 [мегабайт]
б) второй раздел (/dev/sda5):
смещение: 501760 [сектор] = 256901120 [байт] = 245 [мегабайт]
размер: (104855551 — 501760 + 1) = 104353792 [сектор] = 53429141504 [байт] = 50954 [мегабайт]
Все полученные значения — целые. По логике вещей, во время установки ОС разметка диска производилась с выравниванием по 1 мегабайту, что есть хорошее правило. Из-за выравнивания и образовалась эта самая «дырка». Это некритично в большинстве случаев.
Забыл сказать, что /dev/sda2 это расширенный раздел таблицы MBR (почитайте на досуге), но не собственно раздел для файловой системы/LVM/etcetera.
В принципе, на современных дистрибутивах вполне работает использование GPT для таблицы разделов; для неё есть своя утилита манипулирования на замену fdisk — gdisk (страница проекта, и в репозиториях Debian / Ubuntu).
Про то, что /dev/sda2 — расширенный раздел, читал, да.
1. Я верно понимаю, что именно 2048 секторов — для того, чтобы увеличить диапазон кратности?
2. Понятно, почему нужен offset для /dev/sda1 — в начале диска пишутся загрузочные записи, таблицы разделов и прочее. Но зачем дырка в 1 мб между /dev/sda1 и /dev/sda5? Почему бы не начать /dev/sda5 в секторе 499712?
3. А почему /dev/sda2 начинается в 501758 секторе? Там 1024 байта каких-то метаданных?
1. Между началом диска и первым разделом обязан быть задел (запас) на собственно таблицу разделов и загрузчик. Выравнивание применимо априори.
2. Расширенный раздел это, по сути, «дочка» основной таблицы MBR. Поскольку разделы для файловых систем надобно выравнивать, а «дочку» тоже где-то хранить, то sda2 на диске начинается «раньше» именно на то количество секторов, которое необходимо для MBR, но с пропуском 1 мегабайта между sda1 и sda5.
3. См. п. 2.
4. В этом случае не нужно. Но, возвращаясь к таблицам разметки, рекомендую GPT — все разделы являются основными, легко идут друг за другом и вообще 640 килобайт ёмкость таблицы в 128 разделов хватит всем.
Имхо, это просто выравнивание начал разделов. Не знаю, насколько оно в настоящее время и на вашей конфигурации актуально, но инсталлятор может просто перестраховываться.
На конце мегабайта закончился, на начале следующего начался. Хотя, да, здесь непонятно зачем взялся Extended раздел (и разница в 2047 секторов подтверждает, что именно он всё и испортил). В-общем, лучше руками разметить=)