虚拟化意味着应用程序可以使用一个资源,而不必担心它驻留在哪里、技术接口是什么、它是如何实现的、它使用的平台以及它有多少可用。
——里克 F.范德兰斯
目录
一.什么是虚拟化:
1. 虚拟化概念
2.虚拟化的类型
①服务器虚拟化
②网络虚拟化
③桌面虚拟化
3.虚拟化的特点
4.虚拟化技术(虚拟机)
①:在了解虚拟机之前我们先将虚拟化前后做一个对比:
②: 虚拟机(Virtual Machine):指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
③对于虚拟机软件来说:
5.云计算VS虚拟化
二.虚拟化原理:
1.系统虚拟化:
指在一台物理计算机系统上虚拟出一台或多台虚拟计算机系统。虚拟计算机系统就是虚拟机
①:系统虚拟化结构
②:虚拟化实现条件(作为了解)
2.虚拟化基本原理
①:虚拟化分类与原理:根据VMM所提供的虚拟平台类型,分为:
②:虚拟机监视器构架
3.虚拟化技术构架:
①.处理器虚拟化技术
②.内存虚拟化技术
③.I/O虚拟化技术
一.什么是虚拟化:
1. 虚拟化概念
虚拟化(Virtualization)是资源的逻辑表示,其不受物理限制的约束。将任何一种形式的资源抽象成另一种形式的技术都是虚拟化。
概括来讲,虚拟化是对资源的逻辑抽象,隔离,再分配,管理的一个过程。
简单归纳一下就是:
1.虚拟的内容是资源。虚拟化是资源的一种逻辑表示,并不会受限于物理资源。
2.运行的环境不在真实的硬件上,而是硬件之上的虚拟内存中的一段,或者说是虚拟的环境中。
3.虚拟化为数据、计算能力、存储资源等提供了一个逻辑视图,而不是物理视图。
4.虚拟化的起因就是因为硬件资源的浪费,硬件资源的效率低下,其主要目的是对IT基础设施和资源管理方式的简化
2.虚拟化的类型
①服务器虚拟化
借助服务器虚拟化,可以让多个操作系统作为高效的虚拟机在单个物理服务器上运行。
主要优势包括:
提升了 IT 效率 ,降低了运维成本,加快了工作负载部署速度,提高了应用性能,消除服务器数量剧增情况和复杂性
我们可以将物理服务器和虚拟服务器做一个对比:
物理服务器和虚拟服务器的对比
物理服务器 |
虚拟服务器 |
传统物理服务器:操作系统与物理服务器绑定。 ·难以迁移,可靠性难以控制。 ·难以扩展,资源利用率低。 ·难以管理,空间占用高。 |
虚拟化服务器:操作系统与物理服务器分离。 ·易于迁移、扩展,资源整合。 ·标准化的虚拟硬件。 ·由一系列文件组成,易于保护。 |
②网络虚拟化
通过完全复制物理网络,网络虚拟化支持应用在虚拟网络上运行,就像在物理网络上运行一样,
③桌面虚拟化
将桌面部署为代管服务使 IT 组织能够更快地响应不断变化的工作场所需求和新出现的机会。还可以将虚拟化桌面和应用快速、轻松地交付给分支机构、外包和离岸员工以及使用 iPad 和 Android 平板电脑的移动员工。
3.虚拟化的特点
分区:在单一物理服务器上同时运行多个虚拟机。 可在虚拟机之间分配系统资源。
隔离:在同一服务器上的多个虚拟机之间相互隔离。
封装:整个虚拟机执行环境封装在独立文件中,可以通过移动文件的方式来迁移该虚拟机。
相对于硬件独立:虚拟机无需修改,即可在任何服务器上运行。
4.虚拟化技术(虚拟机)
①:在了解虚拟机之前我们先将虚拟化前后做一个对比:
虚拟化前:
·IT资源独立 #注释:IT/ICT:信息技术/信息和通信技术
·操作系统必须与硬件紧耦合
虚拟化后:
·资源抽象成共享资源池
·上层操作系统与硬件解耦,操作系统从资源池中分配资源
虚拟化前后计算机服务层级对比图
#注释:APP软件呈现出来的功能称为服务,其单位都是可执行文件
虚拟化前后性能对比:
②: 虚拟机(Virtual Machine):指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
简单来讲就是:通过虚拟机软件,建立一个拥有独立(虚拟)硬件设施的计算机,并装有同于物理机的系统。
其中虚拟机的硬件资源是从物理机中分配出去的,使其与物理机的操作系统独立(就操作系统的角度看并无法察觉此一虚拟化环境与真正完整实体电脑的差异性),以提高硬件资源的利用率。
③对于虚拟机软件来说:
由虚拟化的方式不同将虚拟化软件分为了两类:完全虚拟化,类虚拟化(也叫:半虚拟化)
而由于虚拟机软件需将虚拟机的各个设施仿照物理机虚拟处理,于是出现了针对与不同硬件的虚拟化技术(其中包括:处理器虚拟化技术,内存虚拟化技术,I/O虚拟化技术等等)。
#补充:虚拟化软件(virtualization software)可以让一部主体电脑(host computer)建立与执行一至多个虚拟化环境(virtual environment)。
虚拟化软件多半使用实效模拟(emulate)来模拟出一部完整的电脑系统(computer system),之后再将操作系统(operating system)软件安装于这部虚拟出来的电脑系统上。
5.云计算VS虚拟化
虚拟化和云计算:
尽管虚拟化和云计算技术的热度不分上下,但它们是不可互换的。
虚拟化是一种使计算环境独立于物理基础架构的软件,而云计算是一项通过 Internet 按需交付共享计算资源(软件和/或数据)的服务。
可以说虚拟化是实现云计算的技术支撑手段之一,但并非云计算的核心关注点。虚拟化技术是云计算在IaaS层具有商用价值的基础。
二.虚拟化原理:
1.系统虚拟化:
指在一台物理计算机系统上虚拟出一台或多台虚拟计算机系统。虚拟计算机系统就是虚拟机
①:系统虚拟化结构
A.虚拟环境组成:
简单来说,虚拟环境由三部分组成:硬件,虚拟机监控器(VMM)和虚拟机
在没有虚拟化的情况下,操作系统直接运行在硬件之上,管理底层物理硬件。
但在虚拟环境中,虚拟机监控器(VMM)抢占了操作系统的位置,对下管理物理硬件,对上表现为虚拟机的硬件平台,欺骗着上层操作系统,使操作系统依然管理着它认为的”硬件“。
图中虚拟机监控器又称为虚拟化层。
#补充:
虚拟机监视器(Hypervisor)是安装在物理硬件上的软件层,可以将物理机通过虚拟化分成许多虚拟机。这样多个操作系统可以在一个物理硬件上同时运行。安装在虚拟机上的操作系统称为虚拟操作系统,也称为实例。有虚拟机监视器运行的硬件称为主机。虚拟机管理控制台(也称为虚拟机管理员(VMM))是一种计算机软件,可以轻松管理虚拟机。
②:虚拟化实现条件(作为了解)
特权指令: 系统中操作和管理关键系统资源的指令。特权指令只能在最高特权级上正确运行,如果在非最高特权级上运行,则会引发异常使处理器陷入到最高特权级,进而将特权指令交由系统软件处理。
敏感指令:操作特权资源的指令,包括修改虚拟机的运行模式或下面物理机的状态
虚拟环境的方法:将VMM运行在系统的最高特权级上,而将客户机操作系统运行在非最高特权级上,当客户机操作系统因执行敏感指令(特权指令)而陷入到VMM时,VMM模拟执行引起异常的敏感指令。
判断一个系统可否虚拟化: 如果系统上所有的敏感指令都是特权指令,则它是可以虚拟化的;如果它不能在所有的敏感指令上触发异常,则不是可虚拟化的,称为存在“虚拟化漏洞”。
2.虚拟化基本原理
①:虚拟化分类与原理:根据VMM所提供的虚拟平台类型,分为:
A.完全虚拟化(Full Virtualization):
简单来说,就是虚拟平台和现实平台一样,完全模拟,客户机操作系统察觉不到自己运行在虚拟平台上,无需对运行在虚拟化平台上的OS做任何修改。
完全虚拟化从实现方式上经历了两个阶段(作为了解):
1,软件辅助的全虚拟化(由软件来完成虚拟化)
一般使用优先级压缩(Ring Compression)和二进制代码翻译(Binary Translation)。
优先级压缩:(能正确处理大部分特权指令) 简单来说就是让guest OS跑在较VMM的ring 0 低的优先级ring 1 上,当需要执行特权指令时就触发异常,被VMM截获。
二进制代码翻译:通过扫描并修改客户机二进制代码,将难以虚拟化的指令转化为支持虚拟化的指令,作为优先级压缩的补充
2,硬件辅助完全虚拟化
软件辅助的虚拟化,就相当于在系统上打补丁,随着虚拟化技术的壮大,厂商在硬件上加入了对虚拟化的支持,从而在硬件构架上实现虚拟化。
可以截获操作系统对于敏感资源和敏感指令的操作,从而向VMM报告异常。
比如说intel的VT-x, 在处理器中引入一个特殊的模式,操作系统一旦进入该模式,无法察觉该模式,但是任何操作都会被该模式报告VMM。
B.类虚拟化(也称:半虚拟化:Para Virtualization):
并不是完全仿照硬件虚拟,是经过VMM重新定义的虚拟化平台,客户机操作系统知道其运行在虚拟平台上,并且会去主动适应。
类虚拟化是通过在源代码级别修改指令以避免虚拟化漏洞,即修改操作系统内核的代码(即API级),使得操作系统内核完全避免这些难以虚拟化的指令。
典型的做法就是修改OS的相关处理器代码,让出ring 0 ,或者定制指定的I/O协议,以期提高读写效率。
②:虚拟机监视器构架
按照VMM的实现架构分类,可以分为Hypervisor模型、宿主模型和混合模型:
1)Hypervisor模型
在Hypervisor模式中,VMM首先是一个完备的操作系统,是为虚拟化而设计的,还具备虚拟化功能.
从物理资源上看,所有的物理资源都归VMM所有,VMM承担着管理物理资源的责任.
其次,VMM需要向上提供虚拟机用于运行客户机操作系统,负责虚拟环境的创建和管理.
(VMM可以视为一个具有虚拟化功能的操作系统,即管理物理资源和虚拟环境的创建、管理。)
优点: 效率高; 缺点:只支持部分型号设备,需要重写驱动或者协议。
典型产品:VMware ESX server3, KVM(KVM(Kernel-basedVirtual Machine),也是基于GPL授权的开源虚拟机软件, 2007.2被继承到了Linux2.6.20内核中,成为内核的一部分.目前项目发起人和维护人认为KVM是Hypervisor模型. )
2)宿主模型(Hosted)
宿主机OS管理物理资源,VMM作为宿主机OS的一个独立的内核模块来提供虚拟化功能。
详细来讲:
在宿主模型中,物理资源是由宿主机操作系统管理,宿主机操作系统是传统操作系统,本身不具备虚拟化功能,实际的操作系统由VMM来提供,VMM通常是宿主机操作系统独立的内核模块,通过调用宿主机操作系统的服务来获得资源,实现处理器,内存和I/O设备的虚拟化.
优点:个人理解就是充分利用现有的OS的device driver,无需重写;物理资源的管理直接利用宿主OS来完成。
缺点: 效率不够高,安全性一般、依赖于VMM和宿主OS的安全性。
典型产品(了解):
- VMware Server:宿主机操作系统可以是Windows或者Linux.
VMware Workstatio是VMware 是面向桌面的主打产品,也是基于宿主模型,与VMServer不同,VMwareWorkstation专门针对桌面应用做了优化,如为虚拟机分配USB设备等.
- Microsoft的VirtualPC是面向桌面的虚拟化产品.
VirtualServer是面向服务器的入门级虚拟化产品,基于宿主模型.
WindowsServer 2008是混合模型, Hyper-V作为Hypervisor运行在最底层,Server 2008作为特权操作系统运行在Hyper-V之上.采用硬件虚拟化技术,必须运行在支持InterVT技术.
3)混合模型
顾名思义,混合模型就是上述两种模型的混合体。
VMM依然位于最底层,拥有所有的物理资源.
VMM会让出大部分I/O设备的控制权,交由一个运行在特权虚拟机中的特权操作系统来控制
VMM的虚拟化功能也被分担,处理器和内存的虚拟化依然由VMM来完成,而I/O的虚拟化则由VMM和特权操作系统共同合作完成.
典型产品:
Xen是一款基于GPL授权的开源虚拟机软件,起源于英国剑桥大学,属于混合模型,基于Xen的虚拟化产品有Ctrix, Redhat, Novell等.
CPU和Memory的虚拟化依然由VMM来完成,而I/O的虚拟化则由VMM和特权OS来共同完成。
混合模型集合了上述两种模型的优点,但是缺点就是经常需要在VMM与特权OS之间进行上下文切换,开销较大。
3.虚拟化技术构架:
关于虚拟化软件,其中需要对各个硬件进行虚拟化,涉及到相关各个硬件虚拟化的技术,统称:虚拟化技术构架,在此只列一个大纲,感兴趣的同志们可以去看一下,日后可能会写相关的文章。
①.处理器虚拟化技术
A.vCPU
B.Intel-VT-x
C.AMD SVM
②.内存虚拟化技术
A.Intel EPT
B.AMD NPT
③.I/O虚拟化技术
A.Inter VT-d
B.IOMMU
C.SR-IOV
D.Virtio