Управление виртуальными машинами KVM из консоли

В предыдущей статье мы рассмотрели установку гипервизора KVM и создание виртуальной машины. В рамках одной статьи, мы не смогли охватить все нюансы управления виртуальными машинами, а затронули лишь их часть. Сегодня, мы постараемся рассказать все об управлении виртуальными машинами из консоли сервера: как изменить параметры ВМ, добавить дополнительные устройства и рассмотрим основные команды, которые используются для администрирования виртуальных машин KVM.

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

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

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

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

virsh list --all вывести все ВМ на сервере KVM

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

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

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

virsh shutdown включить/выключить виртуальную машину kvm

# 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> — информация о процессоре на виртуальной машине (информацию о железе физического Linux сервера можно получить так)

virsh vcpuinfo информация о процессорах ВМ

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

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

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

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

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

virsh dominfo вывести все настройки виртуальной машины kvm

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

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

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

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

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

# virsh shutdown test-centos

Domain test-centos is being shutdown

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

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

Где:

<vm name>

— имя машины

<vcpu_count>

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

Например:

# virsh setvcpus test-centos 6 --config

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

“error: invalid argument: requested vcpus is greater than max allowable vcpus for the persistent domain: 6 > 4”

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

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

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

virsh setvcpus добавить ядра процессора

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

# virsh dumpxml test-centos

<domain type='kvm'>
<name>test-centos</name>
<uuid>5c7eabea-a180-4f74-af9f-c4c2d3b7f70f</uuid>
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
<vcpu placement='static'>6</vcpu>

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

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

Например:

# virsh setmem test-centos 4G --config

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

“error: invalid argument: cannot set memory higher than max memory.”

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

# virsh setmaxmem test-centos 6G --config

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

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

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

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

# virsh edit <vm_name>

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

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

<domain type='kvm'>
<name>test-centos</name>
<uuid>5c7eabea-a180-4f74-af9f-c4c2d3b7f70f</uuid>
<memory unit='KiB'>6291456</memory>
<currentMemory unit='KiB'>4194304</currentMemory>
<vcpu placement='static'>6</vcpu>
<os>

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

kvm добавить память и процессоры для виртуальной машины через xml

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

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

# virsh reboot <vm_name>

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

xml файл с настройками ВМ KVM

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

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

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

# virsh shutdown test-centos

Domain test-centos is being shutdown

# virsh define /root/test.xml

Domain test-centos defined from /root/test.xml

# virsh start test-centos

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

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

В одной из наших статей, мы описывали процесс расширения и уменьшения дисков виртуальных машин в 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

Domain test-centos is being shutdown

# virsh start test-centos

Domain test-centos started

# virsh dumpxml test-centos

<domain type='kvm' id='14'>
<name>test-centos</name>
<uuid>5c7eabea-a180-4f74-af9f-c4c2d3b7f70f</uuid>
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
<vcpu placement='static'>6</vcpu>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='cdrom'/>
<boot dev='hd'/>
<bootmenu enable='yes'/>
</os>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/vz/disk/test.img'/>
<backingStore/>
<target dev='vdb' bus='virtio'/>
<alias name='virtio-disk1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</disk>

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

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

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

# brctl show

brctl show - сетевые интерфейсы KVM

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

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

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

добавить сетевую карту для вирт. машины kvm

<interface type='bridge'>
<mac address='52:54:00:7e:c1:9f'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<interface type='bridge'>
<mac address='52:54:00:2f:23:79'/>
<source bridge='br0'/>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</interface>

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

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

<interface type='bridge'>
<source bridge='br0'/>
</interface>

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

В данной статье мы затронули основные моменты, которые могут вам понадобиться при управлении виртуальными машинами KVM из консоли Linux сервера. В следующей статье мы рассмотрим управление виртуальными машинами через графический менеджер virt-manager.


Предыдущая статья Следующая статья


Комментариев: 4 Оставить комментарий

Оставить комментарий

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

Я не робот( Обязательно отметьте)