After shrinking the first partition that holds the first physical volume with pvresize
, you need to grow the /boot
partition.
In order to extend the /boot
partition you would have to move its start point on the first disk. You can accomplish that with parted
using the move
command.
Then you can resize the partition again with parted
and finally grow the filesystem.
In 12.04, enabling the LVM and raid modules in GRUB will make it larger than the traditional 62 sectors available for the bootloader. Supposedly most systems these days have partitions aligned to the 1MB mark so there's usually plenty of space. You can use one of the fdisk
s or parted
to check the starting location of the sda1
partition (I know Debian's installer is vague about where everything is going, not sure if Ubuntu's installer is any different). Be sure to check before trying, there seems to be a lot of reports that if there isn't enough space, grub will complain that there's not enough space to work but try anyway and leave the system unbootable.
As an example to see how to use fdisk to tell, here is fdisk /dev/sda
on my Debian system that I installed long, long ago: (Use command "u" to show sectors, then "p" to print the table and "q" to quit without changes)
Device Boot Start End Blocks Id System / dev / sda1 63 1959929 979933+ 83 Linux
Это показывает, что в моем случае перед ним всего 62 сектора. Я не смогу загрузиться прямо с LVM.
Я понял это. Прежде чем я начну, я скажу, что приведенные ниже цифры могут не складываться - я пытался точно воссоздать то, что делал, но мне пришлось вернуться к числам. Мой совет - делайте все возможное в килобайтах, потому что все инструменты согласны с тем, насколько они велики. Будьте ОЧЕНЬ осторожны при использовании 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 сообщат вам, собираетесь ли вы сделать что-то глупое, например, сделать физический том меньше выделенного. extents, которые он содержит, но некоторые не будут, особенно fdisk - довольно легко изменить размер раздела так, чтобы он отрубил конец физического тома. Это плохо. Убедитесь, что размер раздела не меньше физического объема!
особенно fdisk - довольно легко изменить размер раздела так, чтобы он отрубил конец физического тома. Это плохо. Убедитесь, что размер раздела не меньше физического объема! особенно fdisk - довольно легко изменить размер раздела так, чтобы он отрубил конец физического тома. Это плохо. Убедитесь, что размер раздела не меньше физического объема!