【干货收藏】一文读懂FusionSphere虚拟化解决方案
✍️ 首先我们先看一下什么叫虚拟化?
在计算机技术中,虚拟化是一种资源管理技术,它将计算机的各种实体资源(处理器、内存、磁盘、网络适配器等)予以抽象,转换后呈现并可供分割、组合为一个或多个计算机配置环境。这种资源管理技术打破了实体结构不可分割的障碍,使这些资源在虚拟化后不受现有资源的架设方式、地域或物理配置限制,从而让用户可以更好地应用计算机硬件资源,提高资源利用率。
✍️ 虚拟化及其本质
虚拟化是云计算的基础。简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。
在计算机方面,虚拟化一般指通过对计算机物理资源的抽象,提供一个或多个操作环境,实现资源的模拟、隔离或共享等。
本质上,虚拟化就是由位于下层的软件模块,通过向上一层软件模块提供一个与它原先所期待的运行环境完全一致的接口的方法,抽象出一个虚拟的软件或硬件接口,使得上层软件可以直接运行在虚拟环境上。通过空间上的分割、时间上的分时以及模拟,虚拟化可将一份资源抽象成多份,亦可将多份资源抽象成一份。
- 分区:资源分区
- 隔离:虚拟机之间互不影响
- 封装:虚拟机封装成文件
- 独立:虚拟机自认为在物理机上,有独立硬件
✍️ 虚拟化目标及其方法:
分类标准 | 分类 | 步骤详解 |
---|---|---|
虚拟化对象 | CPU虚拟化 | 目标是使虚拟机上的指令能被正常执行,且效率接近物理机。 |
虚拟化对象 | 内存虚拟化 | 目标是能做好虚拟机内存空间之间的隔离,使每个虚拟机都认为自己拥有了整个内存地址,且效率也能接近物理机。 |
虚拟化对象 | I/O虚拟化 | 目标是不仅让虚拟机访问到他们所需要的 I/O 资源,而且要做好它们之间的隔离工作,更重要的是减轻由于虚拟化所带来的开销。 |
虚拟化过程 | 全虚拟化 | 使用VMM实现CPU、内存、设备 I/O 的虚拟化,而 Guest OS 和计算机系统硬件都不需要进行修改。该方式兼容性好,但会给处理器带来额外开销。 |
虚拟化过程 | 半虚拟化 | 使用VMM实现CPU和内存虚拟化,设备 I/O 虚拟化由 Guest OS 实现。需要修改 Guest OS ,使其能够与VMM协同工作。该方式兼容性差,但性能较好。 |
虚拟化过程 | 硬件辅助虚拟化 | 借助硬件 (主要是处理器)的支持来实现高效的全虚拟化。改方式不需要修改Guest OS ,兼容性好。该技术将逐渐消除软件虚拟化技术之间的差别,成为未来的发展趋势。 |
✍️ FusionSphere虚拟化方案作用
华为FusionSphere虚拟化套件是业界领先的虚拟化解决方案,能够帮助客户带来如下的价值,从而大幅提升数据中心基础设施的效率。
- 帮助客户提升数据中心基础设施的资源利用率。
- 帮助客户成倍缩短业务上线周期。
- 帮助客户成倍降低数据中心能耗。
- 利用虚拟化基础设施的高可用和强恢复能力,实现业务快速自动化故障恢复,降低数据中心成本和增加系统应用的正常运行时间。
✍️ 服务器虚拟化方案的架构:
基础设施层:服务器、存储、网络、安全等设备
虚拟化层:FusionCompute/VMWare/FusionStorage/FusionNetwork(FN的功能已经被Neutron替代)
资源管理层:FusionManager(1、异构虚拟化统一管理 2、异构设备统一管理 3、多数据中心统一管理)
多数据中心统一管理:Top-local实现,即本地DC部署local FM、然后在这几个DC中选择一个部署Top FM
Top FM->ManagerOne(有两个版本,一个是FM、另一个是Openstack)
部件 | 说明 |
---|---|
FusionCompute | 必选部件FusionCompute是云操作系统软件,主要负责硬件资源的虚拟化,以及对虚拟资源、业务资源、用户资源的集中管理。它采用虚拟计算、虚拟存储、虚拟网络等技术,完成计算资源、存储资源、网络资源的虚拟化。同时通过统一的接口,对这些虚拟资源进行集中调度和管理,从而降低业务的运行成本,保证系统的安全性和可靠性,协助运营商和企业构筑安全、绿色、节能的云数据中心能力。 |
FusionManager | 可选部件FusionManager主要对云计算的软件和硬件进行全面的监控和管理,实现同构,异构VMware虚拟化多资源池管理,软硬件统一告警监控,并向内部运维管理人员提供管理门户。 |
eBackup | 可选部件:HyperDP->BCManager eBackup,备份eBackup是虚拟化备份软件,配合FusionCompute快照功能和CBT(Changed Block Tracking)备份功能实现FusionSphere的虚拟机数据备份方案。 |
UltraVR | 可选部件:UltraVR->BCManager eReplication,容灾UltraVR是容灾业务管理软件,利用底层SAN存储系统提供的异步远程复制特性,提供虚拟机关键数据的数据保护和容灾恢复。 |
✍️ FusionSphere应用场景
单虚拟化场景
- 只采用FusionCompute作为统一的操作维护管理平台对整个系统进行操作与维护的应用场景。
多虚拟化场景
- 多套虚拟化环境需要进行统一管理
- 统一管理和维护:支持同时接入FusionCompute和VMware虚拟化环境,对多虚拟化环境的资源和业务进行统一的管理和维护。
- 统一监控告警:支持对多个虚拟化环境、多种物理设备的告警进行统一接入、监控和管理。
私有云场景
- 多租户共享VPC场景
- 多租户私有VPC场景
FusionCompute架构
CNA英文全称:Compute Node Agent,CNA部署在需要虚拟化的服务器上。
- VNA:与VRM通信
- UVP:提供资源虚拟化
VRM英文全称:Virtual Resource Management,VRM可以部署成VM或者部署在物理服务器上;VRM对外提供网页操作界面给管理维护人员。
模块 | 功能 |
---|---|
CNA | 提供虚拟计算功能。管理计算节点上的虚拟机。管理计算节点上的计算、存储、网络资源。 |
VRM | 管理集群内的块存储资源。管理集群内的网络资源(IP/VLAN),为虚拟机分配IP地址。管理集群内虚拟机的生命周期以及虚拟机在计算节点上的分布和迁移。管理集群内资源的动态调整。通过对虚拟资源、用户数据的统一管理,对外提供弹性计算、存储、IP等服务。通过提供统一的操作维护管理接口,操作维护人员通过WebUI远程访问FusionCompute对整个系统进行操作维护,包含资源管理、资源监控、资源报表等。 |
- 提供虚拟计算功能。
- 管理计算节点上的虚拟机。
- 管理计算节点上的计算、存储、网络资源。
VRM
- 管理集群内的块存储资源。
- 管理集群内的网络资源(IP/VLAN),为虚拟机分配IP地址。
- 管理集群内虚拟机的生命周期以及虚拟机在计算节点上的分布和迁移。
- 管理集群内资源的动态调整。
- 通过对虚拟资源、用户数据的统一管理,对外提供弹性计算、存储、IP等服务。
- 通过提供统一的操作维护管理接口,操作维护人员通过WebUI远程访问FusionCompute对整个系统进行操作维护,包含资源管理、资源监控、资源报表等。
CPU虚拟化
CPU虚拟化需要解决两个问题
- 如何模拟CPU指令 (所有敏感指令)
- 敏感指令:可以读写系统关键资源的指令叫做敏感指令。
- 特权指令:决大多数的敏感指令是特权指令,特权指令只能在处理器的最高特权级 (内核态)执行。
- 如何让多个VM共享CPU
- 利用与Native操作系统类似的机制—通过定时器中断,在中断触发时陷入VMM,从而根据调度机制进行调度。
处理器呈现给软件的接口是指令集和寄存器。而 I/O 设备呈现给软件的接口是状态和控制寄存器。
FusionCompute计算虚拟化技术采用的是KVM技术。KVM的CPU虚拟化是基于CPU辅助的全虚拟化方案,它需要CPU虚拟化特性的支持。
FusionCompute采用的是硬件辅助全虚拟化。
CPU虚拟化
- ring0:OS内核,处于内核态,特权指令
- ring1/2:驱动程序
- ring3:一般应用程序,用户态,非特权指令
RISC:精简指令集,包含特权和非特权,敏感都在特权指令里,power架构。
CISC:复杂指令集,包含特权和非特权,敏感指令中包含非特权和特权,X86架构。
CPU虚拟化:
- 全虚拟化:Hypervisor逐条扫描VM的二进制代码,发现敏感指令和特权指令进行二进制翻译,该方式会占用Hypervisor资源,导致性能下降。
- 半虚拟化:对于GuestOS来说他认为自己是台真实物理机,所以不能感知Hypervisor,所以需要修改GuestOS,让其感知Hypervisor,并将非特权指令中的敏感指令全部替换(替换完上图ring3可直接发给硬件执行)、让GuestOS知道Hypervisor并主动将特权指令通过Hypercall超级调用发送给Hypervisor陷入模拟。
- 硬件辅助虚拟化:Inter的VT-X以及AMD的AMD-V,将CPU划分为root模式以及non-root模式,当要执行特权指令和敏感指令的时候就从non-root切换到root,并通过Hypervisor陷入模拟之后执行该指令。
硬件辅助虚拟化:设定了root和non-root模式,当VM执行特权指令和非特权指令中的敏感指令时会切换到root模式下去执行,即GuestOS执行特权指令会交给处于root模式下的VMM去实现。当VM中的应用程序执行非特权指令时是直接发送给CPU去执行(上图绿色ring3包含敏感指令),CPU发现是敏感指令的时候,会由non-root切换到root下去执行该指令。
虚拟机vCPU数量不能超过单台CNA节点可用vCPU数量。多个虚拟机间可以复用同一个物理CPU,因此单CNA节点上运行的虚拟机vCPU数量总和可以超过实际vCPU数量,因为分时复用。
内存虚拟化
内存虚拟化需要解决两个的问题:
- 从物理地址0开始的:物理地址0只有一个,无法同时满足所有客户机从0开始的要求;
- 地址连续:虽然可以分配连续的物理地址,但是内存使用效率不高,缺乏灵活性。
KVM中,虚机的物理内存即为qemu-kvm进程所占用的内存空间。KVM使用CPU辅助的内存虚拟化方式。
MMU(内存管理单元),保存着HPA到HVA的映射关系。
影子页表存着GVA-GPA-HVA的映射关系,由VMM来维持,软件实现。
Intel的CPU提供了EPT (Extended Page Tables,扩展页表)技术,直接在硬件上支持GVA->GPA->HPA的地址转换,硬件实现。
AMD提供的类似技术叫做NPT,即 Nested Page Tables 。
相关文章
- shellcode免杀「建议收藏」
- “双击Pycharm无响应”解决方案「建议收藏」
- compoundbutton调用setChecked触发onCheckedChanged的终极解决方案;「建议收藏」
- 【解决方案】“‘javac’不是内部或外部命令,也不是可运行的程序或批处理文件”「建议收藏」
- 分布式事务解决方案之TCC(Hmily)「建议收藏」
- ORA-01017解决方案「建议收藏」
- 同步锁-线程安全问题解决方案「建议收藏」
- CSS Margin中5个经典布局解决方案,重难点知识,记得收藏复习
- Oracle查询:您的数据库解决方案(oracle或查询)
- 容器MySQL 非安装容器:快速部署解决方案(mysql非安装)
- MySQL 远程连接1045错误解决方案(mysql远程1045)
- MySQL数据库连接失败:PHP解决方案(phpmysql失败)
- MySQL 数据库:功能强大的数据存储解决方案(mysql 数据库概述)
- 深入理解Oracle企业级数据库解决方案(oracle enti)
- ServerApplicationUnavailable出现的原因及解决方案小结
- 让codeigniter与swfupload整合的最佳解决方案