Поиск по сайту:

Управляйте виртуальными машинами KVM с помощью программы Virsh

Virsh, сокращение от VirtualShell, представляет собой пользовательский интерфейс командной строки для управления виртуальными гостевыми машинами. Virsh позволяет создавать, просматривать, редактировать, запускать, перезапускать, останавливать, приостанавливать, возобновлять, завершать работу и удалять виртуальные машины. В настоящее время он поддерживает KVM, LXC, Xen, QEMU, OpenVZ, VirtualBox и VMware ESX. В этом руководстве мы обсудим, как управлять виртуальными машинами KVM с помощью пользовательского интерфейса управления Virsh в Linux.

Убедитесь, что на вашем компьютере с Linux установлены утилита KVM и Virsh. В следующих руководствах объясняется, как установить KVM в системах на базе DEB и RPM.

  • Установка и настройка KVM на безголовом сервере Ubuntu 20.04
  • Установка и настройка KVM на сервере CentOS 8
  • Установка и настройка KVM в OpenSUSE Tumbleweed

1. Управляйте виртуальными машинами KVM с помощью команды Virsh.

Если вы новичок в Virsh и KVM, лучше начать с чтения справочного руководства. Это даст базовое представление о том, как использовать Virsh.

1.1. Получать помощь

Введите следующую команду, чтобы просмотреть список доступных команд с кратким описанием:

virsh help

Вы увидите обширный список доступных команд virsh для управления виртуальными машинами KVM из командной строки.

Отобразить раздел справки по командам virsh

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

Команды сгруппированы в следующие разделы:

  • Управление доменом,
  • Мониторинг домена,
  • Хост и гипервизор,
  • Контрольно-пропускной пункт,
  • Интерфейс,
  • сетевой фильтр,
  • сеть,
  • Узловое устройство,
  • Секрет,
  • Снимок,
  • Резервное копирование,
  • Пул хранения,
  • Объем хранения,
  • Сам Вирш.

Каждый раздел содержит команды, связанные с выполнением определенного набора задач. Вы можете просмотреть раздел справки группы, например Сеть, как показано ниже:

virsh help Networking

Вы увидите команды, связанные с выполнением сетевых задач:

 Networking (help keyword 'network'):
    net-autostart                  autostart a network
    net-create                     create a network from an XML file
    net-define                     define an inactive persistent virtual network or modify an existing persistent one from an XML file
    net-destroy                    destroy (stop) a network
    net-dhcp-leases                print lease info for a given network
    net-dumpxml                    network information in XML
    net-edit                       edit XML configuration for a network
    net-event                      Network Events
    net-info                       network information
    net-list                       list networks
    net-name                       convert a network UUID to network name
    net-start                      start a (previously defined) inactive network
    net-undefine                   undefine a persistent network
    net-update                     update parts of an existing network's configuration
    net-uuid                       convert a network name to network UUID
    net-port-list                  list network ports
    net-port-create                create a network port from an XML file
    net-port-dumpxml               network port information in XML
    net-port-delete                delete the specified network port

Вы также можете отобразить раздел справки по конкретной команде. Например, я собираюсь отобразить раздел справки по команде "net-name":

virsh help net-name
  NAME
    net-name - convert a network UUID to network name

  SYNOPSIS
    net-name <network>

  OPTIONS
    [--network] <string>  network uuid

1.2. Получение списка виртуальных машин

Чтобы просмотреть список гостевых виртуальных машин в режиме запуска или приостановки, выполните следующую команду:

virsh list
Id Name State
--------------------

Как видите, в режиме работы или приостановки гостей нет.

Вы можете использовать параметр --inactive для отображения неактивных гостей.

Чтобы просмотреть все гостевые машины, запустите:

virsh list --all
 Id   Name            State
--------------------------------
 -    centos8-uefi    shut off
 -    nginx_centos8   shut off

Как вы видите в приведенном выше выводе, у меня есть две виртуальные машины, а именно «centos8-uefi» и «nginx_centos8». Оба отключены.

1.3. Запустить виртуальные машины

Чтобы запустить виртуальную машину, например «centos8-uefi», выполните:

virsh start centos8-uefi

Вы увидите результат, как показано ниже:

Domain centos8-uefi started

Чтобы проверить, запущена ли виртуальная машина, используйте команду "list":

virsh list
 Id   Name           State
------------------------------
 1    centos8-uefi   running

1.4. Сохранить виртуальные машины

Чтобы сохранить текущее состояние работающей виртуальной машины, запустите:

virsh save centos8-uefi centos8-save

Domain centos8-uefi saved to centos8-save

Эта команда останавливает гостя с именем «centos8-uefi» и сохраняет данные в файл с именем «centos8-save». Это займет несколько минут в зависимости от объема памяти, используемой вашей гостевой машиной.

1,5. Восстановление виртуальных машин

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

virsh restore centos8-save 
Domain restored from centos8-save

Проверьте, восстановлена ли виртуальная машина, с помощью команды «list»:

virsh list
 Id   Name           State
------------------------------
 4    centos8-uefi   running

1.6. Перезагрузите виртуальные машины.

Чтобы перезапустить работающую виртуальную машину, выполните:

virsh reboot centos8-uefi
Domain centos8-uefi is being rebooted

1.7. Приостановить/приостановить виртуальные машины

Чтобы приостановить работающую виртуальную машину, выполните:

virsh suspend centos8-uefi 
Domain centos8-uefi suspended

Проверьте это с помощью команды «list»:

virsh list
 Id   Name           State
-----------------------------
 1    centos8-uefi   paused

1.8. Возобновить виртуальные машины

Чтобы возобновить работу приостановленной виртуальной машины, выполните:

virsh resume centos8-uefi 
Domain centos8-uefi resumed

1.9. Остановить активные виртуальные машины

Чтобы принудительно остановить активную виртуальную машину и оставить ее в неактивном состоянии, выполните:

virsh destroy centos8-uefi
Domain centos8-uefi destroyed

Вы также можете корректно остановить виртуальную машину вместо принудительного ее использования, как показано ниже:

virsh destroy centos8-uefi --graceful
Domain centos8-uefi destroyed

1.10. Выключение виртуальных машин

Чтобы выключить работающую виртуальную машину, выполните:

virsh shutdown centos8-uefi
Domain centos8-uefi is being shutdown

1.11. Получение XML-дампа виртуальных машин

Чтобы отобразить XML-файл конфигурации виртуальной машины в стандартном выводе, выполните:

virsh dumpxml centos8-uefi

Эта команда отобразит полную информацию о конфигурации (программном и аппаратном обеспечении) виртуальной машины:

Отображение XML-файла конфигурации виртуальных машин

Вы также можете экспортировать дамп XML в файл вместо того, чтобы просто отображать его в стандартном выводе, как показано ниже:

virsh dumpxml centos8-uefi > centos8.xml

Эта команда выгрузит XML-файл «centos8-uefi» в файл с именем «centos8.xml» и сохранит его в текущем рабочем каталоге.

1.12. Создание виртуальных машин с дампом XML

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

virsh create centos8.xml 
Domain centos8-uefi created from centos8.xml

Эта команда создаст новую виртуальную машину и немедленно запустит ее. Вы можете проверить это с помощью команды:

Создание виртуальных машин с дампом XML

1.13. Редактировать XML-файл конфигурации виртуальных машин.

Если вы хотите внести какие-либо изменения в гостевую машину, вы можете просто отредактировать ее файл конфигурации и внести изменения по своему усмотрению. Гостей можно редактировать как во время их работы, так и в автономном режиме.

virsh edit centos8-uefi

Эта команда откроет файл в редакторе по умолчанию, который вы установили с помощью переменной $EDITOR.

1.14. Включить доступ к консоли для виртуальных машин

После создания гостевых машин KVM вы можете получить к ним доступ через SSH, VNC-клиент, Virt-viewer, Virt-manager, веб-консоль Cockpit и т. д. Однако вы не можете получить к ним доступ с помощью команды «virsh console». Команда console используется для подключения виртуальной последовательной консоли для гостя. Чтобы получить доступ к гостям KVM с помощью команды «virsh console», вам необходимо включить доступ к последовательной консоли на гостевой машине. Обратитесь к следующему руководству, чтобы включить доступ к консоли virsh:

  • Как включить доступ к консоли Virsh для гостей KVM

1.15. Переименуйте виртуальные машины

Если вы когда-нибудь хотели переименовать виртуальную машину, обратитесь к следующему руководству.

  • Как переименовать гостевую виртуальную машину KVM

1.16. Отображение идентификатора домена виртуальных машин

Чтобы найти идентификатор домена работающей гостевой виртуальной машины, выполните:

virsh domid centos8-uefi
2

Обратите внимание, что гость должен запуститься, чтобы получить идентификатор своего домена.

1.17. Отображение доменного имени виртуальных машин

Чтобы получить доменное имя работающей виртуальной машины, выполните:

virsh domname <domain-id or domain-uuid>

Пример:

virsh domname 2
centos8-uefi

Здесь 2 — идентификатор домена.

1.18. Отображение UUID виртуальных машин

Чтобы найти UUID гостевой машины, запустите:

virsh domuuid <domain-name or domain-id>

Пример:

virsh domuuid centos8-uefi

Или,

 virsh domuuid 2

Пример вывода:

de4100c4-632e-4c09-8dcf-bbde29170268

1.19. Отображение сведений о виртуальных машинах

Чтобы отобразить информацию о гостевой машине, используйте имя домена, идентификатор домена или uuid домена, как показано ниже:

virsh dominfo centos8-uefi

Или,

virsh dominfo 2

Или,

virsh dominfo de4100c4-632e-4c09-8dcf-bbde29170268

Пример вывода:

Id:             -
Name:           centos8-uefi
UUID:           de4100c4-632e-4c09-8dcf-bbde29170268
OS Type:        hvm
State:          shut off
CPU(s):         2
Max memory:     2097152 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: apparmor
Security DOI:   0

Отображение сведений о виртуальных машинах

1.20. Отображение информации о хосте KVM

Чтобы получить информацию о вашей хост-системе, запустите:

virsh nodeinfo

Пример вывода:

CPU model:           x86_64
CPU(s):              4
CPU frequency:       1167 MHz
CPU socket(s):       1
Core(s) per socket:  2
Thread(s) per core:  2
NUMA cell(s):        1
Memory size:         8058840 KiB

1.21. Отображение информации о виртуальном процессоре

Чтобы отобразить информацию о виртуальном процессоре, запустите:

virsh vcpuinfo <domain-id or domain-name or domain-uuid>

Пример:

virsh vcpuinfo centos8-uefi
VCPU: 0
CPU: 3
State: running
CPU time: 5.6s
CPU Affinity: yyyy

VCPU: 1
CPU: 1
State: running
CPU time: 0.0s
CPU Affinity: yyyy

1.22. Найти IP-адрес виртуальных машин

Найти IP-адрес виртуальной машины не составляет большого труда. Если у вас есть консольный доступ к виртуальной машине, вы можете легко узнать ее IP-адрес с помощью команды «ip». Однако также возможно определить IP-адрес виртуальной машины KVM без доступа к ее консоли. В следующем руководстве объясняется, как найти IP-адрес виртуальной машины KVM.

  • Как узнать IP-адрес виртуальной машины KVM

1.23. Удалить виртуальные машины

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

virsh destroy centos8-uefi
virsh undefine centos8-uefi

Первая команда принудительно остановит виртуальную машину, если она уже запущена. А вторая команда отменит и полностью удалит его.

Вы также можете использовать следующие параметры для удаления томов хранилища и снимков.

--managed-save remove domain managed state file
--storage remove associated storage volumes (comma separated list of targets or source paths) (see domblklist)
--remove-all-storage remove all associated storage volumes (use with caution)
--delete-storage-volume-snapshots delete snapshots associated with volume(s)
--wipe-storage wipe data on the removed volumes
--snapshots-metadata remove all domain snapshot metadata (vm must be inactive)

2. Управление виртуальными сетями

Надеюсь, вы узнали, как управлять виртуальными машинами KVM с помощью команды Virsh в Linux. В этом разделе перечислены важные команды для управления виртуальными сетями KVM в Linux с помощью утилиты командной строки virsh.

2.1. Получение списка виртуальных сетей

Чтобы просмотреть список доступных виртуальных сетей, выполните:

virsh net-list 
 Name      State    Autostart   Persistent
--------------------------------------------
 default   active   yes         yes

Как видите, у меня есть только одна виртуальная сеть, которая используется по умолчанию.

2.2. Отображение сведений о виртуальной сети

Чтобы просмотреть сведения о виртуальной сети, запустите:

virsh net-dumpxml default

Замените «default» на имя вашей сети в приведенной выше команде.

Пример вывода:

<network connections='1'>
  <name>default</name>
  <uuid>ce25d978-e455-47a6-b545-51d01bcb9e6f</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:ee:35:49'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

2.3. Запустить виртуальные сети

Чтобы запустить неактивную сеть, запустите:

virsh net-start <Name-Of-Inactive-Network>

Чтобы автоматически запустить сеть:

virsh net-autostart <network-name>

2.4. Создание XML-дампа виртуальных сетей

Чтобы создать XML-файл конфигурации существующей виртуальной сети, выполните:

virsh net-dumpxml default > default.xml

Приведенная выше команда создаст XML-конфигурацию сети «по умолчанию» и сохранит ее в файле с именем «default.xml» в текущем каталоге.

Вы можете просмотреть XML-файл с помощью команды cat:

cat default.xml 
<network connections='1'>
  <name>default</name>
  <uuid>ce25d978-e455-47a6-b545-51d01bcb9e6f</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:ee:35:49'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

2.5. Создание новых виртуальных сетей из файла XML

Чтобы создать новую виртуальную сеть с использованием существующего XML-файла и немедленно запустить ее, выполните:

virsh net-create <Name-of-XMLfile>

Если вы хотите создать сеть из XML-файла, но не хотите запускать ее автоматически, запустите:

virsh net-define <Name-of-XMLfile>

2.6. Деактивировать виртуальные сети

Чтобы деактивировать активную сеть, запустите:

virsh net-destroy <network-name>

2.7. Удаление виртуальных сетей

Чтобы удалить виртуальную сеть, сначала деактивируйте ее, как показано выше, а затем запустите:

virsh net-undefine <Name-Of-Inactive-Network>

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

Более подробную информацию можно найти на страницах руководства virsh.

man virsh

3. Управляйте гостями KVM графически

Запомнить все команды virsh практически невозможно, да и не нужно. Если вам сложно выполнять все задачи управления KVM из командной строки, вы можете попробовать графические инструменты управления KVM, такие как Virt-manager и Cockpit.

  • Управление виртуальными машинами KVM с помощью веб-консоли Cockpit
  • Как управлять виртуальными машинами KVM с помощью Virt-Manager

Заключение

Если вы знаете, как управлять виртуальными машинами KVM с помощью пользовательского интерфейса управления Virsh в Linux, вы уже на полпути к управлению средой виртуализации корпоративного уровня. Настройка KVM и управление виртуальными машинами KVM с помощью команды virsh очень важны для всех администраторов Linux.

Избранное изображение Элиаса Ш. с сайта Pixabay.

Статьи по данной тематике