![Как увеличить размер гостевого диска KVM, используя LVM VG в качестве пула хранения?](https://rvso.com/image/632736/%D0%9A%D0%B0%D0%BA%20%D1%83%D0%B2%D0%B5%D0%BB%D0%B8%D1%87%D0%B8%D1%82%D1%8C%20%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%20%D0%B3%D0%BE%D1%81%D1%82%D0%B5%D0%B2%D0%BE%D0%B3%D0%BE%20%D0%B4%D0%B8%D1%81%D0%BA%D0%B0%20KVM%2C%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D1%8F%20LVM%20VG%20%D0%B2%20%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5%20%D0%BF%D1%83%D0%BB%D0%B0%20%D1%85%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%3F.png)
Хост-сервер 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
Вот процедура, которой я следовал:
Расширить логический том гостевой ОС kvm
# lvextend -L+50G /dev/storage_pool/guest.img
Завершите работу гостевой ОС KVM и деактивируйте логический том.
# virsh shutdown guest # lvchange -a n /dev/storage_pool/guest.img
Перечислите и запишите информацию о разделах гостевой системы kvm, самое главное — первый сектор. Если секторы не отображаются, вам может потребоваться добавить переключатель '-u' или '-u sector'
# fdisk -l /dev/storage_pool/guest.img
Удалите и заново создайте раздел, чтобы заполнить все расширенное пространство, убедитесь, что вы используете сектора в качестве единиц измерения и чтобы выбрать тот же первый сектор (обычно 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
Откройте файловую систему 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
Активируйте логический том и запустите гостевую систему kvm.
# lvchange -a y /dev/storage_pool/guest.img # virsh start guest
решение3
Поискав то же самое, я нашел ваш вопрос, на который пока нет ответов. Для меня сработало следующее:
завершите работу гостевой ОС (в моем случае Debian 7.0) обычным способом.
расширить "оригинальный" LV (в VG хоста, конечно), например, на 5G. Для этого вам нужно быть root/sudo на хосте:
lvextend -L +5G /dev/YourStoragePoolVG/YourVirtualMachinesVGToExtend
Откройте новый расширенный логический раздел (т. е. «диск» вашей виртуальной машины) в gparted:
gparted /dev/mapper/YourStoragePoolVG-ВашиВиртуальныеМашиныVGДляРасширения
- Примечание: Выдолжениспользуйте путь "/dev/mapper/...", нет"/dev/dm-77" или "/dev/YourStoragePoolVG/..." или другое (судя по всему, это ошибка/фича LVM)!
- Поэкспериментируйте с разделами на измененном томе (используйте графический интерфейс, как обычно)
- Примечание: примите во внимание предупреждения о потере данных, типах файловых систем и т. д.!
- Примечание: будьте осторожны.
- Вgparted, вы можете изменять размер разделов и перемещать их в таблице разделов, хранящейся на диске virtio внутри логического тома.
- Расширение одного или нескольких разделов IMHO не проблема. Для сокращения раздела/фс используйте Google...
- gparted также адаптирует файловые системы на разделах (а не только сами разделы).
- Перезапустите свою виртуальную машину. Теперь она видит измененные разделы.
Как я уже сказал, это сработало для меня (я мог бы попробовать это на какой-нибудь игрушечной установке, не рискуя). Может ли кто-нибудь просмотреть приведенную выше инструкцию и прокомментировать, работает ли это в целом? Спасибо.
решение4
Это просто - после того, как хост LVEXTEND|LVRESIZE загрузится в ВМ с LiveCD ISO с GPARTED на борту. После завершения загрузки CD запустите GPARTED с именем корневого раздела, используемым ВНУТРИ ВМ:
$ gparted /dev/vda1" # for VirtIO /dev/vda
или
$ gparted /dev/sda1" # for SATA emulated /dev/sda
и выполнить изменение размера раздела обычным способом GPARTED