Назад | Перейти на главную страницу

Изменение размера раздела LVM для гостевого KVM

Я создал раздел LVM для гостя KVM. Гость KVM также сам использует разделы LVM.

Первоначальный размер гостевого раздела LVM на гипервизоре составлял 160 ГБ. Я расширил до 200 ГБ.

Я перезагрузил гостя, и он узнал новый размер:

    # fdisk -l

Disk /dev/vda: **214.7 GB**, 214748364800 bytes
16 heads, 63 sectors/track, 416101 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c1b11

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           3        1018      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/vda2            1018      332882   167259136   8e  Linux LVM
Partition 2 does not end on cylinder boundary.

Disk /dev/mapper/vg_main-lv_root: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/vg_main-lv_root doesn't contain a valid partition table

Disk /dev/mapper/vg_main-lv_swap: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/vg_main-lv_swap doesn't contain a valid partition table

Disk /dev/mapper/vg_main-lv_mysql: 158.4 GB, 158385307648 bytes
255 heads, 63 sectors/track, 19255 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/vg_main-lv_mysql doesn't contain a valid partition table

Однако я не могу расширить физический том, чтобы выделить новое пространство для LVM на гостевой машине (/ dev / mapper / vg_main-lv_mysql):

# pvresize -v /dev/vda2
Using physical volume(s) on command line
Archiving volume group "vg_main" metadata (seqno 17).
Resizing volume "/dev/vda2" to 334516224 sectors.
No change to size of physical volume /dev/vda2.
Updating physical volume "/dev/vda2"
Creating volume group backup "/etc/lvm/backup/vg_main" (seqno 18).
Physical volume "/dev/vda2" changed
1 physical volume(s) resized / 0 physical volume(s) not resized

Право Фалька в том, что вы можете изменить размер раздела, но это потенциально более безопасный способ, и тот, который обычно работает без перезагрузки, заключался бы в использовании parted для создания новый раздел, затем создайте новый PV, добавьте его в VG, затем расширьте LV и, наконец, resize2fs FS.

Просто хотел, чтобы вы знали, что есть более одного пути.

Вам нужно изменить размер раздела /dev/vda2 также, поскольку ваш физический том находится в разделе. Ты можешь использовать parted изменить размер раздела онлайн. Когда вы изменили размер раздела, вы можете изменить размер pv с помощью pvresize а затем LV с lvextend.

Лучший,

Фальк

Добавление нового физического тома увеличит фрагментацию, также это не то, что вы можете делать на регулярной основе, иначе у вас будет слишком много PV.

Увеличение размера / dev / vda2 так, чтобы он занимал (в настоящее время) нераспределенное пространство, является правильным путем. Если вы посмотрите на свою таблицу разделов, / dev / vda2 имеет размер всего 160 ГБ, а размер диска - 216 ГБ.

Есть отличный инструмент под названием virt-resize (часть инструментов libguestfs), которая делает именно то, что вам нужно.

Он должен использоваться на самом хосте KVM, а не в гостевой системе.

Если на хосте KVM запущен Debian wheezy или более поздняя версия, вы можете установить этот инструмент с помощью:

apt-get install libguestfs-tools
apt-get update (without this, update-guestfs-appliance might fail)
update-guestfs-appliance

Если вы используете другой дистрибутив, см. http://libguestfs.org/guestfs-faq.1.html#binaries

Предполагая, что имя LV, содержащего гостя, - / dev / vg / guest, вы должны запустить:

lvrename /dev/vg/guest /dev/vg/guest-backup
lvcreate -n guest -L 200G /dev/vg
virt-resize /dev/vg/guest-backup /dev/vg/guest --expand /dev/vda2 

virt-resize скопирует все данные из старого LV в новый LV и расширит раздел / dev / vda внутри LV. Конечно, это предполагает, что у вас есть 200 ГБ доступных в vg хоста KVM.

Если вы этого не сделаете, вы должны сделать так, как предлагал Chopper3: обновить таблицу разделов гостевой системы, чтобы «последний» сектор раздела / dev / vda2 был последним сектором / dev / vda.