Как увеличить размер гостевого диска KVM, используя LVM VG в качестве пула хранения?

Как увеличить размер гостевого диска KVM, используя LVM VG в качестве пула хранения?

Хост-сервер KVM работает под управлением CentOS 6.5, а группа томов LVM «storage_pool» используется в качестве основного пула хранения для KVM.

Гость Ubuntu устанавливается с использованием файловой системы ext4 и монтирует весь /dev/vda1 как /. Это конфигурация гостевого диска:

<disk type='block' device='disk'>
  <driver name='qemu' type='raw' cache='none' io='native'/>
  <source dev='/dev/storage_pool/kvmguest.img'/>
  <target dev='vda' bus='virtio'/>
  <alias name='virtio-disk0'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>

Какой подход будет наилучшим для увеличения размера гостевого диска? В VG много свободного места.

Я нашел несколько примеров, но большинство из них используют LVM внутри гостей или не были полностью применимы. Насколько я понимаю, распространенный метод заключается в создании большего LV в той же VG, выключении гостя, переносе данных, редактировании конфигурации для использования нового LV?

Заранее спасибо за любые предложения или указания.

решение1

Нет необходимости отключать гостя (по крайней мере, в 2019 году).

Просто

lvextend -L+<size>G /dev/<group>/<volume>

затем

virsh blockresize <domain> /dev/<group>/<volume> --size <newsize>

и, наконец, зайдите в гостевую комнату и сделайте все необходимое, чтобы использовать дополнительное пространство.

В гостевой ОС Windows вы можете сделать следующее:

diskpart

list volume

select volume <n>

extend

Вот точные шаги, которые я выполнил, чтобы расширить диск C: гостевой ОС Windows 10, работающей как домен KVM в Ubuntu 19.04 с помощью qemu 3.1.0.

решение2

Вот процедура, которой я следовал:

  1. Расширить логический том гостевой ОС kvm

    # lvextend -L+50G /dev/storage_pool/guest.img
    
  2. Завершите работу гостевой ОС KVM и деактивируйте логический том.

    # virsh shutdown guest
    # lvchange -a n /dev/storage_pool/guest.img
    
  3. Перечислите и запишите информацию о разделах гостевой системы kvm, самое главное — первый сектор. Если секторы не отображаются, вам может потребоваться добавить переключатель '-u' или '-u sector'

    # fdisk -l /dev/storage_pool/guest.img
    
  4. Удалите и заново создайте раздел, чтобы заполнить все расширенное пространство, убедитесь, что вы используете сектора в качестве единиц измерения и чтобы выбрать тот же первый сектор (обычно 2048, если раздел выровнен), вы можете использовать команду fdisk «u» для переключения между единицами измерения

    # fdisk /dev/storage_pool/guest.img
    Command (m for help): d
    Partition number (1-4): 1
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First sector (...): 2048
    Last sector...: hit enter and use the default last sector
    Command (m for help): a
    Partition number (1-4): 1
    Command (m for help): w
    
  5. Откройте файловую систему ext3/4 и измените ее размер

    # kpartx -a -v /dev/storage_pool/guest.img
    # e2fsck -p -f /dev/mapper/storage_pool-guest.img1
    # resize2fs /dev/mapper/storage_pool-guest.img1
    # e2fsck -p -f /dev/mapper/storage_pool-guest.img1
    # kpartx -d -v /dev/storage_pool/guest.img
    
  6. Активируйте логический том и запустите гостевую систему kvm.

    # lvchange -a y /dev/storage_pool/guest.img
    # virsh start guest
    

решение3

Поискав то же самое, я нашел ваш вопрос, на который пока нет ответов. Для меня сработало следующее:

  1. завершите работу гостевой ОС (в моем случае Debian 7.0) обычным способом.

  2. расширить "оригинальный" LV (в VG хоста, конечно), например, на 5G. Для этого вам нужно быть root/sudo на хосте:

    lvextend -L +5G /dev/YourStoragePoolVG/YourVirtualMachinesVGToExtend

  3. Откройте новый расширенный логический раздел (т. е. «диск» вашей виртуальной машины) в gparted:

    gparted /dev/mapper/YourStoragePoolVG-ВашиВиртуальныеМашиныVGДляРасширения

  • Примечание: Выдолжениспользуйте путь "/dev/mapper/...", нет"/dev/dm-77" или "/dev/YourStoragePoolVG/..." или другое (судя по всему, это ошибка/фича LVM)!
  1. Поэкспериментируйте с разделами на измененном томе (используйте графический интерфейс, как обычно)
  • Примечание: примите во внимание предупреждения о потере данных, типах файловых систем и т. д.!
  • Примечание: будьте осторожны.
  • Вgparted, вы можете изменять размер разделов и перемещать их в таблице разделов, хранящейся на диске virtio внутри логического тома.
  • Расширение одного или нескольких разделов IMHO не проблема. Для сокращения раздела/фс используйте Google...
  • gparted также адаптирует файловые системы на разделах (а не только сами разделы).
  1. Перезапустите свою виртуальную машину. Теперь она видит измененные разделы.

Как я уже сказал, это сработало для меня (я мог бы попробовать это на какой-нибудь игрушечной установке, не рискуя). Может ли кто-нибудь просмотреть приведенную выше инструкцию и прокомментировать, работает ли это в целом? Спасибо.

решение4

Это просто - после того, как хост LVEXTEND|LVRESIZE загрузится в ВМ с LiveCD ISO с GPARTED на борту. После завершения загрузки CD запустите GPARTED с именем корневого раздела, используемым ВНУТРИ ВМ:

$ gparted /dev/vda1" # for VirtIO /dev/vda

или

$ gparted /dev/sda1" # for SATA emulated /dev/sda

и выполнить изменение размера раздела обычным способом GPARTED

Связанный контент