Утилита virsh является интерфейсом для управления гостевыми доменами. Эту утилиту можно использовать для создания, остановки, выключения и вывода информации о ВМ. virsh использует libvirt, который является инструментом для работы с возможностями виртуализации в современных версиях ОС семейства Linux и других. В ПК СВ "Брест" virsh используется для обслуживания ВМ серверов управления и контроллера домена.

Основные команды утилиты virsh приведены в таблице ниже. Для использования утилиты в интерфейсе командной строки необходимо ввести:

sudo virsh <команда> <аргумент> <параметр>

КомандаАргументПараметрОписание

create

<шаблон_ВМ>.xml-

Создание ВМ из шаблона в формате xml

Диск для новой ВМ уже должен существовать.

--console

После создания ВМ подключиться к консоли

--paused

Приостановить ВМ сразу после создания

-validate

Проверить xml на соответствие схеме

define

<шаблон_ВМ>.xml-

Зарегистрировать ВМ из шаблона в формате xml, но не запускать ее

Диск для новой ВМ уже должен существовать.

-validate

Проверить xml на соответствие схеме

destroy

<имя_ВМ>-

Остановить ВМ

Диск и шаблон ВМ сохранятся.

--graceful

Плавно остановить работу ВМ

edit

<имя_ВМ>

-

Редактировать текущий xml шаблон ВМ

--skip-validate

Пропустить проверку XML на соответствие схеме

Не рекомендуется.

attach-device

Пример

Примеры конфигураций xml

 https://libvirt.org/formatdomain.html#devices.

<имя_ВМ> <имя_созданного_конфигурационного_файла_устройства>.xml

-

Подключить устройство из XML-файла (в качестве конфигурации)

--persistent

Создать постоянную конфигурацию, сохранив сделанные изменения

--config

Подключить устройство из XML-файла с сохранением после перезагрузки

--live

Применить к работающей ВМ

--current

Применить к текущей ВМ

attach-disk


<имя_ВМ> <путь_к_диску> <имя_диска_внутри_ВМ>

-

Прикрепить дисковое устройство

--targetbus <строка>

Тип эмулируемого устройства (idescsivirtioxenusbsata, или sd)

--driver <строка>

Драйвер дискового устройства (file, tap или phy )

--subdriver <строка>

Субдрайвер дискового устройства ( raw, qcow2)

--iothread <строка>

Поток ввода-вывода для сопоставления устройству

--cache <строка>

Режим кэширования дискового устройства (default, none, writethrough, writeback, directsync или unsafe)

--io <строка>

Политика ввода-вывода дискового устройства (threads, native и io_uring)

--type <строка>

Тип целевого устройства (disk, lun, cdrom или floppy)

--mode <строка>

Режим доступа

--sourcetype <строка>

Тип ресурса (blockfile или network)

--serial <строка>

Серийный номер дискового устройства

--wwn <строка>

WWN дискового устройства

--alias <строка>

Пользовательское альтернативное название дискового устройства

--rawio

Требует поддержки rawio

--address <строка>

Адрес дискового устройства

--multifunction

Идентифицировать PCI-устройство с указанным адресом как многофункциональное

--print-xml

Вывести XML-файл и не присоединять диск

--source-protocol <строка>

Протокол, использующий ресурс диска 

--source-host-name <строка>

Имя сервера виртуализации 

--source-host-transport <строка>

Протокол доступа к дисковому устройству на сервере виртуализации

--source-host-socket <строка>

Локальный сокет дискового устройства на сервере виртуализации

--persistent

Создать постоянную конфигурацию, сохранив сделанные изменения

--config

С сохранением после перезагрузки

--live

Применить к работающему ВМ

--current

Применить к текущему ВМ

attach-interface

<имя_ВМ> <тип_сетевого_интерфейса> <источник_сетевого_интерфейса>

-

Подключить сетевой интерфейс

--type

Тип сетевого интерфейса (network, bridge, direct, hostdev, vhostuser)

--target <строка>

Имя целевой сети

--mac <строка>

MAC-адрес

--script <строка>

Сценарий для подключения сетевого интерфейса

--model <строка>

Тип модели

--alias <строка>

Пользовательское альтернативное название устройства интерфейса

--inbound <строка>

Управление входящим трафиком

--outbound <строка>

Управление исходящим трафиком

--persistent

Создать постоянную конфигурацию, сохранив сделанные изменения

--config

С сохранением после перезагрузки

--live

Применить к работающей ВМ

--current

Применить к текущей ВМ

--print-xml

Вывести XML-файл и не присоединять интерфейс

--managed libvirt

Автоматически отсоединяет или подсоединяет устройство к основной системе

--source-mode <строка>

Параметр режима элемента <source/> 

detach-device

<имя_ВМ> <имя_созданного_конфигурационного_файла_устройства>.xml

-

Отсоединить устройство от XML-файла (в виде конфигурации)

--persistent

Создать постоянную конфигурацию, сохранив сделанные изменения

--config

С сохранением после перезагрузки

--live

Применить к работающей ВМ

--current

Применить к текущей ВМ

detach-disk

<имя_ВМ> <имя_устройства_в_ВМ>

-

Отсоединить дисковое устройство

--persistent

Создать постоянную конфигурацию, сохранив сделанные изменения

--config

С сохранением после перезагрузки

--live

Применить к работающей ВМ

--current

Применить к текущей ВМ

--print-xml

Вывести XML-файл и не отсоединять диск

detach-interface

<имя_ВМ> <тип_сетевого_интерфейса

-

Отсоединить сетевой интерфейс из файла XML

--type <строка> 

Тип сетевого интерфейса

--mac <строка>

MAC-адрес

--persistent

Создать постоянную конфигурацию, сохранив сделанные изменения

--config

С сохранением после перезагрузки

--live

Применить к работающей ВМ

--current

Применить к текущей ВМ

--print-xml

Вывести XML-файл перед отсоединением интерфейса

update-memory-device

<имя_ВМ>

-

Обновить устройство памяти ВМ

--config

С сохранением после перезагрузки

--live

Применить к работающей ВМ

--current

Применить к текущей ВМ

--print-xml

Вывести обновленный XML-файл устройства памяти, без изменений

--alias <строка>

Название устройства памяти

--node <число>

Целевой узел устройства памяти

--requested-size <число>

Новое значение размера <requested/>, как целое число (по умолчанию кбит)

blockresize

<имя_ВМ> <путь_до_диска> <новый_размер_диска_в_КиБ_по_умолчанию>

-

Изменение размера блочного устройства ВМ.

change-media

<имя_ВМ> <путь_до_носителя_для_CD_ROM>

-

Сменить носитель компакт-диска или флоппи-дисковода

--source <строка>

Путь к носителю с данными

--eject

Извлечь носитель

--insert

Вставить носитель

--update

Обновить носитель

--current

Может быть одним из значений или обоими значениями --live и --config, зависит от реализации драйвера сервера виртуализации

--live

Изменить активную конфигурацию работающего ВМ

--config

Изменить сохранённую конфигурацию (изменения вступят в силу после перезагрузки)

--force

Принудительная смена носителя

--print-xml

Вывести XML-файл, но не менять носитель

--block

Носитель источника является блочным устройством

Пример

Подключение сетевого интерфейса:

virsh attach-interface --domain vsrxVM --type bridge --source virbr0 --target vsrx-mgmt --model virtio
  • если ВМ выключена:
    sudo virsh attach-interface --domain ИМЯ_ВМ --type bridge --source имя_соединения --model virtio --config --persistent
  • если ВМ включена:
    sudo virsh attach-interface --domain ИМЯ_ВМ --type bridge --source имя_соединения --model virtio --live --persistent