1、虚拟化产生的背景
2、虚拟化概念
指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。虚拟化是资源的逻辑表示,其不受物理限制的约束;虚拟化是云计算的基础;简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。
从而显著提高计算机的工作效率。传统虚拟化: IAAS(基础设施及服务)PAAS(平台及服务)SAAS(软件及服务);
将任何一种形式的资源抽象成另一种形式的技术都是虚拟化;在计算机方面,虚拟化一般指通过对计算机物理资源的抽象,提供一个或多个操作环境,实现资源的模拟、隔离或共享等; 虚拟化创建了一层隔离层,把硬件和上层应用分离开来,允许在一个硬件资源上运行多个逻辑应用。
3、虚拟化后的结果
- 通过虚拟化提高了服务器利用率,降低了能源成本,通过最大化每个服务器承担的工作负载,提高了资源的利用率,提高灵活性,打破了操作系统和硬件的相互依赖,介时虚拟机是独立的,能在任何硬件上运行;
- 通过使用虚拟化,你可以确保硬件承载的工作量适当,既不超负荷,又不空转,同时通过将多个物理服务器上的应用整合到一个服务器还可以节省电力成本,强大的安全和故障隔离;
4、虚拟化技术的发展
1961年,IBM709机器实现了分时系统,将CPU占用切分为多个极短的时间片(1/100sec)每一个时间片执行不同的工作,通过对这些时间片进行轮询,从而将一个CPU伪装成多个CPU;
1972年, IBM正式将system370机的分时系统命名为虚拟机;
1990年,IBM推出的system390机支持逻辑分区(将一个CPI分为多份,相互独立,也就是逻辑分割)
Xen 2003年问世,是一个外部的hypervisor/VMM程序(虚拟机管理程序)能够控制宿主机和给多个客户机分配资源(不仅是CPU);
KVM:2007年问世,现已内置在kernel内核中的;
Xen支持的虚拟化技术:全虚拟化,半虚拟化;
KVM:支持的虚拟化技术:全虚拟化;
也可以理解为:软件模拟→虚拟化层翻译→容器虚拟化 ;
5、常见的虚拟化
- 内存虚拟化 Page File/计算资源虚拟化;
- 磁盘虚拟化 RAID,Volume/存储资源虚拟化;
- 网络虚拟化 VLAN/网络资源虚拟化;
虚拟化创建了一层隔离层,把硬件和上层应用分离开来,允许在一个硬件资源上运行多个逻辑应用。
6、Fusion Sphere
实现的是x86服务器的虚拟化,更确切地说,包含以下三个方面:
- 计算能力:CPU/Memory的虚拟化
- 存储:VIMS文件系统
- 网络:分布式虚拟交换机
7、虚拟化中的几个重要概念
- 虚拟机:虚拟机VM(Virtual Machine)是指使用虚拟化技术,通过软件模拟完整的计算机硬件系统功能,构造出的完整虚拟计算机系统。
- Hypervisor:即虚拟机监视器VMM(Virtual Machine Monitor),是一种运行在基础物理服务器和操作系统之间的中间软件层,Hypervisor是一种在虚拟环境中的“元”操作系统。Hypervisor是所有虚拟化技术的核心
- Xen Hypervisor:是一个开源的采用半虚拟化技术的VMM,负责在各虚拟机之间进行CPU调度和内存分配;Xen Hypervisor无需特殊硬件支持,就能达到高性能的虚拟化。
- 宿主操作系统:宿主操作系统(Host OS)指被虚拟的物理机的操作系统。
- 客户操作系统:客户操作系统(Guest OS)指运行在虚拟机上的操作系统。
- Domain 0:指运行Host OS的虚拟机。Domain 0是其他虚拟主机的管理者和控制者,可以构建其他更多的Domain,并管理虚拟设备。它还能执行管理任务,比如虚拟机的休眠、唤醒和迁移其他虚拟机。
- Domain U:指除Domain 0之外的虚拟机。
8、虚拟化的特点(本质)
- 分区:分区意味着虚拟化层为多个虚拟机划分服务器资源的能力;
- 隔离:虚拟机是互相隔离的:
- 封装:封装意味着将整个虚拟机(硬件配置、BIOS 配置、内存状态、磁盘状态、CPU 状态)储存在独立于物理硬件的一小组文件中;
- 相对于硬件独立:虚拟机运行于虚拟化层之上,只能看到虚拟化层提供的虚拟硬件;
9、虚拟机的优势
虚拟机易于创建、易于管理,用户可以更方便地获取计算资源,减少整体拥有成本,包括管理、维护等
(1)降低运营成本;(2)缩短上线周期;(3)提高可靠性;
(4)提高资源利用率;(5)动态资源调度(DRS);
10、虚拟机的三个特征
(1)同质 (Equivalence);(2)高效 (Efficiency);(3)资源受控 (Resource control);
11、虚拟化架构
寄居虚拟化:寄居虚拟化架构指在宿主操作系统之上安装和运行虚拟化程序,依赖于宿主操作系统对设备的支持和物理资源的管理;
裸金属虚拟化:裸金属虚拟化架构指直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,主要实现两个基本功能:首先是识别、捕获和响应虚拟机所发出的CPU特权指令或保护指令;其次,它负责处理虚拟机队列和调度,并将物理硬件的处理结果返回给相应的虚拟机(华为公司的统一虚拟化平台使用的是裸金属虚拟化架构);
操作系统虚拟化:操作系统虚拟化架构在操作系统层面增加虚拟服务器功能。所有虚拟服务器必须运行同一操作系统(不过每个实例有各自的应用程序和用户账户);
混合虚拟化:将一个内核级驱动器插入到宿主操作系统内核,这个驱动器作为虚拟硬件管理器来协调虚拟机和宿主操作系统之间的硬件访问,混合虚拟化需要底层硬件支持虚拟化扩展功能;
- 虚拟化的分类(1)
12.1、基于平台的平台虚拟化
- 如果把x86平台的CPU、内存和外设作为资源、那对应的虚拟化技术就是平台虚拟化,
- 在同一个x86平台上,可以虚拟多个x86平台,每个平台可以运行自己独立完整的操作系统。
(不提供操作系统、只提供操作系统运行的环境,不过可以实现系统的快速安装、迁移)
12.2、基于操作系统的操作系统虚拟化
- 如果把操作系统及其提供的系统调用作为资源,那虚拟化就表现为操作系统虚拟化。
- 例如Linux容器虚拟化技术就是在同一个Linux操作系统之上,虚拟出多个同样的操作系统,每个应用程序认为自己运行在一个独立的OS。
- lxc(Linux容器技术)、dockers。
- 虚拟化的分类(2)
13.1、全虚拟化
全软件实现>VMM>半虚拟化>CPU借口>VT_D 直通硬件
13.2、虚拟化的分类
全虚拟化和半虚拟化
13.3、虚拟化分类-架构
寄居架构和裸金属架构
13.4、寄居架构
优点:简单,便于实现
缺点:安装和运行应用程序依赖于主机操作系统对设备的支持
举例:GSX Server, VMware Server,Workstation
13.5、裸金属架构
优点:虚拟机不依赖于操作系统,可以支持多种操作系统,多种应用,更加灵活
缺点:虚拟层内核开发难度较大
举例:VMWare ESXI Server
总结如下: |
传统虚拟化: IAAS(基础设施级服务) > PAAS(平台级服务) 传统的单独虚拟化: KVM:内核虚拟机 Vcent:VMware针对企业推出的企业级平台; Docker 容器 container Kubernetes 全软件实现 > VMM(全虚拟化)>半虚拟化 > CPU 接口 > VT-D 直通硬件 虚拟化分类-技术 全虚拟化: 又叫做硬件辅助虚拟化技术。它在虚拟机和硬件之间加了一个软件层-Hypervisor或者叫虚拟机管理程序。 Hypervisor分为两类: 类型一:直接运行在物理硬件之上 类型二:运行在另一个操作系统的物理硬件之上 类型一的例子是基于内核的虚拟机(KVM),类型二包括QEMU和WINE 半虚拟化: 在全虚拟化的基础上,把客户操作系统进行了修改,增加了一个专门的API,这个API可以将客户操作系统发出的指令进行最优化 优点:性能提高,工作负担小,不需要Hypervisor耗费资源进行翻译 缺点:需要修改包含API的操作系统 API: 就是操作系统留给应用程序的一个调用接口, 应用程序通过调用操作系统的API而使操作系统去执行应用程序的命令。 虚拟化分类-架构 寄居架构: 就是在操作系统之上安装和运行虚拟化程序, 依赖于主机操作系统对设备的支持和物理资源的管理; 裸金属架构: 就是直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用, 依赖虚拟层内核和服务器控制台进行管理。 Vcent: 1、CPU支持的虚拟化接口 2、以全虚拟化为主半虚拟化为主的虚拟化结构 3、采用裸金属平台框架 4、CPU支持的虚拟化 5、还能支持硬件通道 虚拟化发展史: 全软件虚拟化-虚拟化层-半虚拟化-CPU虚拟化-设备直通 分类: 全虚拟化 半虚拟化 裸金属架构 寄居架构 描述:以全虚拟化为主半虚拟化为辅,CPU虚拟化设备直通 |
半虚拟化和全虚拟化的区别如下: 半虚拟化是通bai过事先经过修改的客户机操作系统内核共享宿主底层硬件来实现的, 优点是半虚拟化的虚拟机操作系统内核能够直接管理底层硬件,性能比全虚拟化技术更强, 缺点是客户机操作系统内核需要事先进行修改,部署的便利性和灵活性都不够, 兼容性不够好全虚拟化是通过客户机和宿主机直接的一个虚拟化逻辑层hypervisor来完全模拟 底层硬件细节,优点是客户机的操作系统内核不需要做特殊配置,部署便利,灵活,兼容性好, 缺点是客户机操作系统的内核不能够直接管理底层硬件, 内核通过hypervisor管理底层硬件需要有转换开销,性能比半虚拟化略弱。 |
14、虚拟化原理
服务器虚拟化的目的是改善资源的利用率。目前,单台服务器的能力往往超过了单个用户或业务的需求,造成了大量的资源浪费和能量损耗。服务器虚拟化能够将一台虚拟化多台虚拟服务器,供多个用户同时使用,并通过对虚拟机服务器进行隔离、封装来保证其安全性。服务器虚拟化的实现依赖处理器虚拟化、内存虚拟化和I/O设备虚拟化等硬件资源虚拟化技术。
14.1、CPU虚拟化
利用了和原始操作系统类似的机制——定时中断,在中断触发时陷入VMM(virtual machine monitor,虚拟机管理层),从而根据调度机制进行调度。
以x86架构为例:
- x86架构存在虚拟化漏洞
- X86的ICA中有19条敏感指令不是特权指令,因此X86无法使用经典的虚拟化技术完虚拟化。
于是乎:
(1)半虚拟化:修改guest的操作系统内核,使其运行于Ring0上。问题:对闭源系统是一种阻碍。
(2)全虚拟化:修改VMM,使得不敏感指令同样可以中断陷入VMM。
(3)硬件辅助虚拟化:对CPU微指令集的修改,使非root Ring0-3同样可使用CPU,而VMM只起监控作用
14.2、内存虚拟化
问题1:内存空间地址不唯一;
问题2:内存连续性;
解决:建立内存映射表。
内存虚拟化:把物理机的真实物理机内存统一管理,包装成多份虚拟的内存给若干虚拟机使用。
14.3、I/O虚拟化
问题:多个客户机如何实现使用有限的外设资源?
VMM必须通过I/O虚拟化的方式来复用有限的外设资源。现实中外设资源是有限的,为了满足多个客户机操作的需求,VMM必须通过I/O虚拟化的形式来复用有限的外设资源。VMM截获客户操作系统对设备的访问请求,然后通过软件的方式来模拟真实设备的效果。
两个阶段:发现,使用。
前端设备驱动将数据通过VMM提供的接口转发到后端驱动;后端驱动对VM的数据进行分时分通道处理。
14.4、存储虚拟化
- 存储虚拟化的目的:
构建具有统一逻辑视图的存储资源池供用户按需使用。存储虚拟化将各个分散的存储系统进行整合和统一管理,并提供了方便用户调用资源的接口。另外,存储虚拟化能够为后续的系统扩容提供便利,使资源规模动态扩大时无需考虑新增的物理存储资源(如不同型号的存储设备)之间可能存在的差异。存储虚拟化的实现需要针对不同的存储子系统进行特殊的考虑。
- 存储虚拟化的概念:
存储虚拟化是在存储设备上加了一个逻辑卷,通过逻辑层访问存储资源。对管理员来说,可以方便的调整资源,提高存储利用率对终端用户来说,集中的存储设备可提供更好的性能和易用性。
- 存储虚拟化的实现方式:
- 裸金属+逻辑卷;
- 存储设备虚拟化;
- 主机存储虚拟化+文件系统;
14.5、网络虚拟化
满足在服务器虚拟化应用过程中产生的新的网络需求。服务器虚拟化使每台虚拟服务器都要拥有自己的虚拟网卡设备才能进行网络通信,运行在同一台物理服务器上的虚拟服务器的网络流量则统一经由物理网卡输入/输出。网络虚拟化能够为每台虚拟服务器提供专属的虚拟网络设备和虚拟网络通路,同时,在虚拟化层还可以利用虚拟交换机等网络虚拟化技术提供更加灵活的虚拟组网。