KVM: Virsh команды управления виртуальной машиной

Thank you for reading this post, don't forget to subscribe!

Для управ­ле­ния ВМ в KVM из кон­со­ли мож­но исполь­зо­вать ути­ли­ту virsh (исполь­зу­ет libvirt API). С помо­щью ути­ли­ты virsh мож­но выпол­нить прак­ти­че­ски все опе­ра­ции с вир­ту­аль­ны­ми маши­на­ми KVM.

# virsh list – пока­зать спи­сок запу­щен­ных ВМ

# virsh list --all – пока­зать спи­сок всех машин (в том чис­ле выключенных)

Как вид­но из скрин­шо­та, в пер­вом слу­чае отклю­чен­ная ВМ не была отображена.

# virsh shutdown <vm name> — выклю­чить вир­ту­аль­ную машину

# virsh start <vm name> — запу­стить вир­ту­аль­ную машину

# virsh suspend <vm name> — при­оста­но­вить вир­ту­аль­ную машину

# virsh resume <vm name> — запу­стить при­оста­нов­лен­ную вир­ту­аль­ную машину

# virsh reboot <vm name> — пере­за­пу­стить вир­ту­аль­ную машину

# virsh destroy <vm name> — уни­что­жить вир­ту­аль­ную машину

# virsh undefine <vm name> — уда­лить маши­ну из спис­ка и уда­лить все фай­лы, при­над­ле­жа­щие ей (обыч­но при­ме­ня­ет­ся после выпол­не­ния коман­ды virsh destroy).

# virsh vcpuinfo <vm name> — инфор­ма­ция о про­цес­со­ре на вир­ту­аль­ной машине

Еще несколь­ко команд по полу­че­нию раз­лич­ной инфор­ма­ции о вир­ту­аль­ной машине:

# virsh domid <vm name> — полу­чить иден­ти­фи­ка­тор вир­ту­аль­ной машины

# virsh domuuid <vm name> — полу­чить UUID вир­ту­аль­ной машины

# virsh dominfo <vm name> — полу­чить све­де­ния о вир­ту­аль­ной машине

# virsh domstate <vm name> — про­смотр состо­я­ния вир­ту­аль­ной машины

# virsh dumpxml <vm name> — выве­сти файл кон­фи­гу­ра­ции ука­зан­ной вир­ту­аль­ной маши­ны в XML формате

Добавление памяти и vCPU виртуальной машине KVM

В кон­со­ли KVM вы може­те доба­вить или умень­шить ресур­сы про­цес­со­ра и памя­ти, выде­лен­ные для ВМ дву­мя способами:

  • С помо­щью virsh
  • Через кон­фи­гу­ра­ци­он­ный XML файл ВМ

Если вир­ту­аль­ная маши­на запу­ще­на, ее нуж­но остановить:

# virsh shutdown test-centos

Теперь с помо­щью virsh изме­ним коли­че­ство вир­ту­аль­ных про­цес­со­ров до 6 (vCPU):

# virsh setvcpus <vm name> <vcpu_count> --config

Где:

— имя машины

— коли­че­ство ядер процессора

Напри­мер:

# virsh setvcpus test-centos 6 --config

Но при при­ме­не­нии этой коман­ды, у меня сра­зу же появи­лась ошибка:

Мы не можем уста­но­вить коли­че­ство ядер про­цес­со­ра, боль­ше, чем мак­си­маль­ное коли­че­ство. Что­бы уве­ли­чить мак­си­маль­ное коли­че­ство ядер ВМ, выпол­ни­те команду:

# virsh setvcpus test-centos 6 --config --maximum

Повто­ри­те первую коман­ду и запу­сти­те вир­ту­аль­ную машину:

Про­ве­рим коли­че­ство про­цес­со­ров в настрой­ках ВМ: овлен­ное коли­че­ство процессоров:

# virsh dumpxml test-centos

Ана­ло­гич­ным обра­зом доба­вим память вир­ту­аль­ной машине:

# virsh setmem <vm_name> <memsize> --config

Напри­мер:

# virsh setmem test-centos 4G --config

Все по той же при­чине, сра­зу же вышла ошибка:

Уве­ли­чим мак­си­маль­ное зна­че­ние памяти::

# virsh setmaxmem test-centos 6G --config

Теперь мож­но уве­ли­чить память ВМ.

Перед все­ми изме­не­ни­я­ми не забы­вай­те оста­нав­ли­вать ВМ, а после запус­кать ее.

Так­же вы може­те изме­нить ресур­сы ВМ KVM через ее кон­фи­гу­ра­ци­он­ный XML файл. Мож­но изме­нить файл в режи­ме онлайн или же сде­лав бэкап XML фай­ла ВМ, изме­нить его и при­ме­нить к вир­ту­аль­ной машине.

Отре­дак­ти­ру­ем XML файл ВМ в онлайн режиме:

# virsh edit <vm_name>

В открыв­шем­ся редак­то­ре vi вне­си­те изме­не­ния, нажав кноп­ку “Insert”.

Изме­ни­те блок:

Напри­мер, зада­дим для ВМ 2 ядра и 1Гб памяти:

Учи­ты­вай­ие что память ука­зы­ва­ет­ся в килобайтах.

Сохра­ни­те изме­не­ния в фай­ле и пере­за­пу­сти­те ВМ:

# virsh reboot <vm_name>

Про­верь­те настрой­ки ВМ:

Тоже самое мож­но сде­лать, сде­лав бэкап XML файла:

# virsh dumpxml <vm_name> > /root/test.xml
# vi /root/test.xml

Изме­ни­те нуж­ные вам пара­мет­ры, сохра­ни­те файл и при­ме­ни­те к вир­ту­аль­ной машине:

# virsh shutdown test-centos

# virsh define /root/test.xml

# virsh start test-centos

Ино­гда при изме­не­нии кон­фи­гу­ра­ци­он­но­го фай­ла ВМ в онлайн режи­ме назна­чен­ные ресур­сы сбра­сы­ва­ют­ся после пере­за­груз­ки. В этом слу­чае выпол­ни­те оста­нов­ку вир­ту­аль­ной маши­ны и после это­го про­сто запу­сти­те ее.

KVM: добавление диска в виртуальную машину

Сна­ча­ла нуж­но создать допол­ни­тель­ный файл дис­ка для вир­ту­аль­ной машины:

# qemu-img create -f qcow2 -o size=20G /vz/disk/test.img

Вме­сто qcow2 вы може­те ука­зать нуж­ный фор­мат дис­ка, так же нуж­но ука­зать путь до фай­ла. У меня хра­ни­ли­ще для дис­ков /vz/disk/.

После это­го, мож­но доба­вить устрой­ство вир­ту­аль­но­го дис­ка к самой ВМ:

# virsh attach-disk <vm_name> /vz/disk/test.img vdb --type disk --persistent

Оста­но­ви­те и запу­сти­те ВМ, про­верь­те что получилось:

# virsh shutdown test-centos

# virsh start test-centos

# virsh dumpxml test-centos

Как видим, диск добав­лен. После дан­ных мани­пу­ля­ций, на вир­ту­аль­ной машине нуж­но раз­ме­тить этот диск под ваши нужды.

KVM: добавление сетевой карты для виртуальной машины

Попрь­у­ем доба­вить допол­ни­тель­ный сете­вой интер­фейс для ВМ. Сна­ча­ла про­ве­рим, какие сете­вые интер­фей­сы созда­ны на хосте:

# brctl show

У меня на KVM сер­ве­ре созда­на одна вир­ту­аль­ная маши­на, с одним сете­вым интер­фей­сом. К br0 нам нуж­но при­кре­пить еще один вир­ту­аль­ный сете­вой интер­фейс. Выпол­ни­те команды:

# virsh shutdown test-centos
# virsh attach-interface test-centos --type bridge --source br0 --persistent
# virsh start test-centos

Про­верь­те, что у ВМ появил­ся допол­ни­тель­ный сете­вой интерфейс:

Так­же вы може­те изме­нить сете­вые настрой­ки вир­ту­аль­ной маши­ны напря­мую через XML файл: # virsh edit test-centos

После пер­во­го сете­во­го интер­фей­са добавь­те сле­ду­ю­щие строки:

Сохра­ни­те файл и запу­сти­те ВМ. Осталь­ную кон­фи­гу­ра­цию, KVM доба­вит сам (mac address и тд).