文章目录
- 一: 虚拟化概念
- 1.1 虚拟化简述
- 1.2 虚拟化技术分类
- 1.3 虚拟化的优势
- 1.4 虚拟化的三种通用模型
- 1.5 虚拟机的特征
- 二:KVM概述
- 2.1. KVM 的简述
- 2.2KVM 的虚拟化原理与架构
- 2.2.1 KVM虚拟化的原理
- 2.2.2 KVM虚拟机架构
- 2.2.3 KVM工作流程
- 2.3 KVM虚拟化架构/三种模式
- 2.4 主要的虚拟化软件
一: 虚拟化概念
1.1 虚拟化简述
虚拟化是云计算的核心技术之一。就是将x 个物理资源虚拟化为y 个逻辑资源, 一般说x 是小于y。通过虚拟化技术,我们可以在一台计算机上运行多个逻辑计算机(虚拟机)。
每个虚拟机之间是完全隔离的。它们可以独立交互并运行装不同的操作系统。应用程序也都是在相互独立的空间内运行,不受影响。所有虚拟机共享主机资源。
虚拟化利用单台计算机或服务器创建多个资源,在减少整体服务器使用数、降低能源消耗以及削减基础结构成本和维护的同时,提高了可伸缩性和工作负荷。
虚拟化的目的可以用一句话来概述:虚拟化技术的目的是希望能够截获上层操作系统应用对硬件资源的访问,然后重定向到 VMM 的资源池中,再由 VMM 来对片上资源进行管理;
1.2 虚拟化技术分类
虚拟化技术主要分为以下几个大类 :
- 平台虚拟化(Platform Virtualization),针对计算机和操作系统的虚拟化。
- 资源虚拟化(Resource Virtualization),针对特定的系统资源的虚拟化,比如内存、存储、网络资源等。
- 应用程序虚拟化(Application Virtualization),包括仿真、模拟、解释技术等。
我们通常所说的虚拟化主要是指平台虚拟化技术,通过使用控制程序(Control Program,也被称为 Virtual Machine Monitor 或 Hypervisor),隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟机)。
虚拟机中运行的操作系统被称为客户机操作系统(Guest OS),运行虚拟机监控器的操作系统被称为主机操作系统(Host OS),当然某些虚拟机监控器可以脱离操作系统直接运行在硬件之上(如 VMWARE 的 ESX 产品)。运行虚拟机的真实系统我们称之为主机系统。
常见的平台虚拟化技术有,完全虚拟化;部分虚拟化(半虚拟化);硬件辅助的虚拟化
- 全虚拟化:
- 全虚拟化是指虚拟机模拟了完整的底层硬件,包括cpu,物理内存,外设等,使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运行
- 将非内核态指令模拟成内核态指令再交给cpu处理,中间要经过两重转换,因此效率低,一般用于科研,不适合商业推广
- 优点是不会修改GuestOS,所以全虚拟化的VMM可以安装绝大部分操作系统
- 全虚拟代表软件:VMware Workstation; Hyper-V; KVM-x86, Sun Virtual Box,Oracle VM,QEMU
- 部分虚拟化(半虚拟化)
- VMM 只模拟部分底层硬件,因此客户机操作系统不做修改是无法在虚拟机中运行的,其它程序可能也需要进行修改
- 使用Hypervisor(虚拟机管理程序)分享存取底层的硬件
- 半虚拟化系统性能可以接近在裸机上的性能。
- 半虚拟化代表软件:Xen(也可全虚拟化)
- 硬件辅助虚拟化
- 硬件辅助虚拟化是指借助硬件(主要是主机处理器)的支持来实现高效的全虚拟化
- 主要有Intel-VT; AMD-V
1.3 虚拟化的优势
- 减少服务器数量,降低硬件采购成本
- 资源利用最大化
- 硬件资源可动态调整,提高企业IT业务灵活性
- 高可用性
- 在不中断服务的情况下进行物理硬件调整
- 降低管理成本
- 具备更高效的灾备能力
1.4 虚拟化的三种通用模型
虚拟化模型:
- 第一种模型:
- OS+VMM 实现了Hypervisor的功能。这种是工作站中常见的模型
- 典型的有VMware Workstations。
- 第二种模型:
- VMM直接运行在硬件层之上,并提供硬件所需要的所有驱动,同时还提供了一个OS内核所必须的各种功能,但这些功能通常是专门为运行在其上的虚拟机而设计的,如:创建,删除虚拟机等。
- 典型的有:VMware ESX,和VMware ESXi
- 第三种模型:Xen模型
- Xen这种模型比较特殊,它虽然直接运行于硬件层之上,但它却并没有提供驱动所有硬件的驱动,它仅仅提供了主要设备CPU,Interrupt(中断),Memory的驱动,因此它采用了一种取巧的方式,要安装Xen就先安装一个主虚拟机,由它来驱动底层硬件;而所有虚拟机要访问CPU,Interrupt,内存时,Xen才自己来调度,为每个VM提供服务;在Xen中每台VM都被称为一个Domain,它们安照顺序排列Dom0是Xen中在主VM,它也是特权VM。
1.5 虚拟机的特征
虚拟机是物理机的一种高效隔离的复制,有以下三个典型特征:
- 同质,虚拟机的运行环境和物理机的环境本质上相同,但是表现上能够有一些差异;
- 高效,虚拟机中运行的软件需要有接近物理机(native)中运行的性能;
- 资源受控,VMM 需要对系统资源有完全控制能力和管理权限,资源的分配 / 监控 / 回收;
二:KVM概述
2.1. KVM 的简述
KVM(Kernel-based Virtual Machine),基于内核的虚拟机,是一个开源的系统虚拟化模块,于2007 年2月被集成到Linux2.6.20内核中,成为Linxu内核的一部分。
是X86架构且硬件支持虚拟化技术(Intel VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。
KVM可以改进虚拟网络的支持,虚拟存储的支持,增加安全性,高可用性,容错性,电源管理,HPC/实时支持,虚拟CPU可伸缩等方面。
2.2KVM 的虚拟化原理与架构
2.2.1 KVM虚拟化的原理
KVM是基于硬件的全虚拟化解决方案,在KVM中,虚拟机其实就是一个Linux进程,由CPU进行调度运行。
虚拟机的每个虚拟CPU就是一个Linux线程,这使得KVM能够使用Linux 内核已有的功能。
KVM 模块是KVM虚拟机的核心部分,其主要功能包括初始化CPU硬件,打开虚拟化模式,将虚拟客户机运行在虚拟机模式下,对虚拟客户机的运行提供一定的支持。
KVM驱动提供处理器、内存的虚拟化,以及客户机I/O的拦截,guest的I/O被拦截后,交由Qemu处理
Qemu利用接口libkvm调用(ioctl) 虚拟机设备接口/dev/kvm来分配资源、管理、维护虚拟机
2.2.2 KVM虚拟机架构
- 在KVM架构中,最底层的是硬件系统,包括处理器,内存,输入输出设备等。
- 在硬件系统之上就是Linux操作系统,KVM是Linux 内核的一个模块。
- 再向上就是基于Linux的应用程序,同时也包括基于KVM模块虚拟出来的客户机。
2.2.3 KVM工作流程
用户模式的Qemu利用接口libkvm通过ioctl系统调用进入内核模式。KVM驱动为虚拟机创建 虚拟CPU和虚拟内存,然后执行VMLAU.NCH指令进入客户模式,装载Guest OS并运行。Guest OS运行过程中如果发生异常,则暂停Guest OS的运行并保存当前状态同时退出到内核模式来处理这些异常。
内核模式处理这些异常时如果不需要/O则处理完成后重新进入客户模式。如果需要I/O则进入到用户模式,则由Qemu来处理I/O,处理完成后进入内核模式,再进入客户模式
vm接口设置一个客户机虚拟服务器地址空间,向它提供模拟I/O,并将它的运行过程与结果映射回宿主机的显示屏,以完成整个虚拟化过程.
注意:KVM本省不执行任何模拟,用户空间程序(如QEMU)通过/dev/kvm接口设置一个客户机虚拟服务器地址空间,向它提供模拟I/O,并将它的运行过程与结果映射回宿主机的显示屏,以完成整个虚拟化过程
2.3 KVM虚拟化架构/三种模式
- 客户模式(guestOS):VM中的OS为GuestOS
- 客户机在操作系统中运行的模式,客户机分为内核模式和用户模式,作用如下:
- 用户模式:
- 为用户提供虚拟机管理的用户空间工具以及代表用户执行I/O,Qemu_ 工作在此模式下(Qemu的主要功能)
- linux内核模式
- 模拟CPU、内存,实现客户模式切换,处理从客户模式的推出,KVM即运行在此模式下
2.4 主要的虚拟化软件
系列 | PC/服务器版代表 |
VMware | VMware Workstation,vSphere |
Microsoft | VirtualPC,Hyper-V |
RedHat | KVM,RHEV |
Citrix | Xen |
Oracle | Oracle VM VirtualBox |