У попередній статті ми розглянули установку гипервизора КВМ і створення віртуальної машини. В рамках однієї статті, ми не змогли охопити всі нюанси управління віртуальними машинами, а торкнулися лише їх частину. Сьогодні, ми постараємося розповісти все про управління віртуальними машинами з консолі сервера: як змінити параметри ВМ, додати додаткові пристрої і розглянемо основні команди, які використовуються для адміністрування віртуальних машин KVM.
Virsh: команди управління віртуальною машиною KVM
Перше питання, яке виникає у початківця адміністратора KVM: як побачити створені віртуальні машини, як зупинити, запустити і видалити їх. Для управління ВМ в KVM з консолі можна використовувати утиліту вірш (Використовує 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 ви можете додати або зменшити ресурси процесора і пам’яті, виділені для ВМ двома способами:
- За допомогою вірш
- через конфігураційний 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 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Гб пам’яті:
Учітивайіе що пам’ять вказується в кілобайтах.
Збережіть зміни у файлі і запустіть ВМ:
# 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.