虚拟化与云

虚拟化的必要条件:

为了保证宿主机的安全性,虚拟机程序采用解释执行虚拟机发起的命令

另一方面,对于某些指令,则需要CPU的支持,才能支持虚拟化,如Intel的VT(虚拟化技术)

第一类和第二类虚拟机管理程序

两者的区别在于第二类虚拟机程序运行在锁住操作系统之上

第一类的代表有ESX Server 第二类的代表则有 VMware

服务器虚拟化技术:

高效虚拟化技术

CPU支持虚拟化技术时, 客户操作系统陷入虚拟机程序的虚拟内核态

目前已有一些研究提出通过定义一个统一的虚拟化调用接口,然后操作系统直接使用这些虚拟化接口来进行半虚拟化或者全虚拟化,而虚拟化调用接口则和真正的硬件或者虚拟机程序打交道

虚拟化调用接口

在不支持虚拟化的平台上实现虚拟化

客户及的敏感指令调用会被模拟会对虚拟机程序的指令调用,硬件不会真正执行这些指令

客户操作系统运行与虚拟机程序与用户进程之间

虚拟化的开销

VT硬件虚拟化会产生大量陷入,而陷入会对缓存、TLB等造成不利影响

软件形式的虚拟化在诸如页表管理上则需要不小的开销

VMware 原理

VMware架构

通过系统切换,将整个地址空间在宿主操作系统及VMM之间切换,这样VMM才能有对资源的完全掌控权限

虚拟化容器

chroot、namespaces、cgroups -> LXC -> Docker -> K8S

三方面的兼容性:

  1. ISA兼容:目标机器指令集兼容性
  2. ABI兼容:目标系统或者依赖库的二进制兼容性
  3. 环境兼容:配置文件 环境变量等

几种虚拟化技术:

容器隔离

容器封装

基于容器构建系统

这里在K8S中 相互协作的容器运行在同一个pod中 这个pod就是被调度的基本单位

K8S的协作 如果运行单个pod 那么系统是十分脆弱的 使用ReplicaSet等手段来保持住系统的状态

这种组件被称为控制回路:

stateDiagram-v2  [*] --> 调节项: 误差 = 期望值 - 实际值  调节项 --> 控制器: 调节器根据误差调整  控制器 --> 受控资源: 受控资源根据控制器的输出调节自身  受控资源 --> 指标监视器: 监控指标  指标监视器 --> 调节项: 输出

应用为中心的封装

内存虚拟化

虚拟机作为一个中间层,需要维护客户操作系统与真实硬件内存页表的映射

IO虚拟化

虚拟装置

多核CPU上的虚拟机

通过复用相同的内存,使用去重技术避免重复保存相同的数据,大体就是通过先判断内存块的散列值,然后再比对具体内容来判断是否能复用,当内存块被修改时,采取写时复制技术,复制出新的内存块给虚拟机使用