当前位置: 移动技术网 > IT编程>开发语言>Java > 1.2、计算虚拟化

1.2、计算虚拟化

2020年07月19日  | 移动技术网IT编程  | 我要评论

目标:描述什么是虚拟化
区分虚拟化和云计算
了解KVM技术
了解华为虚拟化解决方案

一、传统PC办公(企业痛点)
1、数据安全隐患
2、维护量大,维护成本高
3、设备更新换代成本高

二、虚拟化前后的对比
1、虚拟化前
①、IT资源独立
②、操作系统跟硬件紧耦合
③、APP:OS:Phy = 1:1:1

2、虚拟化后
①、形成抽象资源共享池
②、上层操作系统与硬件解耦合
③、APP:OS:Phy = n:1:1
出于华为PPT

三、虚拟化的定义
虚拟化是一种技术,在主机操作系统之上增加一层虚拟化层(逻辑层),将底层物理硬件资源(计算,存储,网络)转化成另一种形式的资源(虚拟化资源),为上层应用来分配资源

四、虚拟化的特点
1、分区
同一台物理服务器上可以同时运行多台虚拟机
意味着虚拟化层能为虚拟机划分底层服务器资源能力
(相当于APP:OS:Phy = n:1:1,APP看作运行的虚拟机)

2、隔离
统一服务器的虚拟机若有一台故障或者中病毒,不会影响到其他虚拟机的使用

3、封装
虚拟机的本质是以文件形式存在,可以通过移动文件或者复制粘贴的形式对虚拟机进行迁移

4、相对于硬件独立
在迁移虚拟机后无需对服务器做任何修改即可运行虚拟机(相当于上层操作系统与硬件解耦合)

五、虚拟化的好处
1、提高资源利用率
没有虚拟化时,一台服务器上只能跑一种业务(可以跑多种,但是隔离性不好,安全可靠性低),一台服务器上的硬件资源提供一种业务的运行,剩余的硬件资源就闲置,不能被其他业务使用。实现虚拟化后可以把闲置的硬件资源利用起来
2、降低能耗,绿色环保
提高资源利用率后,可以减少服务器的数量,就可以减少服务器高额的电量使用。
在这里插入图片描述

在闲时,多台服务器上的虚拟机利用率都比较低,又可以把虚拟机迁移到一起,减少运行服务器的数量,等到虚拟机业务繁忙是再启动服务器。
在这里插入图片描述

3、提高IT运维效率
虚拟化前一个数据中心可能需要多个管理运维员来管理上千上万台服务器的运维,当有虚拟化后,服务器的数量减少,随之管理运维人员也减少,而且管理一台服务器就相当于管理多台服务器,运维效率也随之提高
4、上层操作系统(虚拟机操作系统)与硬件解耦合

六、虚拟化的分类
1、I型虚拟化
Hypervisor直接安装在物理机上,多个虚拟机在Hypervisor上运行。Hypervisor的实现方式就是一个特殊定制的Linux系统。Xen和VMware的ESXI都属于这个类型。
在这里插入图片描述

2、II型虚拟化
物理机上首先安装常规的操作系统。比如Redhat、Ubantu和Windows、Hypervisor作为OS上的一个程序模块运行,并对虚拟机进行管理。(KVM属于II型,当不属于宿主型虚拟化,属于混合虚拟化)、VirtualBox和VMware Workstation都属于这个类型。
在这里插入图片描述

3、I型和II型的区别
I型性能比II型高
II型能够支持虚拟机的嵌套(在虚拟客户机上再跑一层Hypervisor,从而再运行虚拟机)
在这里插入图片描述

七、计算虚拟化中的重要概念
在这里插入图片描述

Guest OS:虚拟机操作系统
Guest Machine:虚拟出来的虚拟机
Hypervisor:虚拟化软件层/虚拟机监控机(Virtual Machine Monitor,VMM)
Host OS:运行在物理机之上的OS
Host Machine:物理机

八、虚拟机与VMM

1、虚拟机:
是由虚拟化层提供的高效、独立的虚拟化计算机系统,其皆拥有自己的虚拟化硬件(CPU、内存、I/O设备)
通过虚拟化层的模拟,虚拟机在上层软件看来,其实就是一个真实的机器,这个虚拟化层一般称为虚拟机监控器(virtual machine monitor VMM)

2、VMM的功能
①、资源虚拟化
②、虚拟环境调度,资源调度
③、提供虚拟化环境的管理接口,用来支持虚拟环境的创建,删除,暂停和迁移等功能

九、计算虚拟化发展史
1964年:IBM开始尝试在大型机上实现虚拟化
1972年:IBM推出运行在大型机上的虚拟机
1999年:VMware推出了x86架构的虚拟化产品
2002年:Xen正式被开源
2006年:Qumranet宣布KVM诞生
2007年:惠普发布了针对HP-UX的Integrity虚拟机
2008年:微软放在Windows Server 2008 R2中加入了Hyper-V
2008年:Linux容器LXC推出
2010年:红帽6.0版本中默认仅提供KVM虚拟化机制
2011年:IBM、红帽、惠普和英特尔成立开放虚拟化联盟,加速KVM推广
2013年:Docker推出
2014年:Rocket推出

十、CPU虚拟化
1、CPU Ring等级
①、Ring 0:用于操作系统内核,优先级最高,拥有最高的“特权”
②、Ring 1/ 2:用于操作系统服务,优先级次之
③、Ring 3:用于应用程序,优先级最低。
系统中主要采用了0和3两个特权级,分别对应的就是内核态和用户态。
在这里插入图片描述

2、CPU指令
①、特权指令:是指有特权权限的指令,由于这类指令的权限最大,如果使用不当,将导致整个系统崩溃。
②、用户指令:可在各级别的状态下执行,即用户态下够使用的非特权指令。

③、系统调用:系统调用(System Call)是操作系统为在用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口。
用户态进程由于权限不足,需要通过系统调用申请使用操作系统提供的服务程序完成工作,即由用户态进入内核态的过程,比如要访问磁盘、写文件,CPU的运行级别会发生从Ring3到Ring0的切换。

3、CPU虚拟化
①、CPU虚拟化产生的问题
Ⅰ、敏感指令:可以读写系统关键资源的指令叫做敏感指令。
Ⅱ、特权指令:决大多数的敏感指令是特权指令,特权指令只能在处理器的最高特权级 (内核态)执行。

②、解决方法
Ⅰ、特权解除:把虚拟机的操作系统级别降为Ring1或Ring2
Ⅱ、陷入-模拟:将虚拟机操作系统下发的特权指令由VMM捕获并进行模拟相关操作,给虚拟机返回结果

③、CPU虚拟化漏洞
CPU存在19条敏感指令已对运行在统一服务器上的虚拟机造成影响(对系统有危害但属于非特权指令,临界指令,非特权敏感指令)

④、解决方法
Ⅰ、全虚拟化
由Hypervisor“欺骗”虚拟机操作系统,让虚拟机操作系统认为自己就是老大(依然处于Ring 0级别),可以直接调用底层物理硬件资源。其实是由Hypervisor层接受了虚拟机操作系统下发的所有指令,并识别敏感指令后向物理操作系统请求资源。再向虚拟机返回结果
全虚拟化由于Hypervisor要接受虚拟机的所有指令,由于一台服务器上不止一台虚拟机或者虚拟机指令下达比较频繁,会加重Hypervisor层的负担
在这里插入图片描述

Ⅱ、半虚拟化
通过修改虚拟机操作系统的代码,让Hypervisor层直接可以识别铭感指令,这样Hypervisor层就不用接收虚拟机的所有指令,减小了Hypervisor层的负担
但是该解决方法只能对开源的虚拟机操作系统有用,因为要修改操作系统指令,必须指导操作系统的源代码
在这里插入图片描述

Ⅲ、硬件辅助虚拟化
使虚拟机操作系统处于非ROOT模式下的Ring 0 级别,并利用ROOT模式下的CPU来减轻Hypervisor的负担(由Hypervisor层捕获指令交由CPU处理)
在这里插入图片描述

十一、内存虚拟化
1、操作系统对于内存的识别
内存都是从物理地址0开始的
内存都是连续的
2、引入虚拟化后出现的问题
从物理地址0开始的:物理地址0只有一个,无法同时满足所有客户机从0开始的要求;
地址连续:虽然可以分配连续的物理地址,但是内存使用效率不高,缺乏灵活性(内存共享等)。

3、解决方法
内存虚拟化的核心,在于引入一层新的地址空间 - 客户机物理地址空间,客户机以为自己运行在真实的物理地址空间中,实际上它是通过VMM访问真实的物理地址的。在VMM中保存客户机地址空间和物理机地址空间之间的映射表。(通过内存映射解决内存虚拟化问题)

十二、IO虚拟化
现实中的外设资源是有限的,为了满足多个客户机操作系统的需求,VMM必须通过I/O虚拟化的方式来复用有限的外设资源
VMM截获客户操作系统对设备的访问请求,然后通过软件的方式来模拟真实设备的效果
1、模拟(完全虚拟)
完全使用软件来模拟真实硬件,模拟通常硬件,例如键盘鼠标,通过焦点捕获,焦点被哪个主机捕获就被哪个主机使用,性能很差。
在这里插入图片描述

2、半虚拟化
对硬件驱动由前端(IO frontend)直接转到后端(IO backend)调用,通常仅适用于硬盘和网卡,性能高。
在这里插入图片描述

3、IO-through
IO透传;直接分配给虚拟机物理设备,例如直接分配一个硬盘或网卡给虚拟机,需要硬件具备IO透传技术,在Xen下由Dom0分配,但是访问使用直接使用,不经过Dom0,需要硬件支持

十三、KVM和XEN
1、XEN
XEN包含两种虚拟机,分别是Domain 0和Domain U
在这里插入图片描述

①、Domain 0
特权虚拟机,负责管理其他非特权虚拟机在主机开机,过程中第一台运行的虚拟机,向Domain U提供IO资源
②、Domain U
非特权虚拟机,或者叫用户虚拟机
2、KVM
KVM:(Kernel-based Virtual Machine)基于内核的虚拟机,是一种典型的Ⅱ型全虚拟化。它之所以叫基于内核的虚拟机,先给主机安装常规的笑傲做系统,将KVM模块安装在常规操作系统内核来实现虚拟化功能
在这里插入图片描述

①、KVM模块只能实现CPU和内存虚拟化,IO虚拟化由KVM-qemu来实现
②、KVM架构体系
Libvirt:主要是用于管理KVM和Hypervisor
virt-manager:是KVM图形化管理工具
virt-install:是KVM CLI命令行,主要用于创建虚拟机
virt-viewer:显示虚拟机图形化控制台的最小工具

以下是KVM和XEN两种虚拟机的具体技术区别,来源于微信公众号:IE进化论

https://mp.weixin.qq.com/s?__biz=MzIxOTUwMDc4Ng==&mid=2247484847&idx=1&sn=3ad74e6e3da114b95da862ca8299e643&chksm=97db1c32a0ac9524fdf272457735e2325ee8768d4ec71bd38a6fbf14e3800a6648484adfdc6a&mpshare=1&scene=1&srcid=1102LhcWl8y63wTWOxwn1mEe&sharer_sharetime=1572674625462&sharer_shareid=821a7b78ddc302fd08e135d335cb4d4b&pass_ticket=WLUS%2FFPCC6nm3EeA7ICi2aK1T96DD%2BBziGGFmJNToE2oTK2WGeY0qvKKnD5A95tc#rd

十四、华为虚拟化解决方案(FusionCompute)
1、FusionCompute
FusionCompute是一款云操作系统软件,主要是实现对虚拟化资源,用户资源,业务资源进行管理与调度,从而降低企业运行成本,实现绿色节能

2、FusionCompute架构
①、VRM
虚拟资源管理,主要为管理员提供图形化管理界面,实现对资源的管理。一般通过虚拟机部署,可支持物理界部署,可实现主备部署
②、CNA
计算节点代理,指部署华为虚拟操作系统的主机,华为自研Euler(基于开源CentOS)
Ⅰ、UVP:统一虚拟化平台,华为对于虚拟化层(Hypervisor/VMM)的叫法
Ⅱ、VNA:虚拟计算节点,负责接收VRM下发给CNA的管理控制命令,实现VRM和CNA之间的通信
十五、拓展
1、云计算与虚拟化的区别
①、云计算是一种模式,虚拟化是一种技术
②、云计算并不一定使用虚拟化(比如裸金属服务器)
③、虚拟化在IaaS中起到关键作用

2、为什么需要虚拟化
在传统架构下,app:os:phy=1:1:1,为了避免app(业务)之间造成资源性强占,且OS只是提供运行环境,没有办法解决这个问题,所以出现了虚拟化。

本文地址:https://blog.csdn.net/weixin_43666279/article/details/107417311

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网