Как libvirt взаимодействует с kvm?

Я пытаюсь лучше понять, как libvirt взаимодействует с KVM, чтобы иметь возможность запускать экземпляры KVM из одного процесса на хост-компьютере, который я разрабатываю.

Использует ли он ioctl, как qemu-kvm? Использует ли он какой-то удаленный обмен сообщениями, такой как dbus, или прямой обмен сообщениями с локальным сокетом (я склоняюсь к локальному сокету)? Или у него есть прямая привязка к ABI ядра для KVM?

Возможно ли (как возможно выше в ядре, а не в ядре) (и не самая плохая идея) обойти libvirt и напрямую общаться с KVM способом, который использует libvirt? (Эта часть больше любопытна)


person Christian Grabowski    schedule 22.08.2016    source источник


Ответы (1)


С технической точки зрения, libvirt вообще не общается с KVM. KVM — это модуль ядра, используемый QEMU для обеспечения виртуализации ЦП. Libvirt управляет QEMU и позволяет QEMU работать с KVM. Можно написать различные приложения пользовательского пространства для использования KVM — kvmtool является одной из таких альтернатив QEMU, которая использует модуль ядра KVM. Libvirt взаимодействует с QEMU через протокол монитора QEMU после запуска начального процесса.

person DanielB    schedule 21.12.2016