华为云计算HCIA-计算虚拟化
云计算简介,我们为什么学云计算 有什么用?
云计算的确是最近几年兴起的话题,但是它采用的技术并不是新颖的,反而是很多年前的老技术,组合起来使用。需要涉猎范围很广,需要理解存储,网络,服务器,虚拟化等。
云计算是一种服务模式,我们常常认为我不会存储,不会Linux怎么学,这个仅仅是一个技术,综合而言,云计算就是云+计算。
—————
什么是云+计算?
利用互联网(云)提供给客户需要的计算资源/网络资源/存储资源,就是云计算。
客户需要什么我们提供什么,相对于网络运营商售卖宽带,云服务商售卖的就是他们的计算资源/网络资源/存储资源。

云计算五种基本特质:
1.按需自助服务(例如我想要多少cpu/内存多大/多少g硬盘,我都可以选)
2.随时随地的网络接入(有网络我们就可以云网站申请资源)
3.资源池化(CPU池选购,内存池,存储)
4.快速弹性伸缩(可以加资源,可以减资源,比如双十一加服务器计算资源来应对高并发)
5.按量计费(用多少花多少钱,人性化)
云计算的四种部署模式:
1.公有云:出租给公众的基础设施云
2.私有云:企业或者个人自己搭建的云
3.行业云:特定行业云
4.混合云:两种以上的云:企业不重要的放公有云,重要资源比如财务数据用私有云

—————
客户来说为何采用云计算,为何不自己部署服务器?
云服务商可以提供客户想要的任何资源,客户不用花时间去向物理硬件厂商购买服务器/交换机/路由器。客户可以让业务快速上线,缩短上线周期。方便管理。
假如客户自己搭建云,还要运维,还要等硬件设备到,还要自己搭建网络环境。黄花菜都凉了。客户还可以按需求自助服务,弹性伸缩。

最初,亚马逊做图书的那个亚马逊为了资源利旧,因为它图书这个商城服务器低峰时期并用不了那么多资源,浪费了,所以开始出售他的服务器资源。云计算就是服务模式,研究了云计算这个东西。理解了吧,云计算就是商业服务模式。
—————
云计算三种服务模式:
IAAS:基础设施即服务,我讲的都是Iaas。
PaaS: 平台即服务
SaaS: 软件即服务
我分为两个角度:客户,云服务商
iaas客户角度:客户买iaas,就是申请运营商的硬件设备,操作系统客户自己搭建,运行什么软件客户自己装,运营商就提供你一个平台,剩下的维护你客户自己全部干,出了事自己兜着。
云服务商:就是分配给客户一个底层基础设施用。
Paas::云服务商提供到系统和软件运行环境,具体装什么软件跑什么业务,客户自己弄。
SaaS:客户为了省时间,业务也交给云服务商干了。

—————
了解到我们使用云计算就是一种服务,客户来说缩短业务上线周期,客户不用关心底层物理资源该采购什么,这也是特征之一:云计算屏蔽了底层物理硬件差异。我不管你是浪潮,华为,思科,还说英特尔,IBM,都一样。
—————
如何实现云计算?
先要了解什么是虚拟化技术,
在早期,站在服务商看,我的CPU资源跑一个业务才百分之五,太浪费了,但是还要和cpu百分之80的机子用一样的电,占用一样的机柜被收取昂贵的房租,其他客户如果想增加业务,我不可能和这个客户用同一个物理机啊,不安全啊,要部署新的物理机,浪费。那么我们可以把物理资源虚拟化,每个人用一点点,这样业务都跑一个机子,cpu等资源利用好了,也节省房租了是吧。
1.虚拟化四大特点:分区/隔离/封装/隔离
分区:物理机运行多个虚拟机
隔离:安全,虚拟机中毒一个,其他没事
独立:虚拟机相对于硬件独立,无需修改,即可运行在所有物理机上
封装:虚拟机封装成文件,可以迁移
虚拟化是实现云计算手段之一,并非核心关注点。在Iaas层虚拟化支持基础。

2.虚拟化思维图
四种虚拟化架构:裸金属虚拟化/寄居虚拟化/混合虚拟化/操作系统虚拟化
三种虚拟化种类:完全虚拟化/半完全虚拟化/硬件辅助虚拟化
虚拟化技术:KVM/Xen/Docker等容器技术

虚拟化的架构:分为裸金属虚拟化/寄居虚拟化/混合系统虚拟化/操作系统虚拟化
裸金属虚拟化:物理硬件(服务器)上直接部署Hypervisor,然后部署虚拟机,每个虚拟机上跑操作系统Linux或者win.比如fusionsphare(华为),VMware EsxServer
宿主虚拟化:物理硬件上部署宿主操作系统,再部署hypervisor,再部署虚拟机跑系统。比如windows上的虚拟化软件就有VMware workstation(VMware公司),hyper-v(微软公司),MacBook上虚拟化软件:VMware fusion
混合虚拟化:物理硬件上部署操作系统,有虚拟硬件管理模块在操作系统里,虚拟机跑操作系统上。
操作系统虚拟化:物理硬件上部署一个操作系统,操作系统上Hypervisor和虚拟机操作系统,代替的是容器,容器专门针对用户程序。

华为云计算入门-计算虚拟化-编程知识网

Hypervisor:虚拟化层,也叫虚拟化监视器VMM(Virtual Machine Monitor)
—————
了解一下什么是虚拟机(Virtual machine):1.由VMM提供百分之八十以上高效独立的OS。
2.拥有自己的虚拟硬件(CPU/内存memory/网络/IO/存储)
3.对于virtual os 的上层硬件来说,虚拟机就是真实机器
4.Virtual machine monitor(VMM虚拟化监视机)
华为云计算入门-计算虚拟化-编程知识网

学习虚拟化实现之前理解x86 CPU结构与虚拟化的关系
X86 cpu架构如图:
华为云计算入门-计算虚拟化-编程知识网

CPU为了保证程序代码执行的安全性、多用户的独立性、保护OS的正常运行,提出了CPU执行状态的概念。这样能够限制不同程序之间的访问能力,避免一个程序获取另一个程序的内存数据造成数据混乱,同时也避免了程序错误的操作物理硬件。一般CPU都会划分为 用户态 和 内核态 ,x86的CPU架构更是细分为了Ring3~0四种状态。
粗略而言,GuestOS和VMM都属于运行在Ring3上的应用程序,GuestOS操作硬件设备时并执行操作指令时,VMM会将该操作指令监控、捕获、检测后将指令传递给HostOS,HostOS会将GuestOS发出的运行于用户态的操作指令模拟为核心态指令。
华为云计算入门-计算虚拟化-编程知识网
如图,Guest os 实际上与宿主的APP应用程序同处与RING3用户态,是没有权限直接调用宿主机硬件IO以及其他核心指令的,但是虚拟机操作系统内核以为自己是真实操作系统,它认为自己有权限调动硬件IO。我们不可能给虚拟机内核以Ring0内核态的权限,比如Ring0指令就可能涉及到系统的重启,虚拟机如果启用这个命令,物理机就会重启,影响其他虚拟机。
虚拟机内核就困惑了,我明明运行在应该运行在Ring0为什么不能执行Ring0的核心指令,为什么不能重启或者其他动作?它就困惑到质壁分离。为了解决这些问题,提出了完全虚拟化/半完全虚拟化/硬件辅助虚拟化。具体请参考刘超的通俗云计算 https://blog.csdn.net/popsuper1982/article/details/79463248
虚拟化参考:JmilkFan_范桂飓:https://blog.csdn.net/Jmilk/article/details/51031118

虚拟化类型:完全虚拟化/半完全虚拟化/硬件辅助虚拟化
全虚拟化:GuestOS可以直接在全虚拟化VMM上运行而不需要对GuestOS本身的核心代码做任何修改,全虚拟化的GuestOS具有完全的物理机特性。即VMM会为GuestOS抽象模拟出它所需要的包括CPU、磁盘、内存、网卡、显卡等抽象硬件资源,所以全虚拟化的GuestOS并不会知道自己其实是一台虚拟机。
当我们使用GuestOS的时候,不可避免的会调用GuestOS中的 虚拟设备驱动程序 和 核心调度程序 来操作硬件设备。与HostOS的不同在于,HostOS运行在CPU的核心态中,这就表示HostOS可以直接对硬件设备进行操作。但GuestOS作为一个运行在CPU用户态中应用程序,不能够直接的操作硬件设备。为了解决这个问题,VMM引用了两个机制——特权解除 & 陷入模拟。
特权解除:也称之为 翻译,当GuestOS需要调用运行在核心态的指令时,VMM就会动态的将核心态指令捕获并调用若干运行在非核心态的指令来模拟出期望得到的效果(GuestOS和VMM是运行在用户态上的应用程序),从而将核心态的特权解除。解除了核心态的特权后,就能够在GuestOS中执行大部分的核心态指令了。但是,这仍然不能完美的解决问题。因为在一个OS的指令集中还存在着一种敏感指令(可能是内核态,也可能是用户态)。此时就需要陷入模拟的实现。
陷入模拟:无论是HostOS还是GuestOS,只要是一个OS都必然会存在有敏感指令(reboot、shutdown等)。试想如果我们希望将GuestOS重启,并在GuestOS中执行了reboot指令,但是却将HostOS给重启了,这将会非常糟糕。VMM的陷入模拟机制就是为了解决这个问题。e.g. 在GuestOS中执行了敏感指令reboot时,VMM首先会将敏感指令reboot捕获、检测并判定其为敏感指令。此时VMM就会陷入模拟,将敏感指令reboot模拟成一个只针对GuestOS进行操作的、非敏感的、并且运行在非核心态上的"reboot"指令,最后CPU执行虚拟机的重启操作。
由于全虚拟化VMM会频繁的捕获这些核心态的和敏感的指令,将这些指令进行转换之后,再交给CPU执行。所以 经过了两重转换,导致其效率会比半虚拟化更低,但全虚拟化VMM应用程序的好处在于其不需要对GuestOS的核心源码做修改,所以全虚拟化的VMM可以安装绝大部分的OS(暂时来说只有已Linux、open soralis、BSD等几种OS开源了内核代码)。典型的全虚拟化软件有 —— VMWare、Hyper-V、KVM-x86(复杂指令集)。
华为云计算入门-计算虚拟化-编程知识网

可以知道,全虚拟化VMM需要特权解除(通过翻译解决Guest内核在Ring3用户态无法执行调用核心态指令调用物理IO资源问题)与陷入模拟(解决Guest os执行敏感指令等问题)两个机制。Guestos并不知道自己是虚拟机
全虚拟化虚拟化软件VMM开发难度大,好处是易部署,不用修改虚拟机系统;对于客户方便。
半虚拟化:半虚拟化是需要GuestOS协助的虚拟化。因为在半虚拟化VMM中运行的GuestOS,都需要将其内核源码进行都进过了特别的修改。半虚拟化VMM在处理敏感指令和内核态指令的流程上相对更简单一些。在半虚拟化VMM上运行的GuestOS都需要修改内核代码,主要是修改GuestOS指令集中的敏感指令和核心态指令。让HostOS在捕抓到没有经过半虚拟化VMM模拟和翻译处理的GuestOS内核态指令或敏感指令时,HostOS也能够准确的判断出该指令是否属于GuestOS(GuestOS知道自己是虚拟机)。这样就可以高效的避免了上述问题。典型的半虚拟化软件有——Xen、KVM-PowerPC(简易指令集)。

硬件辅助虚拟化:
硬件辅助全虚拟化主要使用了支持虚拟化功能的CPU进行支撑,CPU可以明确的分辨出来自GuestOS的特权指令,并针对GuestOS进行特权操作,而不会影响到HostOS。
华为云计算入门-计算虚拟化-编程知识网

总结:全虚拟化与半虚拟化的不同在于需不需要对Guest os核心代码修改。
全虚拟化不需要Guest os 修改核心代码,由VMM的特权解除(翻译核心指令)与陷入模拟(解决虚拟机敏感指令不会影响到物理机)机制完成。
半完全虚拟化是另一种类似于全虚拟化的技术,它使用Hypervisor分享存取底层的硬件,但是它的guest操作系统集成了虚拟化方面的代码,guest OS能配合Hypervisor来协作实现虚拟化。(guest操作系统意识到自己是处于虚拟化环境)(Xen)(阿里云采用的是Xen)
半虚拟化模型
优点:与全虚拟化相比,架构更精简,整体速度会有一定优势。
缺点:需要对Guest OS修改,所以用户体验比较麻烦。
硬件辅助虚拟化(Hardware Assisted Virtualization)
Intel/AMD等硬件厂商通过对部分全虚拟化和半虚拟化使用到的软件技术进行硬件化来提高性能。硬件辅助虚拟化技术常用于优化全虚拟化和半虚拟化产品,而不是独创一派。(VMware Workstation,VirtualBox,KVM,VMware ESX和Xen)优点:通过引入硬件技术,使虚拟技术更接近物理机速度。

虚拟化技术:
1.KVM
KVM是集成到linux内核的系统虚拟化模块,使用linux自身调度器进行管理,工作在X86架构且需支持硬件辅助虚拟化技术(Intel VT和AMD-V)。使用全虚拟化技术,采用混合虚拟化架构。
华为云计算入门-计算虚拟化-编程知识网

Xen :
Xen是第一类运行在裸机上的虚拟化管理程序(Hypervisor)。它支持全虚拟化和半虚拟化,属于裸金属架构。Xen支持hypervisor和虚拟机互相通讯。Xen最重要的优势在于半虚拟化,此外未经修改的操作系统也可以直接在xen上运行,能让虚拟机有效运行而不需要仿真,因此虚拟机能感知到hypervisor,而不需要模拟虚拟硬件,从而能实现高性能。
VMWare ESX或vSphere(升级)
vSphere是完全虚拟化,属于裸金属架构。独立安装和运行在祼机上的系统,因此与VMware Workstation软件不同的是它不再依存于宿主操作系统之上。vSphere将应用程序和操作系统从底层硬件分离出来,从而简化了IT操作。用户现有的应用程序可以看到专有资源,而服务器则可以作为资源池进行管理。因此,用户的业务将在简化但恢复能力极强的IT环境中运行。

华为云计算入门-计算虚拟化-编程知识网

主流的Hypervisor架构:KVM架构与Xen架构:
KVM是在Host os(必须linux)上镶嵌一个KVM模块,使内核成为Hypervisor。Host kernel与VM对于共享区域的访问和映射 无需经过Hypervisor的授权,故尔访问路径较短。kvm采用全虚拟化技术(不修改Guest kernel),搭配硬件辅助虚拟化(支持intel-VT/AMD-V). 混合虚拟化架构。
Xen轻量级Hypervisor,直接运行在物理硬件上,特权虚机Domain 0 IO虚拟化虚拟机管理。支持全虚拟化+半虚拟化。

华为云计算入门-计算虚拟化-编程知识网

华为计算虚拟化:CPU虚拟化、内存虚拟化、IO虚拟化
CPU虚拟化:总资源=服务器CPU个数 * 单个CPU x 核数kernel * 线程(超线程为2,单线程为1)
例如:某服务器两个主频为2.6GHZ的CPU,每个CPU四核,超线程。因此每个CPU拥有4kernel2=8个线程,一个服务器两个CPU,则服务器总共有VCPU=24*2=16个。总资源为16 *2.6GHZ=41.6GHZ。
虚拟机VCPU数量不能超过单台CNA主机可用VCPU数量。多个虚拟机之间可以复用一个物理CPU,因此单台CNA主机节点上虚拟机使用的VCPU数量可以大于实际CNA主机可用VCPU数量。复用比华为里为1:3
CPUQoS:份额,预留,限额。
CPU资源限额:控制虚拟机占用物理资源使用的上限。
CPU资源份额:定义了虚拟机在竞争物理CPU资源时按比例分配计算资源。
CPU预留资源:定义了虚拟机在竞争物理CPU时最低分配的计算资源。
QoS:Quality of Service服务质量

内存虚拟化:
虚拟机内存分配
Host physical memory指虚拟机管理程序上的可用内存。
Guest physical memory指运行在VM上的Guest OS可用的内存。
Guest virtual memory 指Guest os 向应用程序提交一个连续的内存的虚拟地址空间,它是在虚拟机中运行的应用程序的内存
华为云计算入门-计算虚拟化-编程知识网

主机内存超分配:
Host memory 与Guest memory并不一一对应。
可以超额分配内存给VM,复用比1:1.5
通过内存复用技术实现超分配功能,复用比1:1.5
例如,Host memory内存为4G,通过超分配技术,1:1.5,Guest memory=4*1.5=6G
那么什么是内存复用技术?
内存复用包括三个,内存共享写时复制;内存置换;内存气泡
内存共享写时复制:虚拟机的虚拟内存是连续的,但是在主机上映射的物理内存并不是连续的。多个虚拟机用可以占用同一物理内存空间machine memory执行只读操作。当某个虚拟机需要执行【写】操作时,开辟复制相同内存空间供该虚拟机使用并建立新的映射

内存置换:冷点内存数据置换到磁盘中 热点内存继续保留内存

内存气泡技术:hypervisor将空闲的虚拟机的内存释放给内存使用率高的虚拟机使用

华为虚拟化平台通过智能复用以上三种技术,将内存复用比提高到150%

内存QoS:预留,份额。没有限额(因为CPUQoS可以限制VM使用CPU资源大小,但是对于内存QoS来说不需要限额因为每个VM的Guest physical memory内存都是固定的也相当于限额了)
内存预留:虚拟机预留的最低物理内存(预留的内存会被虚拟机独占,一旦内存被虚拟机预留,即使虚拟机实际内存使用量不超过预留内存量,其他虚拟机也无法抢占该虚拟机空闲的虚拟内存资源。
内存份额:适用资源复用场景,按比例分配内存资源

—————
华为虚拟化特性:
1.虚拟化的特点-分区,封装,隔离,独立。
2.华为虚拟化产品特性:集群特性;虚拟机特性
-集群特性介绍:高可用-HA、负载均衡-LB、易扩容、内存复用(内存共享内存复用内存置换)
-虚拟化特性介绍:、虚拟机创建、模板部署虚拟机、虚拟机复制、虚拟机删除、快照、资源热添加、console(VNC)、NUMA技术
—虚拟机特性:快速部署、虚拟机克隆,资源管理(CPU QoS,内存QoS,磁盘扩容,网卡增删),console控制台(VNC登陆),其他(支持快照,usb设备、PCI设备、GPU设备及光驱绑定或挂载)

高级特性前提是Tools:
什么是Tools呢?
Tools负责给虚拟机的状态信息与硬件信息。负责内核态的硬件驱动(快照,热迁移,在线调整虚拟机规格,网卡QoS…),负责用户态的vm-agent虚拟代理(获取虚拟机IP地址,获取虚拟机状态,虚拟机软关机,虚拟机重启…)

华为虚拟机几种高级特性:
1.虚拟机热迁移:虚拟机热迁移是后续动态资源调度DRS与分布式电源管理技术DPM的基础
特点:基于内存压缩技术,虚拟机热迁移效率提高一倍。
-虚拟机磁盘位置不变,仅改变数据存储的映射关系
华为云计算入门-计算虚拟化-编程知识网

2.存储热迁移:热迁移可以使客户业务在无损情况下动态调整虚拟机存储资源,以实现设备维护,存储DRS资源调整等操作。
-变更虚拟机的数据存储

华为云计算入门-计算虚拟化-编程知识网

3.无共享热迁移
华为云计算入门-计算虚拟化-编程知识网

—集群特性

HA:高可用,CNA主机故障,数据存储故障,Windows蓝屏故障
负载均衡:集群资源调度,DRS规则,电源管理
基本特性:内存复用,NUMA
其他:IMC

DRS动态资源调度:DRS(Dynamic Resource Schedule)又称为计算资源调度自动化。
DRS是实现自动负载均衡的基础
Fusioncompute的计算集群,配合基于VIMS文件系统的共享存储;DRS算法实时监控集群中每个计算节点上计算资源的使用情况,引用VMOTION功能,智能迁移负荷高 节点上的虚拟机到计算资源充足的节点上去;均衡各节点资源并保证业务有充足资源可用,因此,DRS是实现自动负载均衡的基础。
聚集虚拟机,互斥虚拟机,虚拟机到主机。

DPM分布式电源管理:DPM(Distributed power management)又称为电源管理自动化。
Fusioncompute计算集群,配合基于VIMS文件系统的共享存储;DPM算法能够综合业务量与物理资源使用情况,利用DRS功能,合并虚拟机腾出空闲主机达到自动节能的目的。
-DPM需要集群开启DRS功能才能开启。
华为云计算入门-计算虚拟化-编程知识网

华为云计算入门-计算虚拟化-编程知识网

—虚拟机特性:快速部署、虚拟机克隆,资源管理(CPU QoS,内存QoS,磁盘扩容,网卡增删),console控制台(VNC登陆),其他(支持快照,usb设备、PCI设备、GPU设备及光驱绑定或挂载)

—————
华为存储虚拟化
请看其他文章。
有关于计算虚拟化、CPU指令集、虚拟机内核 中引用了其他博主链接,详情请参阅。
本文可以转载,附原博文链接。