1.kvm:初始化cpu硬件,打开虚拟机模式,负责cpu,内存,中断,时钟,有内核模块kvm.ko实现,
工作于hypervisor,/dev/kvm是一个字符设备,在用户空间可以通过ioct()系统调用来完成vm创建
启动,为vm分配内存,读写vcpu的寄存器,向vcpu注入中断,时钟等管理功能
2.QEMU进程:工作在用户空间,主要用于实现模拟IO设备,如显卡,网卡,硬盘等,qemu-kvm进程;
工作在用户空间,用于实现一个虚拟机实例
3.libvirt:提供统一API,守护进程libvird和相关工具,如:virsh , virt-manager
4.kvm支持的功能:
支持cpu和内存部分超分
支持半虚拟化i/o(virio)
支持热插拔(cpu,块设备,网络设备等)
支持对称处理(symmetric Muli-procesing SMP)
支持事实迁移
支持pci设备直接分配和单根i/o虚拟化(SR-IOV)
支持内核同页合并(KSM)
支持NUMA(Non-uniform Memory Acess,非一致内存访问结构)
5.kvm局限性
cpu 过载使用性能下降
6. kvm相关工具介绍
qem-kvm为kvm提供地产仿真支持
libvirt:类似vfs;通过libvirt调用kvm创建虚拟机,libvirt是kvm通用的访问api.但不能管理kvm,
Libvirt是用于管理虚拟化平台的开源的API,后台程序和管理工具。它可以用于管理KVM、Xen、VMware ESX,QEMU和其他虚拟化技术
libvirt是提供了一个方便的方式来管理虚拟机和其他虚拟化功能的软件的集合,如存储和网络接口管理。这些软件包括一个API库,
一个守护进程(Libvirtd),和一个命令行实用程序(virsh)
libvirt-daemon: libvirtd守护进程,管理虚拟机
libvirt-clinet:用户端软件,提供给客户端管理命令
libvirt-daemon-driver-qemu:libvirt连接qemu的驱动
virt-install:虚拟机命令行安装工具
virsh:命令行工具,基于libvirt api创建的命令行工具,它可以作为图形化的virt-mangager应用的备选工具,
virsh命令可以用来创建虚拟化任务管理脚本,如安装,启动,停止虚拟机
7.kvm 虚拟机两种磁盘常用的格式:
raw:裸格式,占用空间比较大,不支持快照功能,不适合远程传输,性能较好,存储空间是连续的
qcow2:cow (copy on write)占用空间小,支持快照,适合传输,性能比raw差一点,支持写时复制,存储空间是不连续的