Исходные данные:
Гипервизор на KVM.
Гостевая виртуальная машина — FreeBSD 9.
Диски хранятся в LVM томах.
Задача:
Увеличить дисковое пространство для гостевой машины.
Сначала выключаю гостевую систему:
# sudo virsh shutdown mon
Затем увеличиваю соответствующей машине LVM том. Для уверенности можно посмотреть какой том использует гость:
# sudo virsh domblklist mon
Target Source ------------------------------------------------ hda /dev/vg_noc/nocproject hdb /dev/vg_noc/mongo
Увеличиваю, например на 1G и запускаю гостевую систему:
# sudo lvresize -L+1G /dev/vg_noc/nocproject
# sudo virsh start mon
После загрузки выяснилось, что с диском что-то не так:
# gpart show /dev/ada0 => 34 41942973 ada0 GPT (21G) [CORRUPT] 34 128 1 freebsd-boot (64k) 162 2097152 2 freebsd-ufs (1.0G) 2097314 4194304 4 freebsd-ufs (2.0G) 6291618 8388608 5 freebsd-ufs (4.0G) 14680226 25165696 6 freebsd-ufs (12G) 39845922 2097084 3 freebsd-swap (1G) 41943006 1 - free - (512B)
Пришлось выключать машину и запускаться с LiveCD и чинить файловую систему.
Подключаю к гостю iso:
# sudo virsh attach-disk mon /var/lib/libvirt/images/FreeBSD-9.2-RELEASE-amd64-disc1.iso hdc --type cdrom --mode readonly
В sudo virsh edit mon
указываю, что запускаться надо с cdrom
<os> <type arch='x86_64' machine='rhel6.3.0'>hvm</type> <boot dev='cdrom'/> <boot dev='hd'/> </os>
Из LiveCD уже можно чинить непримонтированный диск:
# gpart recover /dev/ada0
# gpart show /dev/ada0
# gpart show /dev/ada0 => 34 41942973 ada0 GPT (21G) 34 128 1 freebsd-boot (64k) 162 2097152 2 freebsd-ufs (1.0G) 2097314 4194304 4 freebsd-ufs (2.0G) 6291618 8388608 5 freebsd-ufs (4.0G) 14680226 25165696 6 freebsd-ufs (12G) 39845922 2097084 3 freebsd-swap (1G) 41943006 2097153 - free - (1G)
Теперь непосредственно изменение размера диска:
# gpart delete -i 3 ada0
# gpart resize -i 6 -a 4k -s 13G ada0
# gpart add -t freebsd-swap -a 4k ada0
# growfs /dev/ada0p6
Похоже все хорошо. Выключаю гостя. Возвращаю конфигурацию к исходному состоянию и стартую в нормальном режиме.