虚拟化与云

虚拟化的必要条件:

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

另一方面,对于某些指令,则需要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等手段来保持住系统的状态

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

20201126163527

应用为中心的封装

内存虚拟化

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

IO虚拟化

虚拟装置

多核CPU上的虚拟机

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

特征:

云环境分类

上云好处

云即服务

Iaas

通过声明式编程 从而能自动化基础架构

网络互通:

云存储:

从上往下封装程度越高

Paas

认证
云数据库
中间件
容器云

Saas

混合云

优势

连接

入口分流
安全

DDoS -> WAF -> SLB -> 系统安全

容灾多活

技术难点

安全
运维

虚拟机迁移

停机并迁移数据很简单

另外一种方式是热迁移,也就是在虚拟机运行时,直接复制内存,当内存发生变更,将变更的内存再复制,直至双边一致,这跟数据库数据双写迁移原理是一样的

检查点

也就是虚拟机快照,快照就是复制内存、CPU状态等,但对于网络通信这种,则无法解决

云原生

虚拟化 -> 标准化 -> 自动化 -> 云计算 -> 云原生

云原生应用

原则

CICD
弹性
解耦
中台