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


Гипервизор


устанавливаем KVM

apt install --no-install-recommends qemu-system libvirt-daemon-system virtinst dnsmasq qemu-utils

замечание: данная команда предназначена для использования в Debian 12


Сеть


выводим список всех сетей

virsh net-list --all

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

cat <<EOF > /tmp/br0
<network>
  <name>br0</name>
  <bridge name='br0' stp='on'/>
  <ip address='192.168.100.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.100.2' end='192.168.100.254'/>
    </dhcp>
  </ip>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
</network>
EOF

создаем определение сети

virsh net-define /tmp/br0

настраиваем автозапуск сети

virsh net-autostart br0

активируем сеть

virsh net-start br0

деактивируем сеть

virsh net-destroy br0

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

virsh net-undefine br0

присоединяем сеть

virsh attach-interface --domain test0 --type bridge --source tmp0 --model virtio --config

отсоединяем сеть

virsh detach-interface --domain test0 --type bridge --mac 00:11:22:33:44:55 --config


Пул


выводим список всех пулов

virsh pool-list --all

создаем папку для пула

mkdir /mnt/pool0

создаем временный файл с конфигурацией пула

cat <<EOF > /tmp/pool0
<pool type='dir'>
  <name>pool0</name>
  <target>
    <path>/mnt/pool0</path>
    <permissions>
      <mode>0755</mode>
      <owner>0</owner>
      <group>0</group>
    </permissions>
  </target>
</pool>
EOF

создаем определение пула

virsh pool-define /tmp/pool0

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

virsh pool-autostart pool0

активируем пул

virsh pool-start pool0

деактивруем пул

virsh pool-destroy pool0

удаляем определение пула

virsh pool-undefine pool0


Раздел


создаем временный файл с конфигурацией раздела

cat <<EOF > /tmp/vol0
<volume type='file'>
  <name>vol0</name>
  <capacity unit='G'>20</capacity>
  <target>
    <format type='qcow2'/>
  </target>
</volume>
EOF

создаем раздел

virsh vol-create pool0 /tmp/vol0

удаляем раздел

virsh vol-delete vol0 pool0

присоединяем раздел

virsh attach-disk --domain test0 --source /mnt/pool0/tmp0 --target vdb --driver qemu --subdriver qcow2 --config

отсоединяем раздел

virsh detach-disk --domain test0 --target vdb --config


ВМ


выводим список всех ВМ

virsh list --all

выводим список всех типов ВМ

virt-install --osinfo list

создаем ВМ

virt-install --name test0 --osinfo debian11 --cpu host-passthrough --vcpus 4 --memory 4096 --graphics vnc,listen=1.2.3.4 --disk /mnt/pool0/vol0,bus=virtio --network bridge=br0,model=virtio --noautoconsole --noreboot --import

запускаем ВМ

virsh start test0

приостанавливаем работу ВМ

virsh suspend test0

возобновляем работу ВМ

virsh resume test0

завершаем работу ОС ВМ

virsh shutdown test0 --mode acpi

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

virsh destroy test0

перезагружаем ОС ВМ

virsh reboot test0

перезапускаем ВМ принудительно

virsh reset test0


VNC


получаем прослушиваемый ВМ порт

virsh dumpxml test0 | grep vnc | sed -rn "s/.port='([0-9])'.*/\1/p"

подключаемся к ВМ с использованием любого VNC-клиента


ISO


входим в режим редактирования конфигурации ВМ

virsh edit test0

добавляем строки

<device>
  ...
  <disk type='file' device='cdrom'>
    <source file='/home/ISO/debian-12.2.0-amd64-netinst.iso'/>
    <target dev='hda' bus='sata'/>
    <readonly/>
  </disk>
  ...
</device>

изменяем строки

<os>
  ...
  <boot dev='cdrom'/>
  ...
</os>

перезапускаем ВМ


Клонирование


останавливаем ВМ

клонируем ВМ

virt-clone --original test0 --name test99 --file /mnt/pool0/vol99

замечание: если к ВМ подключены несколько дисков, то они должны быть перечислены с использованием параметра "--file" в том же порядке, в котором они указаны в XML-описании ВМ


Снимки


выводим список всех снимков

virsh snapshot-list test0

создаем временный файл с конфигурацией снимка

cat <<EOF > /tmp/snapshot0
<domainsnapshot>
  <name>snapshot0</name>
</domainsnapshot>
EOF

создаем снимок

virsh snapshot-create --atomic --domain test0 --xmlfile /tmp/snapshot0

применяем снимок

virsh snapshot-revert --domain test0 --snapshotname snapshot0

удаляем снимок

virsh snapshot-delete --domain test0 --snapshotname snapshot0


Мониторинг


использование ЦП

virsh vcpuinfo --domain test0

использование памяти

virsh dommemstat --domain test0

информация о сетевых интерфейсах

virsh domifaddr --domain test0


Ссылки


Network XML format - https://libvirt.org/formatnetwork.html
Storage pool and volume XML format - https://libvirt.org/formatstorage.html
Domain XML format - https://libvirt.org/formatdomain.html
Snapshot XML format - https://libvirt.org/formatsnapshot.html
Manual Snapshots - https://libvirt.org/kbase/snapshots.html

Добавить комментарий