Текстова утиліта virsh призначена для керування гостьовими системами та гіпервізором.
virsh використовує libvirt API і слугує альтернативою xm та графічному менеджеру віртуальних машин (virt-manager). Непривілейовані користувачі можуть виконувати доступ лише в режимі читання. За допомогою virsh можна виконувати сценарії для віртуальних машин.Огляд команд virsh
Наведені нижче таблиці містять перелік основних параметрів командного рядка virsh.
| Команда | Description |
|---|---|
help |
Коротка довідка. |
list |
Перегляд усіх віртуальних машин. |
dumpxml |
Вивести файл конфігурації XML для заданої віртуальної машини. |
create |
Створити віртуальну машину з файлу конфігурації XML та її запуск. |
start |
Запустити неактивну віртуальну машину. |
destroy |
Примусово зупинити роботу віртуальної машини. |
define |
Визначає файл конфігурації XML для заданої віртуальної машини. |
domid |
Перегляд ідентифікатора віртуальної машини. |
domuuid |
Перегляд UUID віртуальної машини. |
dominfo |
Перегляд відомостей про віртуальну машину. |
domname |
Перегляд імені віртуальної машини. |
domstate |
Перегляд стану віртуальної машини. |
quit |
Закрити інтерактивний термінал. |
reboot |
Перезавантажити віртуальну машину. |
restore |
Відновити збережену у файлі віртуальну машину. |
resume |
Відновити роботу призупиненої віртуальної машини. |
save |
Зберегти стан віртуальної машини у файл. |
shutdown |
Коректно завершити роботу віртуальної машини. |
suspend |
Призупинити роботу віртуальної машини. |
undefine |
Видалити всі файли віртуальної машини. |
migrate |
Перенести віртуальну машину на інший вузол. |
Таблиця 15.1. Команди керування віртуальними машинами
virsh:| Команда | Description |
|---|---|
setmem |
Визначає розмір виділеної віртуальній машині пам'яті. |
setmaxmem |
Обмежує максимально доступний гіпервізору обсяг пам'яті. |
setvcpus |
Змінює кількість наданих гостьовій системі віртуальних процесорів. |
vcpuinfo |
Перегляд інформації про віртуальні процесори. |
vcpupin |
Налаштування відповідностей віртуальних процесорів. |
domblkstat |
Перегляд статистики блокових пристроїв для працюючої віртуальної машини. |
domifstat |
Перегляд статистики мережевих інтерфейсів для працюючої віртуальної машини. |
attach-device |
Підключити визначений у XML-файлі пристрій до гостьової системи. |
attach-disk |
Підключити новий дисковий пристрій до гостьової системи |
attach-interface |
Підключити новий мережевий інтерфейс до гостьової системи |
detach-device |
Відключити пристрій від гостьової системи (приймає ті самі визначення XML, що й attach-device). |
detach-disk |
Відключити дисковий пристрій від гостьової системи. |
detach-interface |
Відключити мережевий інтерфейс від гостьової системи. |
Таблиця 15.2. Параметри керування ресурсами
virsh:| Команда | Description |
|---|---|
version |
Перегляд версії virsh. |
nodeinfo |
Перегляд інформації про гіпервізор. |
Таблиця 15.3. Інші команди
Підключення до гіпервізора
Підключення до сесії гіпервізора за допомогою virsh :
# virsh connect {hostname OR URL}
<name> is the machine name of the hypervisor. To initiate a read-only connection, append the above command with-readonly.Створення XML-файлу конфігурації віртуальної машини
Виведіть файл конфігурації віртуальної машини:
# virsh dumpxml {domain-id, domain-name or domain-uuid}
stdout). You can save the data by piping the output to a file. An example of piping the output to a file called guest.xml:
# virsh dumpxmlGuestID>guest.xml
Цей файл guest.xml може відтворити гостьову систему (див. Редагування файлу конфігурації віртуальної машини. Ви можете редагувати цей XML-файл конфігурації, щоб налаштувати додаткові пристрої або розгорнути додаткові гостьові системи. Див. Розділ 18.1, «Використання файлів конфігурації за допомогою virsh» для отримання додаткової інформації про змінення файлів, створених за допомогоюvirsh dumpxml.
virsh dumpxml:# virsh dumpxml r5b2-mySQL01
<domain type='xen' id='13'>
<name>r5b2-mySQL01</name>
<uuid>4a4c59a7ee3fc78196e4288f2862f011</uuid>
<bootloader>/usr/bin/pygrub</bootloader>
<os>
<type>linux</type>
<kernel>/var/lib/libvirt/vmlinuz.2dgnU_</kernel>
<initrd>/var/lib/libvirt/initrd.UQafMw</initrd>
<cmdline>ro root=/dev/VolGroup00/LogVol00 rhgb quiet</cmdline>
</os>
<memory>512000</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<interface type='bridge'>
<source bridge='xenbr0'/>
<mac address='00:16:3e:49:1d:11'/>
<script path='vif-bridge'/>
</interface>
<graphics type='vnc' port='5900'/>
<console tty='/dev/pts/4'/>
</devices>
</domain>
Створення віртуальної машини на основі файлу конфігурації
Гостьові системи можна створювати з XML-файлів конфігурації. Ви можете скопіювати наявний XML із раніше створених гостьових систем або скористатися параметромdumpxml (див. Створення XML-файлу конфігурації віртуальної машини). Щоб створити гостьову систему за допомогою virsh з XML-файлу:
# virsh create configuration_file.xml
Редагування файлу конфігурації віртуальної машини
Замість використання параметра dumpxml (див. Створення XML-файлу конфігурації віртуальної машини) гостьові системи можна редагувати як під час їх роботи, так і в автономному режимі. Команда virsh edit надає цю функціональність. Наприклад, щоб відредагувати гостьову систему з назвою softwaretesting:
# virsh edit softwaretesting
$EDITOR (за замовчуванням використовується vi).Призупинення віртуальної машини
Команда призупинення віртуальної машини за допомогою virsh:
# virsh suspend {domain-id, domain-name or domain-uuid}
resume(Відновлення роботи віртуальної машини).Відновлення роботи віртуальної машини
Відновити роботу призупиненої віртуальної машини можна за допомогою параметра resume команди virsh:
# virsh resume {domain-id, domain-name or domain-uuid}
suspend і resume.Збереження віртуальної машини
Команда збереження поточного стану віртуальної машини:
# virsh save {domain-name, domain-id or domain-uuid} filename
restore (Відновлення віртуальної машини) option. Save is similar to pause, instead of just pausing a guest the present state of the guest is saved.Відновлення віртуальної машини
Restore a guest previously saved with the virsh save command (Збереження віртуальної машини) using virsh:
# virsh restore filename
Завершення роботи віртуальної машини
Команда завершення роботи:
# virsh shutdown {domain-id, domain-name or domain-uuid}
on_shutdown у її файлі конфігурації.Перезавантаження віртуальної машини
Команда перезавантаження:
#virsh reboot {domain-id, domain-name or domain-uuid}
on_reboot у її файлі конфігурації.Примусова зупинка віртуальної машини
Команда примусової зупинки:
# virsh destroy {domain-id, domain-name or domain-uuid}
virsh destroy can corrupt guest file systems . Use the destroy option only when the guest is unresponsive. For para-virtualized guests, use theshutdown option(Завершення роботи віртуальної машини) instead.Визначення ідентифікатора домену
Команда визначення ідентифікатора домену віртуальної машини:
# virsh domid {domain-name or domain-uuid}
Визначення імені домену
Команда визначення імені домену віртуальної машини:
# virsh domname {domain-id or domain-uuid}
Визначення UUID
Команда визначення універсального ідентифікатора UUID віртуальної машини:
# virsh domuuid {domain-id or domain-name}
virsh domuuid:# virsh domuuid r5b2-mySQL01 4a4c59a7-ee3f-c781-96e4-288f2862f011
Отримання інформації про віртуальну машину
Команда для отримання інформації:
# virsh dominfo {domain-id, domain-name or domain-uuid}
virsh dominfo:# virsh dominfo r5b2-mySQL01 id: 13 name: r5b2-mysql01 uuid: 4a4c59a7-ee3f-c781-96e4-288f2862f011 os type: linux state: blocked cpu(s): 1 cpu time: 11.0s max memory: 512000 kb used memory: 512000 kb
Отримання інформації про вузол
Команда отримання інформації про вузол:
# virsh nodeinfo
virsh nodeinfo:# virsh nodeinfo CPU model x86_64 CPU (s) 8 CPU frequency 2895 Mhz CPU socket(s) 2 Core(s) per socket 2 Threads per core: 2 Numa cell(s) 1 Memory size: 1046528 kb
Перегляд списку віртуальних машин
Команда для перегляду списку віртуальних машин та їхнього стану:
# virsh list
--inactive покаже список неактивних доменів (неактивним вважається той домен, який було визначено, але наразі він не є активним).--all покаже всі віртуальні машини незалежно від їхнього стану. Приклад:# virsh list --all Id Name State ---------------------------------- 0 Domain-0 running 1 Domain202 paused 2 Domain010 inactive 3 Domain9600 crashed
-
running— працюючі віртуальні машини, тобто ті машини, які використовують ресурси процесора в момент виконання команди. -
blocked— заблоковані, непрацюючі машини. Такий статус може бути викликаний очікуванням введення/виведення або перебуванням машини в сплячому режимі. -
paused— призупинені домени. У цей стан вони переходять, якщо адміністратор натиснув кнопку паузи у вікні менеджера віртуальних машин або виконав командуxm pauseабоvirsh suspend. У призупиненому стані гість продовжує споживати ресурси, але не може займати більше процесорних ресурсів. -
shutdown— віртуальні машини, що завершують свою роботу. При отриманні віртуальною машиною сигналу завершення роботи вона почне завершувати всі процеси. Варто зазначити, що деякі операційні системи не відповідають на такі сигнали. -
dying— збійні домени та домени, які не змогли коректно завершити свою роботу. -
crashed— збійні домени, роботу яких було перервано. У цьому стані домени перебувають, якщо не було налаштовано їхнє перезавантаження у разі збою.
Отримання інформації про віртуальні процесори
Команда отримання інформації про віртуальні процесори:
# virsh vcpuinfo {domain-id, domain-name or domain-uuid}
# virsh vcpuinfo r5b2-mySQL01 VCPU: 0 CPU: 0 State: blocked CPU time: 0.0s CPU Affinity: yy
Налаштування відповідностей віртуальних процесорів
Команда зіставлення віртуальних процесорів фізичним:
# virsh vcpupin {domain-id, domain-name or domain-uuid} vcpu, cpulist
vcpu — номер віртуального процесора, а список_cpu — фізичні процесори, які йому зіставляються.Зміна кількості віртуальних процесорів
Команда зміни кількості процесорів для домену:
# virsh setvcpus {domain-name, domain-id or domain-uuid} count
Зміна виділеного обсягу пам'яті
Команда зміни виділеного віртуальній машині обсягу пам'яті:
# virsh setmem {domain-id or domain-name} count
Отримання інформації про блочні пристрої
Команда для отримання інформації про блочні пристрої працюючої віртуальної машини:
# virsh domblkstat GuestName block-device
Отримання інформації про мережеві пристрої
Команда для отримання інформації про мережеві інтерфейси працюючої віртуальної машини:
# virsh domifstat GuestName interface-device
Міграція віртуальних машин
virsh дозволяє переносити віртуальні машини з одного вузла на інший. Для виконання живої міграції просто потрібно вказати параметр --live. Команда перенесення виглядає так:
# virsh migrate --live GuestName DestinationURL
--live не є обов'язковим.GuestName parameter represents the name of the guest which you want to migrate.DestinationURL parameter is the URL or hostname of the destination system. The destination system must run the same version of Fedora, be using the same hypervisor and have libvirt running.Управління віртуальними мережами
У цій секції буде розглянуто керуючі команди virsh. Наприклад, команда перегляду списку віртуальних мереж виглядає так:
# virsh net-list
# virsh net-list Name State Autostart ----------------------------------------- default active yes vnet1 active yes vnet2 active yes
# virsh net-dumpxml NetworkName
# virsh net-dumpxml vnet1
<network>
<name>vnet1</name>
<uuid>98361b46-1581-acb7-1643-85a412626e70</uuid>
<forward dev='eth0'/>
<bridge name='vnet0' stp='on' forwardDelay='0' />
<ip address='192.168.100.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.100.128' end='192.168.100.254' />
</dhcp>
</ip>
</network>
-
virsh net-autostart— автоматичний запуск заданої мережі.имя_сети -
virsh net-create— створення та запуск нової мережі на основі наявного XML-файлу.файл_XML -
virsh net-define— створення нового мережевого пристрою на основі наявного XML-файлу. Пристрій не буде запущено.файл_XML -
virsh net-destroy— видалення заданої мережі.имя_сети -
virsh net-name— перетворення заданого ідентифікатора на ім'я мережі.UUID_сети -
virsh net-uuid— перетворення заданого імені на ідентифікатор UUID.имя_сети -
virsh net-start— запуск неактивної мережі.имя_неактивной_сети -
virsh net-undefine— видалення визначення неактивної мережі.имя_неактивной_сети
