В предыдущей статье мы рассмотрели установку гипервизора KVM и создание виртуальной машины. В рамках одной статьи, мы не смогли охватить все нюансы управления виртуальными машинами, а затронули лишь их часть. Сегодня, мы постараемся рассказать все об управлении виртуальными машинами из консоли сервера: как изменить параметры ВМ, добавить дополнительные устройства и рассмотрим основные команды, которые используются для администрирования виртуальных машин KVM.
Virsh: команды управления виртуальной машиной KVM
Первый вопрос, который возникает у начинающего администратора KVM: как увидеть созданные виртуальные машины, как остановить, запустить и удалить их. Для управления ВМ в 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>
— информация о процессоре на виртуальной машине (информацию о железе физического Linux сервера можно получить так)
Еще несколько команд по получению различной информации о виртуальной машине:
# 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
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 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Гб памяти:
Сохраните изменения в файле и перезапустите ВМ:
# virsh reboot <vm_name>
Проверьте настройки ВМ:
Тоже самое можно сделать, сделав бэкап 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
У меня на KVM сервере создана одна виртуальная машина, с одним сетевым интерфейсом. К br0 нам нужно прикрепить еще один виртуальный сетевой интерфейс. Выполните команды:
# virsh shutdown test-centos
# virsh attach-interface test-centos --type bridge --source br0 --persistent
# virsh start test-centos
Проверьте, что у ВМ появился дополнительный сетевой интерфейс:
<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.