Перейти к содержимому

KVM

Коротко

Гипервизор в Linux kernel. CPU через Intel VT-x / AMD-V, память через EPT/NPT.

QEMU делает device emulation и IO в userspace, KVM - CPU и memory в kernel.

libvirt - management layer поверх QEMU/KVM с единым API.

Стек

guest VM
  |
QEMU (vCPU threads, devices)
  |
/dev/kvm  (ioctl) -> KVM module in kernel
  |
hardware (VT-x/AMD-V, EPT/NPT, IOMMU)

Термины

domainVM в терминах libvirt
vCPUпоток QEMU привязанный к KVM_RUN ioctl
virtioparavirtual device interface (net, block, scsi, fs)
vhostoffload virtio в kernel (vhost-net, vhost-scsi)
vfiopassthrough host PCI device в гостя
SR-IOVhardware partitioning одной NIC на VF

virsh

virsh list --all
virsh dominfo <domain>
virsh dumpxml <domain>
virsh start/shutdown/destroy <domain>
virsh attach-device / detach-device
virsh console <domain>

XML domain

/etc/libvirt/qemu/<domain>.xml - persistent definition.

See also