KVM. Создание и удаление ВМ с помощью virsh и virt-install

В этой статье сначала создадим виртуальный диск в формате qcow2 с помощью команды qemu-img, затем с помощью команды virt-install установим ВМ в режиме консоли.

После этого с помощью virsh удалим созданную ВМ.
Все действия гарантированно работают на CentOS 7.

Проверьте, что у вас установлен и запущен сервис libvirtd:
[admin@kvm ~]$ sudo systemctl status libvirt
libvirtd.service        libvirt-guests.service
[root@kvm ~]# systemctl status libvirt
libvirtd.service        libvirt-guests.service
[root@kvm ~]# systemctl status libvirtd
● libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-02-23 09:54:25 +10; 1 day 3h ago
     Docs: man:libvirtd(8)
           https://libvirt.org
 Main PID: 3139 (libvirtd)
    Tasks: 19 (limit: 32768)
   CGroup: /system.slice/libvirtd.service
           ├─3139 /usr/sbin/libvirtd
           ├─3771 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/defa...
           └─3772 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/defa...

Если нет, то выполните установку KVM:
sudo yum groupinstall "Virtualization Host" -y; sudo yum install virt-install -y 

Создание ВМ

Создайте виртуальный диск объемом 10 Гб:
sudo qemu-img create -o preallocation=metadata -f qcow2 /var/lib/libvirt/images/centos7.qcow2 10G

Запустите установку CentOS 7:
sudo virt-install --virt-type kvm --name centos7 --ram 1024 \
   --disk /var/lib/libvirt/images/centos7.qcow2,format=qcow2 \
   --network network=default \
   --os-type=linux --os-variant=rhel7.0 \
   --location=/home/admin/iso/CentOS-7-x86_64-Minimal-1908.iso \
   --graphics none \
   --console pty,target_type=serial \
   --extra-args 'console=ttyS0,115200n8 serial'

После запуска этой команды вы попадете в консольный режим установки CentOS 7.


Подключиться к ВМ после установки:
virsh console VM_NAME

Удаление ВМ

Смотрим список установленных ВМ:
$ sudo virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     terraform                      shut off

Если ваша ВМ в статусе Runing, то сначала её надо выключить:
# virsh shutdown --domain VM_NAME

Либо выключить принудительно:
# virsh destroy --domain VM_NAME

Посмотреть информацию о ВМ можно с помощью команды virsh dumpxml:
# virsh dumpxml --domain VM_NAME

Запомните, где хранится образ ВМ:
$ sudo virsh dumpxml --domain terraform | grep 'source file'
      <source file='/libvirt/terraform.qcow2'/>

После этого удаляем ВМ:
$ sudo virsh undefine --domain terraform
Domain terraform has been undefined

$ sudo virsh list --all
 Id    Name                           State
----------------------------------------------------

[admin@kvm ~]$

И наконец, удалим образ уничтоженной ВМ:
# rm -rf /libvirt/terraform.qcow2

Ошибка: "cannot delete inactive domain with snapshots"

Вы не сможете удалить ВМ, если у нее есть снапшоты. При попытке удалить ВМ появится ошибка:
error: Failed to undefine domain terraform
error: Requested operation is not valid: cannot delete inactive domain with 2 snapshot

Посмотреть список снапшотов:
# virsh snapshot-list --domain VM_NAME

Name                 Creation Time             State
------------------------------------------------------------
 24feb2020             2020-02-24 13:38:18 -0500 shutoff
 24feb2020u1           2020-02-24 15:04:50 -0500 shutoff

Синтаксис удаления снапшота:
# virsh snapshot-delete --domain VM_NAME --snapshotname SNAPSHOT_NAME

Удаляем снапшоты:
# virsh snapshot-delete --domain terraform --snapshotname 24feb2020
Domain snapshot 24feb2020 deleted

# virsh snapshot-delete --domain terraform--snapshotname 324feb2020u1
Domain snapshot 24feb2020u1 deleted

И проверяем:
# virsh snapshot-list --domain terraform
Name Creation Time State
------------------------------------------------------------

Теперь можно удалить ВМ и её образ.

Комментариев 2

  1. Офлайн
    Петр
    Петр 14 января 2022 13:54
    + +1 -
    Здравствуйте, а какими еще способами можно удалить виртуальную машину? Через ctrl + c еще можно же? 
    1. Офлайн
      yatakoi 17 января 2022 13:24
      + 0 -
      Добрый день.

      Не понимаю цели вопроса. Чем вас не устраивают текущие варианты? Ctrl + c отменяет выполнение команд и не имеет прямого отношения к виртуализации.

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