基本概念
虚拟化是云计算的核心技术,但不是其专用技术。
本质:虚拟化的本质就是通过添加一个虚拟化层将原先的物理设备进行逻辑化,转化成一个文件夹或文件,实现软硬件的解耦。
20 世纪 60 年代,IBM 公司推出虚拟化技术,主要用于当时的 IBM 大型机的服务器虚拟化。
云计算中服务器的虚拟化:核心思想是利用软件或固件管理程序构成虚拟化层,把物理资源映射为虚拟资源。在虚拟资源上可以安装和部署多个虚拟机,实现多用户共享物理资源。
“虚拟化技术”的两种理解方式:抽象 vs. 拆分
计算机系统的虚拟化
由位于下层的软件模块,通过向上一层软件模块提供一个与它原先所期待的运行环境完全一致的接口的方法,抽象出一个虚拟的软件或硬件接口,使得上层软件可以直接运行在虚拟的环境上。
服务器的虚拟化层级
- ISA 级别:通过物理主机的 ISA 模拟一个给定的 ISA,基本方式:代码解释
- 硬件级:虚拟化层用于虚拟化基础设施:CPU,内存,存储,I/O,网络
- 操作系统级:在操作系统中插入一个虚拟化层,一个操作系统内核运行多个虚拟机
服务器虚拟化技术的发展及代表产品
硬件级虚拟化
系统虚拟化
添加一个称为虚拟化层的软件,管理客户操作系统,使其能够独立于主机操作系统同时运行在同一个硬件上。
- Hypervisor
- Virtual Machine Monitor(VMM,虚拟机监视器)
- 硬件仿真(裸机虚拟化):高性能服务器上使用 vSphere 管理虚拟机
- 寄居虚拟化:个人笔记本使用 VirtualBox 管理虚拟机
优势
封装性:
- 以虚拟机为粒度的封装使得虚拟机运行环境的保存非常便捷
- 虚拟机快照(某个时间点的状态抓取下来并保存)
- 虚拟机克隆(从一个虚拟机的执行环境复制出一个或多个相同的虚拟机)
- 虚拟机挂起和恢复(暂停一个运行中的虚拟机,将其运行环境保存在磁盘上;将保存在磁盘上的虚拟机运行环境恢复到内存中)
- 使得保存、部署更加方便,从而使得软件开发、测试和调试更加便捷;降低 IT 管理和维护成本
多实例:
- 提高计算机性能利用率,降低计算机资源消耗:不同的服务器有不同的繁忙和空闲时段,将多个物理服务器合并到少数服务器上以虚拟机运行,使用更少的服务器获得同样的整体性能,通过虚拟机的忙闲交错大大提高资源利用率;节约物理资源、人力资源、软件资源成本。
隔离:
- 虚拟机中的应用程序可以在自己的操作系统中独立地运行,不影响其他工作负载。提高安全性:适用于测试场景;适合作为安全软件公司的蜜罐
硬件无关性:
- 屏蔽硬件差异,无缝跨硬件迁移;云计算环境中虚拟机迁移是非常重要的;【复现老旧硬件接口】
特权功能:
- 在虚拟化层添加特权功能的优点:不能被客户机绕过、更容易实现
- 事件记录和回放——入侵检测、病毒检测等
可与不可
可虚拟化架构 VS 不可虚拟化架构:是否能够虚拟化出满足“同质、高效、资源受控”的虚拟机。
两个或两个以上的特权级:分隔应用软件与系统软件
特权指令:管理和操作关键系统资源的指令,只有在最高特权级才能执行
敏感指令:操作特权资源的指令、
- 修改虚拟机运行模式或者物理机状态
- 读写敏感的寄存器或内存,如时钟或中断寄存器
- 访问存储保护系统、内存系统或地址重定位系统
客户机操作系统的敏感指令都是特权指令才能够实现高效的虚拟化——陷入 VMM
其实都可以!用不同的解决方案
硬件上的虚拟化
虚拟化的硬件对象:CPU,内存,I/O 设备(硬盘、网卡、鼠标、键盘等)
CPU 虚拟化:
- 任意时刻一个物理 CPU 只能运行一个虚拟 CPU
- 每个客户操作系统可以使用一个或多个虚拟 CPU
- 各个操作系统之间虚拟 CPU 运行相互隔离,互不影响
调度:调度问题指 VMM 决定当前哪个虚拟 CPU 在物理 CPU 上运行,保证隔离、公平和性能。
执行:虚拟 CPU 正确运行是保证虚拟机指令正确运行,实现技术包括模拟执行和监控执行。
TODO
操作系统级虚拟化
TODO
不同层级虚拟化技术对比
云数据中心的虚拟化
服务器虚拟化
虚拟机和容器共存,容器的地位不断提升,目前与虚拟机相当。
高效率的 unikernel 技术:
- unikernel 是使用库操作系统(LibOS)构建的专用的、单一地址空间机器镜像。
- LibOS 库操作系统:在应用程序层中实施访问控制和隔离,用户应用无需在用户模式和内核模式间切换,直接访问硬件;然而多个应用程序同时运行时隔离性不好。
- 可使用操作系统虚拟化(虚拟机监控器 VMM)克服硬件资源隔离缺陷:LibOS 通过 VMM 驱动物理硬件,像虚拟机一样运行。
存储虚拟化
概念:存储虚拟化将系统中分散且异构的存储资源整合起来,形成一个统一的连续编址的逻辑存储空间
示例:VMware 的 vSphere 提出了虚拟文件系统 VMFS,允许来自多个不同主机服务器的并发访问,即允许多个物理主机同时读写同一个存储器。
网络虚拟化
由于云计算技术的使用,云数据中心的业务集中度、服务的客户数量远远超过传统数据中心,对网络的高带宽、低拥塞的要求更高。
- 传统数据中心问题 1:L2 层网络拥塞、丢包严重,需要 L3 层协议保证重传,效率低;
- 传统数据中心问题 2:二层以太网络采用生成树协议保证数据包在互连交换机回路传递,产生大量冗余。
云数据中心对网络的需求:
- 提高数据传输效率:应对数据同步、备份、虚拟机迁移等的大流量
- 提高管理效率:采用统一的交换网络减少布线、维护和扩容的成本
虚拟机迁移
云计算环境中虚拟机迁移的需求
- 云计算中心物理服务器负载处于动态变化中,当无法提供额外物理资源而为了负载平衡,可将占用热门物理资源的虚拟机迁移到其他物理服务器
- 物理服务器定期升级的需要,升级前将虚拟机迁移到其他物理服务器,等升级完成再迁移回来
分类
- 物理机到虚拟机 P2V
- 虚拟机到虚拟机 V2V
- 虚拟机到物理机 V2P
云计算中关注的重点:实时迁移(Live Migration),即保持虚拟机运行的同时,将其从一个计算机迁移到另一个计算机,并在目的计算机恢复运行。
- 步骤 1:预迁移
- 步骤 2:预定资源
- 步骤 3:预复制
- 步骤 4:停机复制
- 步骤 5:提交
- 步骤 6:启动
虚拟机迁移的具体内容
内存迁移——最困难的地方
第一阶段:Push;第二阶段:Stop-and-Copy;第三阶段:Pull
迁移方案 | 具体描述(从 A 迁移到 B) | 优势与劣势 |
---|---|---|
Stop-and-Copy | A 停机,将对应内存全部复制到 B,启动 B | 方法比较简单;总迁移时间也最短; 停机时间无法接受 |
Stop-and-Copy 和 Pull 阶段结合 | A 停机,将部分内存复制到 B,启动 B,B 运行中遇到缺失内存,再到 A 内存中复制 | 停机时间很短;总迁移时间很长; Pull 阶段复制造成的性能下降,用户体验差 |
Push 和 Stop-andCopy 阶段结合 | A 不停机,保持对外服务,将变化地内存迭代地复制到 B,直到最后剩余很少要复制的再停止 A,复制最后变动到 B,启动 B | 平衡了停机时间和总迁移时间之间的矛盾; 需要有一种算法能够测定工作集,以避免反复重传;可能会占用大量的网络带宽,对其他服务造成影响 |
网络迁移
虚拟机所有网络设备,包括协议状态(如 TCP 连接状态)以及 IP 地址都要随之一起迁移;通过发送并修改相关配置实现
存储设备迁移
迁移数据存储需要占用大量时间和网络带宽,通常的解决办法是以共享的方式共享数据和文件系统,而非真正迁移
目前大多数集群使用 NAS(Network Attached Storage,网络连接存储)作为存储设备共享数据