虚拟化技术概述
计算资源服务化是云计算的一大难点。
- 虚拟化相对于真实,将原本存在于真实环境上的计算机系统或组件运行在虚拟出来的环境中
- 虚拟化的不同层次
- 硬件资源
- 操作系统
- 操作系统的应用程序接口
- 应用程序
- 虚拟化是表示计算机资源的抽象方法,通过虚拟化可以用与访问抽象前资源一致的方法来访问抽象后的资源。这种资源的抽象方法并不受实现、地理位置或底层资源的物理配置限制。
- 虚拟化的对象是各种各样的资源,经过虚拟化后的逻辑资源对用户隐藏了不必要的细节,用户可以在虚拟环境中实现其在真实环境中的部分或全部功能。
- 云与虚拟化:云汇聚资源,提供服务;汇聚的资源本质上就是资源的虚拟表示。
- 虚拟化典型架构
- 基础设施虚拟化
- 网络:VPN,VLAN
- 存储虚拟化:RAID,NAS网络附加存储,SAN存储局域网
- 系统虚拟化
- 软件虚拟化:JAVA虚拟机
- 基础设施虚拟化
虚拟还的好处
服务器虚拟化
- 将虚拟化技术应用于服务器上
- 物理服务器虚拟化为多个虚拟服务器
- 虚拟服务器
- 虚拟BIOS
- 虚拟处理器
- 虚拟内存
- 虚拟设备与I/O
- 目标
- 建立动态、自动化虚拟IT环境的基础
- 高性能、可扩展性和稳定性
- 同一个物理服务器上运行多个 VM
- 方便的部署
- 支持多种 IT 需求
核心技术
传统方式:时间片轮转,短进程优先,中断,本质是CPU的调度机制
- CPU全虚拟化
- 通过软件模拟物理主机的硬件设备
- 虚拟机的操作系统执行核心指令时由于不具备权限会触发异常
- Hypervisor捕获异常将该指令拦截,翻译成物理机的指令, 提交到物理机硬件完成指令计算任务,再将结果返回虚拟 机
- 每个虚拟机的核心指令都被单独的翻译执行,可以进行很 好的隔离、封装和管控
- 执行过程中需要经过复杂的异常捕获和处理的流程
- Hypervisor和虚拟机之间的内存空间需要进行保护和执行 环境切换
- CPU半虚拟化
- 为了提高执行性能,核心关键是需要解决执行虚拟机 操作系统核心指令时由于缺少权限导致的异常和异常 处理过程
- 对虚拟机的操作系统内核进行改造,使得虚拟机操作 系统内核能够共享物理机底层硬件调用
- 当虚拟机操作系统执行核心指令时,由于被替换成对 Hypervisor的物理机硬件调用,可以有效的提高执行 效率
- 除CPU之外,Hypervisor层也可以提供直接对内存、 磁盘等其他硬件的访问
- 提高了执行效率
- 需要修改虚拟机操作系统的内核,相当于虚拟机上安 装操作系统需要安装一个特殊的定制版
- 个人理解是虚拟机负责指令翻译
CPU硬件辅助虚拟化
虚拟显卡(软件模拟的方式)
- 虚拟网络计算机VNC
- 有VNC Server和VNC viewer两部分组成
- 前者完成计算交由后者负责显示
- 物理机和虚拟机共享帧缓冲区,由物理机基于特权域的VNC服务 器,将更新的显示内容放入缓冲区内,由虚拟机通过VNC协议获 取并显示。
- VMGL
- 在虚拟机操作系统部署一个与标准OpenGL库接口相同的伪库
- 伪库实现了指向物理机的远程调用用来取代原有标准OpenGL库直 接调用本地物理硬件
- 虚拟机本地的所有OpenGL调用都被转换成对物理机的服务请求
- 物理机的操作系统需要安装标准的OpenGL库,通过响应请求使用 GPU完成计算并将执行结果反馈给虚拟机进行显示
- 虚拟网络计算机VNC
- 显卡直接调用
- 物理主机将GPU单独分配给某一虚拟机,虚拟机操作系统使用物理机原生驱动和硬件
- 不支持实时迁移等特性,兼容性也较差
- 给虚拟机提供了一种可以绕开Hypervisor管理的直接访问物理机I/O设备的接口
显卡虚拟化
最关键的问题是实现一套地址翻译机制
- 在物理机上,本身就有虚拟内存
- 上面再加一层虚拟机,映射关系为
虚拟机逻辑地址GVA——虚拟机机器地址GPA——物理机逻辑地址HVA——物理机机器地址HPA - 影子页表法
- Hypervisor为虚拟机的操作系统内存页表设计一套对应的影子页表,然后将影子页表装入物理机的MMU中,完成从GVA到HPA的直接映射
- 虚拟机中的每个进程都有自己的虚拟地址空间
- Hypervisor要为虚拟机中的每个进程内存页表都维护一套 对应的影子页表
- 当虚拟机进程访问内存时,需要将该进程的影子页表装入 物理机的MMU中完成地址转换
- 本质上纯靠软件方式实现,影子页表本身需要占用大量内存空间
EPT/NPT
磁盘虚拟化主要有两类:面向网络连接的存储,代表性的有NAS;面向本地物理存储的,代表性的技术是SAN
- SAN存储区域网络
- 磁盘的读写以扇区为基本单位,磁盘上的每个磁道被等分 为若干个弧段,每个弧段称之为扇区
- 磁盘的物理读写以扇区为基本单位,扇区是磁盘最小的物 理存储单元
- 操作系统将相邻的扇区组合在一起,形成一个存储块,块是操作系统中文件系统读写数据的最小单位
- SAN是一种专门为存储建立的独立于TCP/IP网络之外的专 用存储网络,通过交换机连接存储设备形成一个存储网络 供用户访问
- 代表性技术是RAID
网络接入存储NAS
DMA
- 一个完整的DMA传输过程包括DMA请求、DMA响应、 DMA传输、DMA结束4个步骤
- DMA传输过程中不需要CPU参与,无需CPU直接控制传输,所以CPU就不需要采取中断保留和恢复现场
软件方式实现
物理机实现物理机网卡资源的虚拟化
- 将物理网卡虚拟成多个虚拟网卡vNIC
- Hypervisor利用调度手段将物理网卡接收到的数据分配给 对应的虚拟机实现vNIC功能
- 或者将物理网卡分时分配给虚拟机
- 虚拟机之间的通信
- 虚拟交换机VEB
- TAP/TUN是Linux实现的对虚拟网络设备,每个虚拟机都有这样的网络设备
组织虚拟网络
实时迁移技术
- 将整个虚拟机的运行状态完整、快速地从原宿主机的硬件 平台转移到新的宿主机硬件平台
- 实时性
- 内存页面不断滴从源虚拟机监视器拷贝到目标虚拟机监视 器,拷贝结束后,目标虚拟机开始运行,虚拟机监视器切换到 目标虚拟机上,源虚拟机终止
- 广泛应用于实时系统的硬件维护
热迁移应用领域
服务器虚拟化的一大问题是层层管理增加了很多开销,导致了大量的冗余
- Linux Container
- 一种内核虚拟化技术,提供轻量级的虚拟化
- 隔离进程和资源
- 不需要提供指令解释机制以及全虚拟化的其他复杂性
- 有效地将由单个操作系统管理的资源划分到独立的组中
- 在独立的组间平衡资源使用需求冲突
- 实现方式
- cgroups子系统,可以为特定的进程组限定可以使用的资源
- 每个子系统有自己的namespace
Docker
可以通过瘦客户端或其他与网络相连的设备访问跨平 台的应用程序,以及整个客户桌面
应用虚拟化
将应用与底层系统和硬件相分离
- 屏蔽了可能与其他应用产生冲突的内容
- 动态链接库
- 无需安装、卸载
-
Serverless架构
代表性虚拟机
KVM
- Kernel-based Virtual Machine
- 开源虚拟化模块
- 集成在Linux的各个主要发行版本中
- 使用Linux自身的调度器进行管理
- CPU管理——Intel VT-x技术
- 内存管理——影子页表法
- 设备管理——I/O数据包转发
- Xen
- VMware ESXi
- Microsoft Hyper-V
思考题
- 虚拟化的概念
- 服务器虚拟化的特性
- 服务器虚拟化的关键技术
- 其他虚拟化的相关技术
- 典型虚拟机
- 虚拟化与云计算的关系