KVM IDV知识普及

KVM是一个开源的全虚拟化方案,它的全称是Kernel-Based Virtual Machine。它是嵌入在Linux操作系统标准内核中的一个虚拟化模块,是基于Linux内核实现的。

KVM目前支持的体系结构有:x86(注:KVM依赖x86硬件支持:Intel VT-x / AMD-V)、IA64、PowerPC、S390。

KVM作为Linux内核模块,使得linux内核成为虚拟化角色中的hypervisor。

KVM走进Linux的心路历程如下:

  • 2006年10月以色列公司Qumranet发布KVM,同年12月KVM被合入Linux内核(2.6.20rc)。
  • 2007年2月Linux 2.6.20正式版发布。
  • 2008年9月Redhat以1.07亿美元收购Qumranet。
  • 2009年9月RHEL5.4开始支持KVM(同时支持XEN)。
  • 2010年11月发布的RHEL6.0之后仅支持KVM。

KVM能够将一个Linux标准内核转换成为一个VMM(虚拟机控制器,也叫Hypervisor),嵌有KVM模块的Linux标准内核可以支持通过KVM tools来进行加载Guest OS。在这样的操作系统平台下,计算机物理硬件层上直接就是VMM虚拟化层,而不是Host OS操作系统层,在此环境中Host OS就是一个VMM。

作为一个 Hypervisor,KVM本身只关注虚拟机调度和内存管理这两个方面。IO外设的任务交给Linux内核和Qemu,IO 的虚拟化,如存储和网络设备也交给Linux内核和Qemu来实现。

Qemu是一个模拟器,它向Guest OS模拟CPU和其他硬件,Guest OS认为自己和硬件直接打交道,其实是同Qemu模拟出来的硬件打交道,Qemu将这些指令转译给真正的硬件,由于所有的指令都要从Qemu里面过一手,因而性能会有所降低。

Qemu在模拟其他的硬件时,如Network、Disk,同样会影响这些设备的性能,于是又产生了pass through半虚拟化设备virtio_blk、virtio_net,用以提高设备性能。

Qemu被KVM整合进来后,就可通过ioctl调用/dev/KVM接口,将有关CPU指令的部分交由内核模块来做。KVM只能负责cpu虚拟化+内存虚拟化,从而实现了cpu和内存的虚拟化,但KVM不能模拟其他设备,而Qemu却能模拟IO设备(网卡、磁盘等),所以KVM加上Qemu之后就实现了真正意义上虚拟化。因为虚拟化同时用到了上面两个东西,所以称之为Qemu-KVM。

目前的IDV云桌面基本上都是基于KVM开发的,KVM已完全融进Linux内核,成为裸金属版的Hypervisor,利用它作为IDV的虚拟化层。

示意图如下:

KVM IDV知识普及

KVM IDV知识普及


分享到:


相關文章: