KVM介绍

1、KVM简介

其中,KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor:

  • 它由Quramnet 开发,该公司于 2008年被Red Hat 收购。
  • 它支持x86 (32 and 64 位), s390, Powerpc 等 CPU架构。
  • 它从 Linux 2.6.20 起就作为一模块被包含在 Linux 内核中。
  • 它需要支持虚拟化扩展的 CPU。
  • 它是完全开源的

2、功能概述

KVM 是基于虚拟化扩展(Intel VT 或AMD-V)的X86 硬件,是Linux 完全全虚拟化解决方案。部分的准虚拟化支持,主要是以准虚拟网络驱动程序的形式用于 Linux 和 Windows客户机系统的。KVM 目前设计为通过可加载的内核模块,可以支持打大部分的操作系统,比如Linux、BSD、Solaris、Windows等

在 KVM 架构中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度。事实上,每个虚拟 CPU 显示为一个常规的 Linux 进程,这使 KVM 能够享受Linux 内核的所有功能。KVM自身并不执行任何的模拟操作,用户空间的某个程序通过/dev/kvm接口为Guest Host设置地址空间,并向它提供模拟的I/O,之后将Guest Host的情况映射到宿主机的显示屏上。在KVM中,执行这个操作的程序目前是QEMU。

KVM的基本架构如下图所示:

3、KVM功能特性

(1)内存

KVM继承了Linux强大的内存管理功能,虚拟机的内存和其他linux进程的内存是一样的,可以使用大页面的方式进行访问以提高性能,也可以用磁盘文件的形式进行共享。

同时KVM也支持NUMA(非一致内存访问),允许虚拟机有效大量的访问内存内存

KVM支持基于硬件的内存虚拟化技术,主流的是Intel的扩展页表(EPT)以及AMD的嵌套页面(NPT),
从而实现更优的性能。

内存页面共享是通过linux内核一项名为内核同页合并(Kernel Same-page Merging,KSM)的功能来支持的,KSM会扫描每台虚拟机的内存,如果虚拟机由使用相同的内存页面,KSM会将这些页面合并成一个虚拟机共享页面,仅存储一个副本。如果某个客户机尝试修改这个共享页,他会得到这个共享内存页的转专有副本(读时共享,写时复制)。

(2)存储功能

KVM可以占用Linux支持的所有的存储来存储虚拟机镜像,KVM支持的本地存储有SCSI,SAS或者IDE,网络存储有NFS或SMA/CIFS,同时也支持ISCSI 和 FCSAN。多路径IO也可以用来提高吞吐量和冗余

KVM还支持全局文件系统(GFS2),GlusterFS等共享文件系统上存储虚拟镜像,这使得虚拟机镜像可以在多个宿主机之间共享或者使用逻辑卷共享。磁盘镜像支持按需分配,可以提高磁盘的利用率。KVM原生磁盘镜像格式为qcow2,支持快照,压缩和加密

(3)设备驱动程序

KVM支持混合虚拟化,其中准虚拟化的驱动程序安装在Guest OS中,允许虚拟机可以直接使用优化的IO接口而不是模拟的设备这使得网络设备和块设备的IO性能得到很大提升。KCM使用的半虚拟话驱动程序名为virtio。它是一个与虚
拟机管理程序相独立的、构建设备驱动程序的接口,允许多个虚拟机管理程序使用一组相同
的设备驱动程序,可以很好的提高虚拟机之间的交互性

(4)依依托于Linux

KVM集成与linux内核当中,使KVM 可以直接获益于最新的Linux 内核开发成果,比如更好的进程调度支持、更广泛物理硬件平台的驱动、更高的代码质量,等等。

results matching ""

    No results matching ""