0

Изменение размера диска FreeBSD гостя

Исходные данные:
Гипервизор на 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

Похоже все хорошо. Выключаю гостя. Возвращаю конфигурацию к исходному состоянию и стартую в нормальном режиме.

Alexey Egorychev

FreeBSD and Linux sysadmin. Know many systems like mailsystems, DB, WWW stack. Automation with salt, ansible. Monitoring with nagios, zabbix.