KVM本身不执行任何模拟,需要用户空间程序通过/dev/kvm接口设置一个客户虚拟服务器的地址空间,向它提供I/O,并将它的视频显示映射回宿主显示屏,该应用程序即为QEMU
内存管理
1.KVM有Linux强大的内存管理功能,可以以大页面的形式进行交换,也可以磁盘文件的形式进行共享。NUMA支持(非一致性内存访问,针对多处理器的内存设计)允许虚拟机有效访问大量内存
2.支持Intel的扩展页表(EPT)和AMD的嵌套页表(NPT,又称快速虚拟化索引-RVI),实现更高的cpu利用率和吞吐量
3.内存页面共享通过内核功能同页合并(KSM)来支持。KSM扫描每个虚拟机之间共享的页面,仅存储一个副本,将这些页面合并到一个在虚拟机之间共享的页面。若有客户更改,会得到自己的专用副本
存储
1.KVM能使用LInux支持的任何存储来存储虚拟机镜像,包括具有ID E、SCSI和SATA的本地磁盘,网络附加存储(NAS)(包括NFS和SAMBA/CIFS),或者支持iSCSI和光纤通道的SAN
2.KVM还支持全局文件系统(GFS2)等共享文件系统上的虚拟机镜像,以允许虚拟机镜像在多个宿主之间共享或者使用逻辑卷共享。
3.KVM的原生磁盘格式为QCOW2,支持快照,允许多级快照、压缩加密等功能
设备驱动
1.KVM支持混合虚拟化,其中准虚拟化的驱动程序安装在客户机操作系统中,允许虚拟机使用优化的I/O接口而不使用模拟设备。
2.KVM准虚拟化的驱动程序使用VirtIO标准,它是一个与虚拟机管理程序独立的、构建设备驱动程序的接口。可以为多个虚拟机管理程序使用同一组相同的设备驱动程序
性能和可伸缩性
1.KVM继承Linux的性能和可伸缩性,虚拟化很多方面可到非虚拟话原生环境的95%以上
2.KVM也有着良好的扩展性,可以支持多核cpu以及大量内存