Под капотом · Виртуализация · Создание и запуск
Создание ВМ
Пользователь создаёт ВМ из заранее подготовленного XML-файла с её описанием. Вот какую команду он использует:
virsh define vm1.xml
После выполнения команды ничего не запускается: libvirt сохраняет определение, ВМ видна в списке выключенной.
-
пользователь 1. Пользователь вводит команду создания
virDomainDefineXML(xml) # то же самое: virsh define vm1.xml
XML здесь - декларация желаемого состояния, а не команда запуска.
-
libvirt 2. Демон проверяет описание
schema check по formatdomain при ошибке - отказ, объект не создаётся
Опечатка в имени устройства отсекается здесь - до любых действий с дисками и правами.
-
libvirt 3. Описание ложится на диск
конфигурация домена # qemu:///system: каталог конфигов libvirt (обычно /etc/libvirt/qemu)
Persistent-ВМ переживёт выключение. Transient (virsh create) - нет: исчезнет вместе с процессом.
-
libvirt 4. ВМ становится объектом
virDomainPtr state = defined (inactive), id отсутствует
id выдаётся только при запуске - по нему и отличают «определена» от «работает».
-
QEMU 5. QEMU не запускается вообще
нет процесса qemu-system-* нет QMP-сокета /dev/kvm не открыт
Ключевой момент: define - чисто управляющая операция, гипервизор не задействован.
-
пользователь 6. Пользователь видит ВМ в списке
virsh list --all → vm1 shut off
«shut off» здесь означает «определена, но не запущена».