У попередній статті ми розглянули установку гипервизора КВМ і створення віртуальної машини. В рамках однієї статті, ми не змогли охопити всі нюанси управління віртуальними машинами, а торкнулися лише їх частину. Сьогодні, ми постараємося розповісти все про управління віртуальними машинами з консолі сервера: як змінити параметри ВМ, додати додаткові пристрої і розглянемо основні команди, які використовуються для адміністрування віртуальних машин KVM.

Virsh: команди управління віртуальною машиною KVM

Перше питання, яке виникає у початківця адміністратора KVM: як побачити створені віртуальні машини, як зупинити, запустити і видалити їх. Для управління ВМ в KVM з консолі можна використовувати утиліту вірш (Використовує 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 ви можете додати або зменшити ресурси процесора і пам’яті, виділені для ВМ двома способами:

  • За допомогою вірш
  • через конфігураційний XML Файл VM

Якщо віртуальна машина запущена, її потрібно зупинити:

# 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>

У відкритому редакторі ми внесіть зміни, натиснувши кнопку “Вставити”.

Редагувати блок:

<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.

Leave a Reply

Your email address will not be published. Required fields are marked *