Увеличение LVM диска в виртуальной машине на лету

от автора

Продолжая тему, описанную здесь habrahabr.ru/post/252973, опять пишу про увеличение дисков виртуальных машин.
Конфигурация следующая:
Гипервизор сервер Supermicro с KVM и libvirt на Ubuntu.
Гости — Ubuntu с LVM2.
Задача:
Увеличить размер системного дисков без выключения/перезагрузки гостевой ОС.

В комментариях к предыдущей статье habrahabr.ru/post/252973/#comment_8330673 farcaller написал:

Системный тоже можно на лету отресайзить. Для этого в libvirt есть команда:
virsh qemu-monitor-command resized-virtual-machine —hmp «block_resize $DRIVENAME $NEWSIZE»

Для HA проектов это очень важный момент, необходимо непрерывное функционирование сервиса.
Я решил попробовать изменить размер диска при помощи virsh.
Ниже результаты этого успешного эксперимента.

Коротко это было так:
На гипервизоре:

  • virsh list
  • virsh qemu-monitor-command vm-db —hmp «info block»
  • virsh qemu-monitor-command vm-db —hmp «block_resize drive-virtio-disk0 1000G»

На госте:

  • df -h
  • parted /dev/vda
  • print
  • resizepart 2
  • 1000GB
  • resizepart 5
  • 1000GB
  • q
  • pvresize /dev/vda5
  • lvscan
  • lvextend /dev/vm-db-vg/root -l +100%FREE
  • resize2fs /dev/vm-db-vg/root
  • df -h

профит!

Лог с гипервизора

  root@hyp-0:/local# ls  ca-1-disk-1.qcow2  vm-db-disk-1.qcow2  root@hyp-0:/local# qemu-img info ./vm-db-disk-1.qcow2  image: ./vm-db-disk-1.qcow2 file format: qcow2 virtual size: 800G (858993459200 bytes) disk size: 717G cluster_size: 65536 Format specific information:     compat: 1.1     lazy refcounts: false  root@hyp-0:/local# virsh list   Id    Name                           State ----------------------------------------------------  2      vm-ag-0               		running  3      vm-db                  		running  12    vm-ca-1                 		running  root@hyp-0:/local# virsh qemu-monitor-command  vm-db  --hmp "info block"  drive-virtio-disk0: /local/vm-db-disk-1.qcow2 (qcow2) drive-ide0-1-0: [not inserted]     Removable device: not locked, tray closed   root@hyp-0:/local# virsh qemu-monitor-command vm-db --hmp "block_resize drive-virtio-disk0 1000G"  root@hyp-0:/local#  qemu-img info  /local/vm-db-disk-1.qcow2  image: /local/vm-db-disk-1.qcow2 file format: qcow2 virtual size: 1.0T (1073741824000 bytes) disk size: 717G cluster_size: 65536 Format specific information:     compat: 1.1     lazy refcounts: false root@hyp-0:/local# 

Примерно так выглядит лог с гостя

  root@vm-db:/var/lib/postgresql/9.1/main# df -h  Filesystem                                    Size  Used Avail Use% Mounted on /dev/mapper/vm--db--vg-root  	              730G  671G   22G  97% / none                                          4.0K     0  4.0K   0% /sys/fs/cgro  udev                                           29G  4.0K   29G   1% /dev tmpfs                                         5.8G  360K  5.8G   1% /run none                                          5.0M     0  5.0M   0% /run/lock none                                           29G     0   29G   0% /run/shm none                                          100M     0  100M   0% /run/user /dev/vda1                                     236M   95M  129M  43% /boot  root@vm-db:/sys/block/vda/device# parted /dev/vda  GNU Parted 2.3 Using /dev/vda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) print Model: Virtio Block Device (virtblk) Disk /dev/vda: 1074GB Sector size (logical/physical): 512B/512B Partition Table: msdos  Number  Start   End    Size   Type      File system  Flags  1      1049kB  256MB  255MB  primary   ext2         boot  2      257MB   859GB  859GB  extended  5      257MB   859GB  859GB  logical                lvm  (parted) resizepart 2 End?  [859GB]? 1000GB (parted) print Model: Virtio Block Device (virtblk) Disk /dev/vda: 1074GB Sector size (logical/physical): 512B/512B Partition Table: msdos  Number  Start   End     Size    Type      File system  Flags  1      1049kB  256MB   255MB   primary   ext2         boot  2      257MB   1000GB  1000GB  extended  5      257MB   859GB   859GB   logical                lvm  (parted) resizepart 5 End?  [859GB]? 1000GB (parted) q  root@vm-db:/sys/block/vda/device# lvscan  File descriptor 7 (pipe:[9143432]) leaked on lvscan invocation. Parent PID 5423: bash   ACTIVE            '/dev/vm-db-vg/root' [741.17 GiB] inherit   ACTIVE            '/dev/vm-db-vg/swap_1' [58.59 GiB] inherit  root@vm-db:/sys/block/vda/device# lvextend /dev/vm-db-vg/root -l +100%FREE  File descriptor 7 (pipe:[9143432]) leaked on lvextend invocation. Parent PID 5423: bash   Extending logical volume root to 872.49 GiB   Logical volume root successfully resized  root@vm-db:/sys/block/vda/device# resize2fs /dev/vm-db-vg/root resize2fs 1.42.9 (4-Feb-2014) Filesystem at /dev/vm-db-vg/root is mounted on /; on-line resizing required old_desc_blocks = 47, new_desc_blocks = 55 The filesystem on /dev/vm-db-vg/root is now 228718592 blocks long.  root@vm-db:/sys/block/vda/device# df -h Filesystem                                    Size  Used Avail Use% Mounted on /dev/mapper/vm--db--vg-root  	              859G  678G  140G  83% / none                                          4.0K     0  4.0K   0% /sys/fs/cgroup udev                                           29G  4.0K   29G   1% /dev tmpfs                                         5.8G  364K  5.8G   1% /run none                                          5.0M     0  5.0M   0% /run/lock none                                           29G     0   29G   0% /run/shm none                                          100M     0  100M   0% /run/user /dev/vda1                                     236M   95M  129M  43% /boot 

Хочу предупредить, что цифры в логах могут содержать неточности, я их восстанавливал, чистил и лог гостя собран с 2х виртуальных машин, на которых я успешно отресайзил / диски на лету.
В заключение хочу сказать огромное спасибо farcaller за наводку на действительно нужную возможность.

Продолжать тему?

Никто ещё не голосовал. Воздержавшихся нет.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

ссылка на оригинал статьи http://habrahabr.ru/post/261755/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *