云计算(4) 虚拟化技术
2023-08-09 14:53:19 # NJU # 云计算

四、虚拟化技术

1 基本概念

  • 虚拟化是云计算的核心技术,但不是其专用技术
  • 虚拟化的本质就是通过添加一个虚拟化层将原先的物理设备进行逻辑化,转化成一个文件夹或文件,实现软硬件的解耦。
  • “虚拟化技术”的两种理解方式:抽象 vs. 拆分
    • 分布式集群管理 -> 抽象成一个独立的虚拟设备
    • 一个功能强大的设备拆分成多个虚拟设备
      • 核心思想是利用软件或固件管理程序构成虚拟化层,把物理资源映射为虚拟资源。在虚拟资源上可以安装和部署多个虚拟机,实现多用户共享物理资源

1.1 计算机系统的虚拟化

  • 由位于下层的软件模块,通过向上一层软件模块提供一个与它原先所期待的运行环境完全一致的接口的方法,抽象出一个虚拟的软件或硬件接口,使得上层软件可以直接运行在虚拟的环境上。

image-20220928141658132

2 服务器虚拟化层级

image-20220928142113805

2.1 服务器虚拟化技术的发展及代表产品

image-20221028174335742

2.2 硬件级虚拟化

2.2.1 系统虚拟化

  • 添加一个称为虚拟化层的软件,管理客户操作系统,使其能够独立于主机操作系统同时运行在同一个 硬件上

    • Hypervisor
    • Virtual Machine Monitor(VMM,虚拟机监视器)

    image-20221005140516166

  • 1974年,Popek和Goldberg定义虚拟机可以看作物理机的一种==高效====隔离==的==复制==。

    • 三个要求
      • 运行在该虚拟硬件环境中的程序性能损失应该较低(高效)
      • 系统资源应该处于VMM的完全控制之中(隔离—资源受控)
      • 为程序提供与原始硬件机器基本一致的环境(复制—同质)
    • 硬件仿真(裸机虚拟化)

      • 例:高性能服务器上使用vSphere管理虚拟机
    • 寄居虚拟化

      • 例:个人笔记本使用VirtualBox管理虚拟机

2.2.2 优势

  • 封装性
    • 以虚拟机为粒度的封装使得虚拟机运行环境的保存非常便捷
      • 虚拟机快照(某个时间点的状态抓取下来并保存)
      • 虚拟机克隆(从一个虚拟机的执行环境复制出一个或多个相同的虚拟机)
      • 虚拟机挂起和恢复(暂停一个运行中的虚拟机,将其运行环境保存在磁盘上;将保存在磁盘上的虚拟机运行环境恢复到内存中)
    • 使得保存、部署更加方便,从而使得软件开发、测试和调试更加便捷;降低IT管理和维护成本
  • 多实例
    • 提高计算机性能利用率,降低计算机资源消耗
      • 不同的服务器有不同的繁忙和空闲时段,将多个物理服务器合并到少数服务器上以虚拟机运行,使用更少的服务器获得同样的整体性能,通过虚拟机的忙闲交错大大提高资源利用率;节约物理资源、人力资源、软件资源成本。
  • 隔离
    • 虚拟机中的应用程序可以在自己的操作系统中独立地运行,不影响其他工作负载
      • 提高安全性:适用于测试场景;适合作为安全软件公司的蜜罐
  • 硬件无关性
    • 屏蔽硬件差异,无缝跨硬件迁移;云计算环境中虚拟机迁移是非常重要的;【复现老旧硬件接口】
  • 特权功能
    • 在虚拟化层添加特权功能的优点:不能被客户机绕过、更容易实现
    • 事件记录和回放——入侵检测、病毒检测等

2.2.3 可与不可

可虚拟化架构 VS 不可虚拟化架构:是否能够虚拟化出满足 “同质、高效、资源受控” 的虚拟机

  • 两个或两个以上的特权级:分隔应用软件与系统软件
  • 特权指令:管理和操作关键系统资源的指令,只有在最高特权级才能执行
  • 敏感指令:操作特权资源的指令
    • 修改虚拟机运行模式或者物理机状态
    • 读写敏感的寄存器或内存,如时钟或中断寄存器
    • 访问存储保护系统、内存系统或地址重定位系统
  • 客户机操作系统的敏感指令都是特权指令才能够实现高效的虚拟化——陷入VMM

虚拟化的硬件对象:CPU,内存,I/O 设备(硬盘、网卡、鼠标、键盘等)

2.2.4 CPU虚拟化

  • 任意时刻一个物理CPU只能运行一个虚拟CPU
  • 每个客户操作系统可以使用一个或多个虚拟CPU
  • 各个操作系统之间虚拟CPU运行相互隔离,互不影响

image-20221028160515257

调度:调度问题指 VMM 决定当前哪个虚拟 CPU 在物理 CPU 上运行,保证隔离、公平和性能。

执行:虚拟 CPU 正确运行是保证虚拟机指令正确运行,实现技术包括模拟执行和监控执行。

image-20221028160608688

三种类型:

  1. 基于软件的完全虚拟化

    image-20221028161301898

  2. 基于硬件辅助的虚拟化

    image-20221028161326302

  3. 改操作系统的类虚拟化

    image-20221028174908847

    • 类虚拟化的三大优势:
      • 通过消减冗余代码、减少地址空间切换和跨特全级切换、减少内存复制等,优化虚拟化的性能开销
      • 一定程度上消除了虚拟层和上层操作系统间的语义鸿沟:操作系统内部运行状态能够被VMM获得
      • 使得硬件抽象层的抽象高度更加灵活,为实现各种不同功能的硬件抽象探索出了可行的路径。

2.2.5 内存虚拟化

  • 内存虚拟化:内存虚拟化技术把物理内存统一管理,包装成多个虚拟的物理内存提供给若干虚拟机使用,每个虚拟机拥有各自独立的内存空间。

    image-20221028175141720

  • 在没有虚拟化的操作系统中看到的内存:直接是机器地址的物理空间

  • 虚拟化后,VMM要让客户操作系统看到“假的”物理空间,两件事:

    1. 维护客户机物理地址和宿主机器的机器地址之间的映射
    2. 截获虚拟机对客户机物理地址的访问,并根据所记录的映射关系,转换成机器地址

三种类型

  1. 基于软件的完全虚拟化

    image-20221028175332059

  2. 基于硬件辅助的虚拟化

    image-20221028175354411

  3. 改操作系统的类虚拟化

    image-20221028175408820

2.2.6 I/O虚拟化

image-20221005143610078

2.3 操作系统级虚拟化

  • 可以看作是“寄居虚拟化”的一种
    • 虽然没有Hypervisor/VMM
    • 但是需要主机操作系统,在主机操作系统中插入一个虚拟化层
      • 在同一个操作系统内核内,运行多个虚拟机;虚拟机可以访问
  • 虚拟执行环境(Virtual Execution Environment)/虚拟专用系统(Virtual Private System)/容器(Container)
  • 优点
    • 最小的启动/停止开销/资源需求低/可扩展性强
    • 可同步虚拟机与宿主操作系统环境状态的变化
    • 允许虚拟机中进程访问尽可能多的主机资源
  • 缺点
    • 同一个容器中的操作系统级虚拟机必须使用相同的客户操作系统
    • 资源隔离性较差
  • 虚拟机 VS. 容器

image-20221005150707841

image-20221028180121858

2.4 Docker

  • 架构

    • 服务端(引擎),包括守护进程,接收和处理客户端请求、联系后端仓库、创建镜像、容器;
    • 客户端,提交相关请求,如获取镜像、创建容器、运行容器等;
    • 后端仓库,用来存储和管理相关资源,一些基本的镜像和库,有官方公共的仓库,也可以自行建立私有仓库。

    image-20221005150952959

2.5 不同层级虚拟化技术对比

image-20221005151139973

3 云数据中心的虚拟化

为什么要虚拟化?

  • 一台物理设备一个用户 vs. 一台物理设备多个用户:提升资源共享与复用的效率,降低成本
  • 固定大小与位置的存储空间 vs. 灵活扩展和空间分布的空间:提升可扩展性,提升存储资源使用效率
  • 为了实现服务器、存储虚拟化,要求网络也要能够方便、灵活地调整:随着虚拟机的迁移一起迁移

3.1 服务器虚拟化

  • 虚拟机和容器共存,容器的地位不断提升,目前与虚拟机相当
  • 高效率的unikernel技术
    • unikernel是使用库操作系统(LibOS)构建的专用的、单一地址空间机器镜像。
    • LibOS库操作系统:在应用程序层中实施访问控制和隔离,用户应用无需在用户模式和内核模式间切换,直接访问硬件;然而多个应用程序同时运行时隔离性不好。
    • 可使用操作系统虚拟化(虚拟机监控器VMM)克服硬件资源隔离缺陷:LibOS通过VMM驱动物理硬件,像虚拟机一样运行。

image-20221005153822512

3.2 存储虚拟化

  • 概念:存储虚拟化将系统中分散且异构的存储资源整合起来,形成一个统一的连续编址的逻辑存储空间

    image-20221005153933717

  • image-20221005154007370

  • 具体实现

    image-20221005154043004

  • 示例:VMware的vSphere提出了虚拟文件系统VMFS,允许来自多个不同主机服务器的并发访问,即允许多个物理主机同时读写同一个存储器。

    image-20221005154143381

3.3 网络虚拟化

  • 由于云计算技术的使用,云数据中心的业务集中度、服务的客户数量远远超过传统数据中心,对网络的高带宽、低拥塞的要求更高

    • 传统数据中心问题1:L2层网络拥塞、丢包严重,需要L3层协议保证重传,效率低
    • 传统数据中心问题2:二层以太网络采用生成树协议保证数据包在互连交换机回路传递,产生大量冗余。
  • 云数据中心对网络的需求

    • 提高数据传输效率:应对数据同步、备份、虚拟机迁移等的大流量
    • 提高管理效率:采用统一的交换网络减少布线、维护和扩容的成本
  • 在不改变传统数据中心网络设计的物理拓扑和布线方式前提下,引入网络虚拟化技术加以解决

    image-20221005154358772

  • 示例:VMware网络虚拟化技术

    • 虚拟网卡:每个虚拟机可以配置一个或多个虚拟网卡
    • 虚拟交换机:工作原理与物理交换机一样,满足虚拟机网卡互连
    • 分布式虚拟交换机:跨主机的虚拟交换机,保证跨主机迁移时网络配置保持一致
    • 端口组:使用同一种策略设置的一组端口,虚拟环境特有的概念

    image-20221005154521468

4 云环境中的虚拟机迁移

  • 云计算环境中虚拟机迁移的需求

    • 云计算中心物理服务器负载处于动态变化中,当无法提供额外物理资源而为了负载平衡,可将占 用热门物理资源的虚拟机迁移到其他物理服务器
    • 物理服务器定期升级的需要,升级前将虚拟机迁移到其他物理服务器,等升级完成再迁移回来
  • 分类

    • 物理机到虚拟机 P2V
    • 虚拟机到虚拟机 V2V
    • 虚拟机到物理机 V2P
  • 云计算中关注的重点:实时迁移(Live Migration)

    • 保持虚拟机运行的同时,将其从一个计算机迁移到另一个计算机,并在目的计算机恢复运行

image-20221028212907878

虚拟机迁移的具体内容

  • 内存迁移——最困难的地方

    • 第一阶段:Push;第二阶段:Stop-and-Copy;第三阶段:Pull

    image-20221027003411378

  • 网络迁移

    • 虚拟机所有网络设备,包括协议状态(如TCP连接状态)以及IP地址都要随之一起迁移;通过发送并修改相关配置实现
  • 存储设备迁移

    • 迁移数据存储需要占用大量时间和网络带宽,通常的解决办法是以共享的方式共享数据和文件系统,而非真正迁移
    • 目前大多数集群使用NAS(Network Attached Storage,网络连接存储)作为存储设备共享数据