计算虚拟化 华为云计算HCIA.docx
- 文档编号:28540322
- 上传时间:2023-07-18
- 格式:DOCX
- 页数:17
- 大小:291.22KB
计算虚拟化 华为云计算HCIA.docx
《计算虚拟化 华为云计算HCIA.docx》由会员分享,可在线阅读,更多相关《计算虚拟化 华为云计算HCIA.docx(17页珍藏版)》请在冰豆网上搜索。
计算虚拟化华为云计算HCIA
虚拟化是云计算的实现基础
物理机:
硬件(CPU,内存,鼠标,键盘等等)物理角度看得见摸得着的设备/主机
虚拟机:
硬件虚拟处理的,并不是真实存在的(通过虚拟化技术实现)
虚拟化:
将物理硬件通过某种技术实现抽象化的概念,将物理硬件资源虚拟化/池化
CPU:
X86:
复杂指令集
手机CPU:
简化指令集
计算虚拟化发展史:
1964年:
IBM开始尝试在大型机上实现虚拟化
1972年:
IBM推出运行在大型机上的虚拟机
1999年:
VMware推出了x86架构的虚拟化产品
2002年:
Xen正式被开源(剑桥)(Xen:
实现虚拟化的技术(ESX-i也是用于实现虚拟化的技术))
2006年:
Qumranet宣布KVM诞生(KVM:
实现虚拟化的技术,闭源)
2007年:
惠普发布了针对HP-UX的Integrity虚拟机
2008年:
微软在WindowsServer2008R2中加入了Hyper-V
2008年:
Linux容器LXC推出
2010年:
红帽6.0版本中默认仅提供KVM虚拟化机制
2011年:
IBM、红帽、惠普和英特尔成立开放虚拟化联盟,加速KVM推广,KVM开源
2013年:
Docker推出
2014年:
Rocket推出
计算虚拟化中的重要概念:
GuestOS:
虚拟机操作系统
GuestMachine:
虚拟出来的虚拟机
Hypervisor:
虚拟化软件层/虚拟机监控机:
:
用来实现硬件/计算的虚拟化;可以管理虚拟机的资源
VMM(VirtualMachineMonitor)HostOS:
运行在物理机之上的OS
HostMachine:
物理机
计算虚拟化的分类:
裸金属型虚拟化(I型):
在硬件基础上安装特制用于实现虚拟化的操作系统,在操作系统上运行虚拟机
专门制定的操作系统
Hypervisor直接可以掌握调动硬件资源,不需要经过HostOS(没有HostOS)或者说:
在Ⅰ型虚拟化中,Hypervisor就是HostOS,定制的HostOS
优点:
不依赖操作系统
虚拟机支持多种操作系统以及多种应用
缺点:
内核开发难度大
负载重
产品:
华为的FusionCompute
XenServer(裸金属型虚拟化的典型代表)
VMwareEsxi
Hyper-v
等
宿主型虚拟化(II型):
在硬件基础上安装正常的操作系统(Linux/OS/乌班图),在操作系统加载用于实现虚拟化的模块
物理资源由HostOS来管理,实际的虚拟化功能由VMM提供
VMM是HostOS上的一个普通的应用程序
通过VMM在创建相应的虚拟机,和HostOS共享底层的硬件资源。
VMM通过调用HostOS的服务来调用资源。
VMM创建的虚拟机通常是作为HostOS中的一个进程在运行
优点:
简单、易实现
缺点:
占用资源多,性能损耗大
产品:
VMAwareWorkstation
VirtualBox(Oracle:
甲骨文公司)
KVM(宿主型虚拟化的典型代表)
等
虚拟化的特点:
分区:
在同一物理机上运行不同虚拟机,他们所使用的硬件资源是独立的,将物理资源分别分区给虚拟机,虚拟机认为自己是运行在专属的服务器上
隔离:
不同间虚拟机间互不干扰/互不通信,一个GuestOS遭到病毒攻击,不是对其他造成影响
封装:
将虚拟机封装成文件,文件中记录了虚拟机资源多少(参数),且可以通过移动复制文件的方式来移动复制虚拟机。
将安装好的虚拟机拷贝到另一台物理机上也是可以运行的(VMware中的文件,直接复制到另一台电脑可以直接运行)
独立:
相对于硬件独立,一个硬件中可以装不同的虚拟机,无需修改就可以在任何服务器上运行虚拟机,将虚拟机文件从一台物理机复制到另一台物理机上,实现在另一台物理机运行
计算虚拟化:
1.CPU虚拟化
2.内存虚拟化
3.I/O虚拟化
1.CPU虚拟化:
CPU的分级保护域:
CPU指令有4个级别:
0123
Intel的x86处理器是通过Ring级别来进行访问控制的,级别共分4层,RING0,RING1,RING2,RING3。
Windows只使用其中的两个级别RING0和RING3。
RING0层拥有最高的权限,RING3层拥有最低的权限
正常情况下:
0为操作系统3为应用
按照Intel原有的构想,应用程序工作在RING3层,只能访问RING3层的数据,操作系统工作在RING0层,可以访问所有层的数据,而其他驱动程序位于RING1、RING2层,每一层只能访问本层以及权限更低层的数据。
Guestos在Ring1
如果普通应用程序企图执行RING0指令,则会显示“非法指令”错误信息
原因:
保护计算机安全。
威胁到计算机的指令只能由操作系统来执行,防止恶意的软件随时调用硬件资源
问题:
GuestOS是一个操作系统,Hypervisor也是一个操作系统。
原先OS在Ring0上,做虚拟化之后,GuestOS运行在Ring1层。
HostOS或者Hypervisor在Ring0层。
但是两个操作系统都应该有Ring0的权限,底层硬件就不知道听谁的了
在虚拟化环境下,虚拟机操作系统指令级别为0,会产生冲突所以把虚拟机操作系统放置为1级,Hypervisor放在0级
解决方案:
全虚拟化/半虚拟化
全虚拟化:
GuestOS执行敏感指令的时候,Hypervisor也会截获这个指令,并翻译指令,然后再传给硬件资源,调用硬件,再把返回的结果传给GuestOS
过程中:
GuestOS不知道自己是一个虚拟机,它认为自己完全执行了这个敏感指令。
由于在执行的过程中,敏感指令被执行了两次,还要被Hypervisor翻译,所以效率低
半虚拟化:
半虚拟化中GuestOS知道自己是虚拟机,当它发现要执行敏感指令时,就会直接给Hypervisor发送Hypercall指令,然后Hypervisor再去调用硬件资源,再把结果返回给GuestOS
优点:
性能几乎等于物理机
缺点:
必须修改GuestOS的内核、开源的操作系统支持半虚拟化,有些闭源的操作系统不支持半虚拟化:
windows
全虚拟化和半虚拟化区别在于CPU指令传递的方式有差别:
例:
操作系统加载特殊的MOD,MOD告诉运行在它之上的操作系统,你并不是真实硬件/虚拟机
硬件辅助虚拟化:
经过了时代的发展,推出了硬件辅助虚拟化。
将所有的工作都交给CPU去处理。
在硬件辅助虚拟化中CPU保护域不再只是分为Ring0到Ring3,而是分为ROOT模式和非ROOT模式,每个模式下面再分分保护域。
(两套特权级,两个Ring0),GuestOS在非ROOT模式下的Ring0上,Hypervisor或者HostOS就运行在ROOT模式的Ring0上。
执行指令时,GuestOS先将指令发给Hypervisor,Hypervisor再发给硬件资源
需要硬件(CPU)支持:
Intervp-x、AMD-V
优点:
效率高,性能提高
目前全虚拟化、半虚拟化一般都有硬件辅助虚拟化加持
2.内存虚拟化:
应用需要内存地址标识数据的位置
012332位操作系统:
2^324GB
操作系统自身占用一部分,3.5G左右
一台物理机一般只有一条内存条。
但是一台物理机可能运行了多台虚拟机。
那就遇到一个问题:
如何分配内存空间
因为通常情况下使用内存空间有两个要求:
地址空间是连续的
内存空间要从0开始
解决办法:
通过逻辑的地址映射(虚拟机的内存读写时需要经过Hypervisor进行地址转换映射到真实物理内存)
VMM将物理内存映射给虚拟机,让虚拟机觉得自己在使用一个真实的、连续的内存。
但是其实在真实内存中,他是不连续的
高级特性:
内存复用:
内存资源不使用时,通过分配给其他的虚拟机/回收随时使用,可以回收
3.I/O虚拟化:
I:
键盘,鼠标,U盘,触摸板
O:
显示器,音响,耳机
模拟(完全虚拟):
完全使用软件来模拟真实硬件,模拟通常硬件,例如键盘鼠标,通过焦点捕获,焦点被哪个主机捕获就被哪个主机使用,性能很差,效率不高
半虚拟化:
对硬件驱动由前端(IOfrontend)直接转到后端(IObackend)调用(通过虚拟机的前端驱动将I/O指令传递给Hypervisor后端驱动,再由Hypervisor调用硬件(发送物理设备驱动)),通常仅适用于硬盘和网卡,性能好,效率较高
IO-through:
IO透传,直接分配给虚拟机物理设备,例如直接分配一个硬盘或网卡给虚拟机,需要硬件具备IO透传技术,在Xen下由Dom0分配,但是访问使用直接使用,不经过Dom0,需要硬件支持(CPU指令支持),性能最高硬件设备不经过Hypervisor,相当于把物理设备直接做虚拟化,给虚拟机使用
云计算和虚拟化:
虚拟化:
仅仅为用户提供虚拟化资源平台,用户自己安装操作系统,APP;为了提高硬件的利用率,把物理主机虚拟成多台逻辑主机。
每一台主机上都可以运行不同的操作系统
云计算:
提供多种服务;在云计算中我们主要用虚拟化来实现基础的Iaas云服务。
但是云计算中不单单是Iaas
区别:
虚拟化是一种技术
云计算是一种模式
没有虚拟化我们也能实现云计算,但是又虚拟化我们能更好的实现云计算
主流计算虚拟化技术:
计算虚拟化:
CPU虚拟化,内存虚拟化,I/O虚拟化
实现虚拟化技术:
开源:
KVMXen
优劣势:
技术免费
使用要求高,学习成本高,出问题只能自己解决
技术更新快(因为开源)
闭源:
HUAWEIFusionSphereHyper-vVMwareESXi
优劣势:
收费
学习成本低
厂商服务支持
XEN与KVM:
主流的Hypervisor架构(分类):
XEN、KVM
XEN:
属于裸金属型虚拟化,支持全虚拟化和半虚拟化
XEN:
特制用于虚拟化的操作系统,内核(特制)
Xen中的虚拟机分为两种:
Dom0DomU
Dom0:
特权用户(相当于管理员,老大)
控制所有DomU的指令传递
管理普通用户的生命周期
直接命令底层硬件
启动DomU之前,只要启动DomU
DomU:
普通用户
需要通过自身的前端驱动,将指令传递给Dom0,再有Dom0和物理硬件交互
不能直接访问硬件资源
XEN优势在于安全,但是内核是定制,维护难度,成本非常高
KVM(基于内核的虚拟机):
属于宿主型虚拟化
在硬件上安装正常的Linux操作系统,在操作系统上加载KVM模块,用于实现虚拟化功能
要实现正常使用虚拟机,需要KVM模块,QEMU模块,Libvirt模块
QEMU模块:
I/O虚拟化,功能:
调用KVM资源,结合KVM模块运行虚拟机
单独KVM:
Linux中的内核模块(程序),使Linux变成Hypervisor
KVM内核模块本身只能提供CPU和内存的虚拟化,不能提供其他的虚拟化(如I/O)
QEMU-KVM:
提供CPU、内存的虚拟化。
拦截客户机的I/O。
GuestOS的I/O被KVM拦截之后,交给QEMU处理
优点:
基于Linux内核的一个模块,维护更加简单,成本低
劣势:
一般Linux操作系统自带,Windows没有携带,需自行安装
KVM:
KVM体系架构:
Libvirt:
用于实现管理,只能管理本设备的虚拟机,提供一个接口给命令行
Virsh:
命令行,基于libvirt的命令行工具(CLI)
Virt-manager:
图形化界面基于libvirt的GUI工具
Virt-viewer:
图形化界面连接到虚机屏幕的工具
Virt-install:
命令行,创建KVM虚机的命令行工具
Others Virt-clone(虚机克隆工具)virt-topsVirt:
安全工具virt-v2v:
虚机格式迁移工具
运行模式:
安装了KVM就相当于安装KVM的LINUX内核模块,会产生三个模式(guestmode;用户mode;内核mode)
GuestMode(客户模式):
只要指的是虚拟机,以及虚拟机模拟的CPU、磁盘,等设备。
受限的CPU模式
用户Mode(用户模式):
主要运行QEMU,主要是为虚拟机模拟执行I/O操作请求
只拥有部分的控制权限,绝大多数的应用程序都运行在这个模式。
该模式出现状态异常,仅导致该应用程序崩溃
KernelMode(内核模式):
进行真正的硬件操作
代码具有对硬件所有的控制权限。
可以执行所有CPU的指令。
该模式下出现状态异常,将导致整个机器崩溃。
GuestOS需要调用硬件硬件的时候,需要先发送请求到用户模式,再到内核模式,才能调用硬件
KVMI/O操作流程:
1.默认操作流程(全虚拟化I/O(模拟))
2.Virtio(半虚拟化I/O)
1.默认操作流程:
采用全虚拟化(模拟)
由虚拟机的虚拟驱动将指令传递给KVM模块中的I/O模块处理
交给QEMU模块(经过I/O共享页)
QEMU模块将指令交由真实设备驱动,最终调用硬件资源
指令完成后,由QEMU模块报告给KVM模块,再由KVM模块的I/O模块报告给虚拟机的虚拟驱动
性能很差,效率低
《
1:
虚拟机发起I/O的操作请求,把请求发给虚拟的设备驱动
2:
KVM中模块中的I/OTrapCode会捕获这个请求
3:
然后将请求发送到I/O共享页中同时告诉QEMU这里有个请求,你来解决一下:
Notification
4:
QEMU到共享页中拿这个请求
5:
查看请求是什么要调用什么设备?
然后根据I/O请求去给真实的设备驱动发送请求
6:
设备驱动调用真实设备
7:
处理完成之后,QEMU将处理完成的信息放到共享页当中并通知KVM模块,我已经处理完成了
8:
然后KVM模块中的I/OTrapCode将信息从I/O共享页中拿出来
9:
再返回给GusetOS
》
2.Virtio(半虚拟化I/O):
KVM针对I/O效率问题提出了VirtioI/O(半虚拟化I/O)
通过虚拟机的前端驱动将指令交给QEMU后端驱动,再由QEMU交由设备驱动,不需要经过KVM模块
简化了I/O流程实现提高I/O效率(只是通过KVM来发一个通知。
请求和返回的结果全部放在一个中间的vring的一个空间中。
少了KVM模块经手的手续。
从而提高I/O虚拟化的性能),常用虚拟机网卡和磁盘
FusionCompute架构:
FusionComputer的优势:
虚拟化和物理资源统一管理
快速发放/创建虚拟机(最大可50台)
FusionCompute组件的作用:
CNA(ComputingNodeAgent,计算节点代理):
用于在本设备实现虚拟化功能,管理本虚拟机
VRM(VirtualResourceManager,虚拟资源管理器):
管理平台,VRM给管理员、用户提供一个Web的图形化界面,界面中可以看到虚拟机的状态、底层硬件资源池的状态(剩多少内存、硬盘、有多少CPU)、虚拟机的信息等等;VRM用来管理CNA集群,对CNA集群进行统一管理,资源调度
集群:
向上提供了计算、存储、网络资源
注意CNA和VRM的区别:
VRM和CNA都有管理的作用,CNA管理的是本节点上的虚拟机和资源,而VRM是从集群或者整个资源池的层面进行管理。
如果VRM对某个虚拟机进行修改或者其它生命周期的操作时,需要将命令下发给CNA节点,再由CAN去执行。
操作完成后,CNA再把结果返回给VRM,由VRM记录到数据库中。
所以尽量不要到CNA上执行虚拟机或其它资源的修改操作,以避免造成VRM数据库中的记录与实际不匹配的情况
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算虚拟化 华为云计算HCIA 计算 虚拟 华为 HCIA