虚拟化

虚拟化意味着对计算机资源的抽象

传统的数据中心(IDC)逐渐过渡到虚拟化数据中心,即采用虚拟化技术将原来数据中心的物理资源进行抽象整合。

虚拟化可以用于资源的重组和隔离

  • 不连续虚拟连续,物理内存与虚拟内存
  • 一虚拟多,一台物理机上运行多个虚拟机
  • 多虚拟一,多台物理机模拟一个高性能计算机

服务器虚拟化

将一个或多个物理服务器虚拟成多个逻辑上的服务器

优点:

  1. 分区:在一个物理机上运行多个OS
  2. 隔离:从硬件层面隔离系统故障和安全威胁
  3. 封装:将虚拟机封装成与硬件配置无关的文件

服务器虚拟化分类

根据虚拟化层实现方式的不同分为:

裸金属虚拟化(Bare-Metal,第1类虚拟化)

直接把VMM安装在服务器硬件设备上

本质上VMM也可以认为是一个操作系统,常称为Hypervisor

Hypervisor实现从虚拟资源到物理资源的映射

Hypervisor保证了各个客户虚拟系统的有效隔离

云计算中的虚拟化技术 - 图1

宿主机没有操作系统,支持创建运行不同操作系统的虚拟机

主机虚拟化(Hosted,第2类虚拟化)

客户机的OS可以和主机OS不同

这类虚拟化架构系统性能损耗比较大

云计算中的虚拟化技术 - 图2

宿主机有操作系统,支持创建运行不同操作系统的虚拟机

操作系统虚拟化

不支持创建运行不同操作系统的虚拟机,只能实现与宿主机操作系统相同的隔离的程序运行环境,是一种轻量级虚拟化技术

服务器虚拟化-底层实现

CPU虚拟化

全虚拟化:主要采用优先级压缩和二进制代码翻译技术这两个技术。

二进制翻译技术简称BT,能够把一种处理器上的二进制程序翻译到另一种处理器上执行。

半虚拟化:其通过修改Guest OS的代码,使其将那些和特权指令相关的操作都转换会发给VMM的Hypercall(超级调用),而且Hypercall支持Batch(批处理)和异步这两种优化方式,使得通过Hypercall能得到近似于物理机的速度

半虚拟化指的是虚拟机系统和虚拟化软件层通过交互来改善性能和效率。

半虚拟化涉及修改操作系统内核来将不可虚拟化的指令替换为可直接与虚拟化层交互的超级调用(hypercalls)。

硬件辅助虚拟化:主要有Intel的VT-x和AMD的AMD-V这两种技术,这两种技术在核心思想上非常相似,通过引入新的指令和运行模式,来让VMM和Guest OS能分别运行在其合适的模式下。(这是目前的主流CPU虚拟化实现方式)

技术路线比较:

云计算中的虚拟化技术 - 图3

内存虚拟化

内存虚拟化技术对物理内存进行统一管理,并抽象成多个虚拟的逻辑内存空间提供给若干用户使用,每个用户可以拥有各自独立的内存空间 。

与普通物理机环境相比,虚拟机环境下需要处理4种内存地址

  • 客户机虚拟地址 GVA(Guest Virtual Address)
  • 客户机物理地址 GPA(Guest Physical Address)
  • 宿主机虚拟地址 HVA(Host Virtual Address)
  • 宿主机物理地址 HPA(Host Physical Address

EPT(Extended Page Table,扩展页表):内存虚拟化 三种地址

EPT通过使用硬件技术,使其能在原有的页表的基础上,增加了一个EPT页表,通过这个页表能够将Guest的物理地址直接翻译为主机的物理地址,从而减低整个内存虚拟化所需的Cost。

I/O虚拟化

I/O设备虚拟化技术把真实的设备统一管理起来,包装成多个虚拟设备给若干个虚拟机使用,响应每个虚拟机的设备访问请求和I/O请求

最具代表性的有Intel的VT-d,AMD的IOMMU和PCI-SIG的IOV这三个技术。

  • VT-d通过采用DMA重映射和I/O页表来让虚拟机能直接访问物理设备。

服务器虚拟化-虚拟机迁移

将虚拟机实例从源宿主机迁移到目标宿主机,并且在目标宿主机上能够将虚拟机运行状态恢复到其在迁移之前相同的状态,以便能够继续完成应用程序的任务

服务器虚拟化-虚拟机隔离

虚拟机隔离是指虚拟机之间在没有授权许可的情况下,互相之间不可通信、不可联系的一种技术

存储虚拟化

把分布的异构存储设备统一为一个或几个大的存储池一般来说,虚拟化存储
系统在原有存储系统结构上增加了虚拟化层,将多个存储单元抽象成一个虚拟存储池

存储单元可以是异构,可以是直接的存储设备,也可以是基于网络的存储设备或系统。

网络虚拟化

在底层物理网络和网络用户之间增加一个抽象层让一个物理网络能够支持多个逻辑网络

虚拟网络方案

虚拟局域网络(VLAN)

  • 提供二层网络隔离

虚拟专用网络(VPN)

  • 通过隧道技术,实现跨越公用网络的广域私有网络

覆盖网络(Overlay)

  • 使用物理网络的部分资源组成逻辑网络,可以充分利用现有网络资源,实现多个逻辑隔离的网络

网络设备虚拟化

网络虚拟化

  • 软件网卡虚拟化
  • 硬件网卡虚拟化
  • Linux网桥
  • 虚拟交换机
  • 虚拟路由器

软件定义网络(SDN)

将网络分为控制层(Control Plane)和数据层(Data Plane)

控制层的控制器软件, 通过特定传输通道,统一下达命令给数据层设备 ,一般称为南向协议

数据层设备依靠控制层的设置方式决定如何转发数据包

OpenFlow架构

OpenFlow 是一种开源的SDN实现方式

SDN与网络虚拟化关系

SDN 不等于网络虚拟化,只是SDN 这种技术非常适合实现网络虚拟化

网络虚拟化可以在现有的网络中运作,因为它们在服务器运行,并与发送到它们的流量进行交互

而SDN则需要一种新的网络架构,从而分离数据层和控制层

Workstation

workstation的虚拟网络

虚拟机交换机就像真实的物理交换机一样,可以将虚拟机连接到一个虚拟网络

缺省已经创建一些虚拟交换机和网络用于特定的用途:

  • 桥接网络使用VMnet0
  • 仅主机连接网络使用VMnet1
  • NAT网络使用VMnet8

workstation的虚拟网卡

一块虚拟的以太网卡,允许主机和虚拟机之间进行通信

缺省有三种网络模式,分别对应三个内置虚拟交换机。

  • bridged桥接模式:直接连接物理网络
    虚拟机内部网卡(例如eth0)直接连到了物理网卡所在的网络上
    通过内建的虚拟交换机VMnet0实现
    虚拟机配置的IP地址需要与主机在同一个网段(网络前缀相同),如果需要连接公网,则虚拟机的网关与DNS需要与主机网卡一致。
  • NAT网络地址转换模式:用于共享主机的IP地址
    借助虚拟NAT设备使得虚拟机可以访问局域网和互联网,意味着虚拟机可以访问局域网中的其他主机,但是其他主机不知道虚拟机的存在
    虚拟机不需要设置静态IP,只需要使用DHCP功能自动获取IP即可
    主机使用虚拟网卡adapter vmnet8与虚拟机互连
  • host-only主机模式
    Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware NetworkAdapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信
    Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通信,不能访问主机所在的局域网,也不能访问公网。
    连接到VMnet1虚拟交换机的所有虚拟机之间可以通信