У меня есть система Ubuntu 11.10 с двумя дисками по 500 ГБ. Таблицы разделов выглядят так:
/dev/sda1 primary 465.52GB
/dev/sda2 extended 243.17MB
-> /dev/sda5 logical 243.14MB
/dev/sdb1 primary 465.76GB
sda1 и sdb1 находятся в одной группе физических томов LVM, содержащей один логический том, содержащий одну логическую файловую систему, которая монтируется как /. sda5 монтируется как / boot.
Проблема возникает, когда я хочу перейти на Ubuntu 12.04, для которого требуется как минимум 247 МБ свободного места на / boot. Поэтому мне нужно уменьшить размер sda1, чтобы я мог увеличить размер sda2 и sda5. Как, черт возьми, мне это сделать? Я могу найти, как уменьшить группу логических томов, но я не совсем понимаю, как очистить конечную часть sda1, чтобы я мог уменьшить группу физических томов. Pvresize решает это автоматически? Или это безумное принятие желаемого за действительное?
Я предполагаю, что альтернативой является резервное копирование всего на что-то или другое и воссоздание этого с нуля или выяснение, поддерживает ли GRUB2 использование LVM для / boot.
В 12.04 включение модулей LVM и raid в GRUB сделает его больше, чем традиционные 62 сектора, доступные для загрузчика. Предполагается, что в наши дни в большинстве систем разделы выровнены по отметке 1 МБ, поэтому обычно достаточно места. Вы можете использовать один из fdisk
s или parted
чтобы проверить начальное местоположение sda1
раздел (я знаю, что установщик Debian расплывчато говорит о том, куда все идет, не уверен, отличается ли установщик Ubuntu от других). Обязательно проверьте перед попыткой, похоже, много сообщений о том, что если недостаточно места, grub будет жаловаться, что недостаточно места для работы, но все равно попробуйте и оставит систему не загружаемой.
В качестве примера, чтобы увидеть, как использовать fdisk для сообщения, вот fdisk /dev/sda
в моей системе Debian, которую я установил очень давно: (Используйте команду «u» для отображения секторов, затем «p» для печати таблицы и «q» для выхода без изменений)
Device Boot Start End Blocks Id System /dev/sda1 63 1959929 979933+ 83 Linux
Это показывает, что в моем случае перед ним всего 62 сектора. Я бы не смог загрузиться прямо с LVM.
После сжатия первого раздела, содержащего первый физический том, pvresize
, вам нужно вырастить /boot
раздел.
Чтобы продлить /boot
раздел, вам придется переместить его начальную точку на первый диск. Вы можете добиться этого с помощью parted
используя move
команда.
Затем вы можете снова изменить размер раздела с помощью parted
и, наконец, расширить файловую систему.
Я понял это. Прежде чем я начну, я скажу, что приведенные ниже цифры могут не складываться - я пытался воссоздать именно то, что я сделал, но мне пришлось вернуться к числам. Мой совет - делайте все возможное в килобайтах, потому что все инструменты согласны с тем, насколько они велики. Будьте ОЧЕНЬ осторожны при использовании fdisk, чтобы раздел был не меньше размера физического тома, который он содержит, потому что он не предупредит вас, если вы попытаетесь сделать что-то глупое.
Во-первых, мне нужно было загрузиться с флешки (поскольку корневая файловая система находится в LV). Затем проверьте, что файловая система в порядке:
e2fsck -f /dev/mapper/root
Затем измените размер файловой системы:
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/root 935093704 472743436 414857916 54% /
$ resize2fs /dev/mapper/root 934093704k
Затем измените размер логического тома:
$ lvresize -L 934093704K /dev/mapper/root
Убедитесь, что файловая система в порядке:
$ e2fsck -f /dev/mapper/root
Теперь посмотрим на физические тома - в / dev / sdb1 должно быть немного свободного места в конце:
$ pvs
PV VG Fmt Attr PSize PFree
/dev/sda1 toad lvm2 a- 465.76g 4.00m
/dev/sdb1 toad lvm2 a- 465.76g 1.28g
Нам нужно переместить это свободное пространство в конец / dev / sdb1. Начните с того, что посмотрите, сколько экстентов существует на каждом диске:
$ pvs --segments
PV VG Fmt Attr PSize PFree Start SSize
/dev/sda1 toad lvm2 a- 465.76g 4.00m 0 119173
/dev/sdb1 toad lvm2 a- 465.76g 1.28g 0 119141
Затем переместите часть из одного в другой: $ pvmove / dev / sda1: 118923: 119173 / dev / sdb1
$ pvs --segments
PV VG Fmt Attr PSize PFree Start SSize
/dev/sda1 toad lvm2 a- 464.55g 1.00g 0 119141
/dev/sdb1 toad lvm2 a- 465.76g 284.0m 0 119141
/dev/sdb1 toad lvm2 a- 465.76g 284.0m 119141 119173
Теперь вы можете изменить размер физического тома с помощью pvresize:
$ pvresize --setphysicalvolumesize 487112704k /dev/sda1
Теперь вы можете изменить размер раздела с помощью fdisk. Предупреждение: мои разделы были настроены так, что / dev / sda1 запускался в секторе 63. Я предполагал, что это значение по умолчанию, и поэтому на самом деле не записал его. Тогда fdisk позволил бы мне воссоздать только раздел, начинающийся с сектора 2048, и я не знал, что это было неправильно - теперь у меня непригодная для использования система! К счастью, вы можете повторно удалить и воссоздать раздел без каких-либо побочных эффектов, но мне пришлось угадывать, где должен был начинаться раздел. Так что ЗАМЕТИТЕ, ГДЕ НАЧИНАЕТСЯ ВАШ РАЗДЕЛ, ПЕРЕД УДАЛЕНИЕМ ЕГО!
$ fdisk /dev/sda
Command (m for help): p
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 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: 0x000730a3
Device Boot Start End Blocks Id System
/dev/sda1 63 974227455 488113696+ 8e Linux LVM
/dev/sda2 974229504 976771071 1270784 5 Extended
/dev/sda5 974231552 976771071 1269760 83 Linux
Command (m for help): d
Partition number (1-5): 1
Command (m for help): n
Partition type:
p primary (0 primary, 1 extended, 3 free)
l logical (numbered from 5)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-976773167, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-974229503, default 974229503): +487113696K
Command (m for help): x
Expert command (m for help): b
Partition number (1-5): 1
New beginning of data (1-974229439, default 2048): 63
Я переместил и изменил размер / dev / sda2 и / dev / sda5 с помощью GParted, что заставляет меня намного меньше нервничать. И наконец:
$ mkdir disk
$ mount /dev/sda5 disk
$ grub-install --boot-directory=./disk /dev/sda
чтобы переустановить загрузчик в новом месте.
Обратите внимание, что я сначала создал раздел, начиная с 2048 года, а затем переместил начало на 63.
Команды LVM сообщат вам, собираетесь ли вы сделать что-то глупое, например, сделать физический том меньше, чем выделенные экстенты, которые он содержит, но некоторые этого не сделают, особенно fdisk - довольно легко в конечном итоге изменить размер раздела, чтобы он отрубает конец физического объема. Это плохо. Убедитесь, что размер раздела не меньше физического объема!