虚拟化是云计算的基础。简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的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虚拟化套件是业界领先的虚拟化解决方案,能够帮助客户带来如下的价值,从而大幅提升数据中心基础设施的效率。
基础设施层:服务器、存储、网络、安全等设备
虚拟化层: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存储系统提供的异步远程复制特性,提供虚拟机关键数据的数据保护和容灾恢复。 |
单虚拟化场景
多虚拟化场景
私有云场景
FusionCompute架构
CNA英文全称:Compute Node Agent,CNA部署在需要虚拟化的服务器上。
VRM英文全称:Virtual Resource Management,VRM可以部署成VM或者部署在物理服务器上;VRM对外提供网页操作界面给管理维护人员。
模块 | 功能 |
---|---|
CNA | 提供虚拟计算功能。管理计算节点上的虚拟机。管理计算节点上的计算、存储、网络资源。 |
VRM | 管理集群内的块存储资源。管理集群内的网络资源(IP/VLAN),为虚拟机分配IP地址。管理集群内虚拟机的生命周期以及虚拟机在计算节点上的分布和迁移。管理集群内资源的动态调整。通过对虚拟资源、用户数据的统一管理,对外提供弹性计算、存储、IP等服务。通过提供统一的操作维护管理接口,操作维护人员通过WebUI远程访问FusionCompute对整个系统进行操作维护,包含资源管理、资源监控、资源报表等。 |
VRM
CPU虚拟化
CPU虚拟化需要解决两个问题
处理器呈现给软件的接口是指令集和寄存器。而 I/O 设备呈现给软件的接口是状态和控制寄存器。
FusionCompute计算虚拟化技术采用的是KVM技术。KVM的CPU虚拟化是基于CPU辅助的全虚拟化方案,它需要CPU虚拟化特性的支持。
FusionCompute采用的是硬件辅助全虚拟化。
CPU虚拟化
RISC:精简指令集,包含特权和非特权,敏感都在特权指令里,power架构。
CISC:复杂指令集,包含特权和非特权,敏感指令中包含非特权和特权,X86架构。
CPU虚拟化:
硬件辅助虚拟化:设定了root和non-root模式,当VM执行特权指令和非特权指令中的敏感指令时会切换到root模式下去执行,即GuestOS执行特权指令会交给处于root模式下的VMM去实现。当VM中的应用程序执行非特权指令时是直接发送给CPU去执行(上图绿色ring3包含敏感指令),CPU发现是敏感指令的时候,会由non-root切换到root下去执行该指令。
虚拟机vCPU数量不能超过单台CNA节点可用vCPU数量。多个虚拟机间可以复用同一个物理CPU,因此单CNA节点上运行的虚拟机vCPU数量总和可以超过实际vCPU数量,因为分时复用。
内存虚拟化
内存虚拟化需要解决两个的问题:
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 。