广义定义:将任何一种形式的资源抽象成另一种形式的技术。
在计算机中:
All computer problems can be solved with another layer of redirection.
Virtualization is a term that refers to the abstraction of computer resources.(维基百科)
在计算机中,虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。(百度百科)
实现形式:
在系统中加入一个虚拟化层,虚拟化层将下层的资源抽象成另一种形式的资源,提供给上层使用。
总而言之,虚拟化技术就是将一个纷乱复杂、无计划性的世界改造成一个似乎是为人们的特定需求而量身打造的世界。
可虚拟化与不可虚拟化:
判断的核心在于该结构对敏感指令的支持。所有敏感指令都是特权指令,可虚拟化的机构。否则存在“虚拟化漏洞”,不是一个可虚拟化的结构,不能很高效地支持系统虚拟化。
虚拟化的三个特征:同质、高效、资源受控
虚拟化的发展简史:
1965年之前,IBM M44/44x系统,半虚拟化技术(区别于类虚拟化),对底层硬件部分模拟,只针对某些专门的软件,并不是所有的软件。
1965年左右,第一个虚拟机,System/360 Model 40 VM(IBM),时分共享系统,实现对个用户对昂贵物理计算机资源的共享。15年后,虚拟化技术在IBM VM/370 系统中成熟。(应用于大型机,面临问题与背景和目前的服务器与个人计算机环境不同)
20世纪90年代,大型机上的虚拟化技术,在小型机和微型机领域升温。
1997年,斯坦福大学Disco系统,导致1998年VMware公司诞生。
x86体系结构存在对系统虚拟化的支持缺陷,软件完全虚拟化技术。类虚拟化技术出现,华盛顿州大学Denali项目,剑桥大学Xen项目,都支持类虚拟化。
2001年,IBM在POWER4处理器上加入虚拟化的支持。
2004年,IBM在POWER5系列中退出增强的虚拟化支持。
2005年,Sum公司在SPARC处理器中增加虚拟化支持。
2006年,Intel VT技术,AMD SVM技术。在硬件层面解决可虚拟化问题。弥补了x86体系结构上的漏洞。
IBM公司和Sun公司采用了一种整体的类虚拟化策略。除了在硬件加入虚拟化的支持,还在固件层加入了相应的类虚拟化VMM层。
除了CPU上,Intel IO虚拟化功能VT-d技术,网卡-支持对队列的VMDq技术,PCI标准组织,单根PCI桥IOV,多根PCI桥IOV标准。
现在计算机系统是一个庞大的整体, 整个系统非常复杂,因此计算机系统被自下而上分为多个层次,每一个层次都像上一个层次呈现一个抽象,并且每一层只需要知道下层抽象的接口,而并不需要了解其内部机制。虚拟化技术就是下层的软件模块,根据上层软件模块的需求,抽象出一个虚拟的软件或者硬件接口,使上一层软件可以运行在与自己所期待的运行环境完全一致的虚拟环境上。虚拟化可以发生在各个层次上,形成不同层次上的虚拟化。
系统虚拟化是指将一台物理计算机系统虚拟为一台或多台虚拟计算机系统。每个虚拟计算机系统都拥有自己的虚拟硬件(CPU、内存、IO等),来提供一个独立的虚拟机执行环境。
系统虚拟化是虚拟化技术中的一种,其抽象的力度是整个计算机。
主要需要解决的问题:CPU虚拟化、内存虚拟化、IO虚拟化等。
理解概念:宿主与客户、宿主机与客户机、宿主操作系统与客户操作系统
虚拟环境一般由硬件、虚拟机监视器(VMM)和虚拟机三部分组成
虚拟机可以看作是物理机的一种高效隔离的复制
虚拟机应该具备三大特征:同质、高效和组员受控
如果不符合这三个特点那么可以说,这个虚拟机是失败的,这个VMM的骗术是不高明的。
VMM的主要三个任务:处理器虚拟化、内存虚拟化、IO虚拟化
Essential characteristics of VMM
1. Equivalence:
Essentially identical virtual platform,except
2. Isolation,or resource control
VMM is in complete control of system resources
3. Efficiency
- At worst only minor decreases in speed
- Rules out traditional emulators and complete software
根据VMM在虚拟化系统中的位置,VMM的功能可以分成两部分,虚拟环境的管理和物理资源的管理。
虚拟环境:虚拟环境调度、虚拟机间的通信、虚拟机接口管理
物理资源:处理器管理、内存管理、中断管理、设备管理。
其他:软件定时器、多处理器同步原语、调试手段、性能采集与分析、安全机制、电源管理
VMM可以被看做是一个完备的操作系统。所有的物理资源(处理器、内存和IO等)都归VMM所有,VMM承担着管理物理资源的责任。VMM需要向上提供虚拟机用于运行客户机操作系统,VMM还负责虚拟环境的创建和管理。
优点:物理资源虚拟化的效率高;安全性只依赖于VMM的安全。
缺点:设备驱动开发的工作量大。
物理资源由宿主机操作系统管理,实际的虚拟化功能由VMM来提供。VMM作为宿主机操作系统独立的内核模块,通过调用宿主机操作系统的服务来获得资源。VMM创建出虚拟机后,虚拟机作为宿主机操作系统的一个进程参与调度。
优点:可以充分利用现有操作系统的设备驱动程序。
缺点:VMM虚拟化的效率和功能会受到一定影响。
上述两种模式的汇合体。VMM位于最底层,拥有所有物理资源,但是会主动让出大部分IO设备的控制权,将其交给一个运行在特权虚拟机中的特权操作系统来控制。
优点:集中了上述两种模型的优点。
缺点:由于特权操作系统的加入,使得上下文切换开销增加,性能有所下降。
软件完全虚拟化:
在没有硬件支持的情况下通过软件的方式实现虚拟化。典型做法,优先级压缩和二进制代码翻译相结合。
硬件完全虚拟化:
通过对CPU结构的重新设计,使其可以从硬件的层面上支持虚拟化。如Intel的VT-x技术。
类虚拟化:
通过源代码级别修改指令以回避虚拟化漏洞的方式来使VMM能够对物理资源实现虚拟化。(违反了虚拟机的同质性,操作系统的源码需要进行修改才能在虚拟平台上运行)
服务器整合、灾难恢复、改善系统可用性、动态负载均衡、增强系统可维护性、增强系统安全与可信性
系统虚拟化优势:封装性、多实例、隔离、硬件无关性、特权功能
常用技术:虚拟机的动态迁移、虚拟机快照、虚拟机的克隆