前言
KVM(Kernel-based Virtual Machine):基于内核的虚拟机。
是一种用于 Liunx 内核中的虚拟化基础设施,可以将 Linux 内核转化为一个 hypervisor(virtual machine monitor 虚拟机器监视器),KVM 在 07 年 2 月被导入 Linux 2.6.20 内核版本中。
虚拟技术分类
VPS(Virtual Private Server,虚拟专用服务器),使用的虚拟技术有 openVZ、KVM、xen、VMware 等。
而虚拟化又分全虚拟化和半虚拟化,区别在于是否有 API 让客户操作系统直接能调用硬件指令,半虚拟化因为可以绕过 hypervisor 直接作用与硬件(主要是 CPU),这样它的性能就会有所提高,不需要经过 hypervisor,而随着 Intel AMD 等硬件厂商对于硬件虚拟化技术的不断完善,对虚拟化的支持越来越好,以后虚拟化的性能将无限趋近与物理机。
openVZ:一款开源的虚拟化框架,本身是运行在 linux 之上的,属于系统级的全虚拟化软件,openVZ 貌似不能安装 windows,由于是运行在操作系统之上的,也就意味着在系统级别的低权重开销和灵活的配置。
xen:一款常见的半虚拟化技术(也可以支持全虚拟化,但是更新的时候需要重新编译整个内核),大都是使用半虚拟化的,运行在裸机上的 hypervisor,本身相当于独立运行的一是内核实例,可加载内核模块,虚拟的内存和 I/O,稳定性高,内存占用小。(VMware 的 ESXi 也是运行在裸机上的 hypervisor)
kvm:基于内核的虚拟机,轻量级的虚拟化管理程序模块,全虚拟化的解决方案,需要 CPU 的虚拟化支持(intel-VT 和 AMD-V),嵌在 linux 内核里面(kvm 写入内核了,xen 估计就很难再写入内核了)。
现阶段来说,xen 和 ESXi 等半虚拟化技术性能可能更高,稳定性也比较好,但是随着硬件加速(即命令不需要经过 hypervisor 转交直接作用与硬件)等新的技术出现之后,虚拟化也会接近物理机的性能了。
由于 KVM 被写进内核,得到了开源社区的支持,应该会越来越好。
KVM 原理