虚拟化分类
- 全虚拟化技术
- 在VM和硬件之间加了Hypervisor或虚拟机监控器(VMM)
- Hypervisor运行在物理硬件上:KVM
- Hypervisor运行在另外一个操作系统上:QEMU,WINE
- 在VM和硬件之间加了Hypervisor或虚拟机监控器(VMM)
- 半虚拟化技术
- 寄居架构:在操作系统之上安装和运行虚拟化程序
- 消耗更多资源
- 裸金属架构:直接在硬件上安装虚拟化软件
- 开发困难
云计算虚拟化
- 计算虚拟化
- 网络虚拟化
- 存储虚拟化
计算机层次
- 应用程序层
- 函数库层
操作系统通常会通过应用级的库函数提供给应用程序一组服务,例如文件操作服务、时间操作服务等。这些库函数可以隐藏操作系统内部的一些细节,使得应用程序编程更为简单。不同的操作系统库函数有着不同的服务接口,例如Linux的服务接口是不同于Windows的。库函数层上的虚拟化就是通过虚拟化操作系统的应用级库函数的服务接口,使得应用程序不需要修改,就可以在不同的操作系统中无缝运行,从而提高系统间的互操作性。
- 操作系统层
操作系统层上的虚拟化是指操作系统的内核可以提供多个互相隔离的用户态实例。这些用户态实例(经常被称为容器)对于它的用户来说就像是一台真实的计算机,有自己独立的文件系统、网络、系统设置和库函数等。
- 硬件层
硬件抽象层上的虚拟化是指通过虚拟硬件抽象层来实现虚拟机,为客户机操作系统呈现和物理硬件相同或相近的硬件抽象层,又称为指令集级虚拟化,实现在此层的虚拟化粒度是最小的。
Hypervisor
为客户端操作系统提供虚拟机环境的软件。
Hypervisor 是一种运行在物理服务器和操作系统之间的中间软件层(可以是软件程序,也可以是固件程序),可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器VMM(Virtual Machine Monitor)
Guest操作系统称为虚拟机(VM)
Type 1 Hypervisor | Type 2 Hypervisor |
---|---|
Type 1 Hypervisor
- Hyper-V
- VMware ESX Server
- Citrix XenServer
- Oracle OVM for SPARC
- KVM
VMM同时具备物理资源的管理功能和虚拟化功能,因此,物理资源虚拟化的效率会更高一些。在安全方面,虚拟机的安全只依赖于VMM的安全。Hypervisor模型在拥有虚拟化高效率的同时也有其缺点。由于VMM完全拥有物理资源,因此,VMM需要进行物理资源的管理,包括设备的驱动。我们知道,设备驱动开发的工作量是很大的。因此,对于Hypervisor模型来说这是个很大的挑战。事实上,在实际的产品中,基于Hypervisor模型的VMM通常会根据产品定位,有选择地挑选一些I/O设备来支持,而不是支持所有的I/O设备。
Type 2 Hypervisor
- VMware Server
- VMware Fusion
- Microsoft Virtual Server
- Oracle VM Virtual Box
- Oracle VM for x86
- Solaris Zones,Parallels
- Microsoft Virtual PC
与Hypervisor模型不同。在宿主模型中,物理资源由宿主机操作系统管理。宿主机操作系统是传统操作系统,如Windows 、Linux等,这些传统操作系统并不是为虚拟化而设计的,因此本身并不具备虚拟化功能,实际的虚拟化功能由VMM来提供。VMM通常是宿主机操作系统独立的内核模块,有些实现中还包括用户态进程,如负责I/O虚拟化的用户态设备模型。 VMM通过调用宿主机操作系统的服务来获得资源, 实现处理器、内存和I/O设备的虚拟化。VMM创建出虚拟机之后,通常将虚拟机作为宿主机操作系统的一个进程参与调度。
- 宿主模型最大的优点是可以充分利用现有操作系统的设备驱动程序
- VMM无须为各类I/O设备重新实现驱动程序,可以专注于物理资源的虚拟化
- 宿主模型也可以利用宿主机操作系统的其他功能,例如调度和电源管理等
- VMM虚拟化的效率和功能会受到一定影响
- 如果宿主机操作系统内核是不安全的,那么,VMM也是不安全的
Container
Container vs VMs
VMs | Container | |
---|---|---|
注重 | 基层(infrastructure) | 应用(application) |
隔离 | Hypervisor | CGroups |
本质 | 操作系统 | 进程 |
开销 | 大(5~15%) | 小(0-5%) |
启动 | 慢 | 快 |
大小 | 大 | 小 |
规模 | 百 | 万 |
储存 | 自带 | 需要管理 |
操作 | 麻烦 | 相对简单 |
兼容 | 可以换OS | 受限主机OS |
更新 | 更新系统 | pull一下 |
OpenStack
云平台管理的项目,这个项目由几个主要的组件组合起来完成工作。通过一个WEB界面提供资源管理,通过一个仪表盘管理整个数据中心的计算存储资源。
- 资源抽象:OpenStack将各类硬件资源,通过虚拟化与软件定义的方式,抽象成资源池
- 资源分配与负载调度:OpenStack根据管理员/用户的需求,将资源池中的资源分配给不同的用户,承载不同的应用
- 应用声明周期管理:OpenStack已经可以提供初步的应用部署/撤除、自动规模调整能力。
- 系统运维:OpenStack已经可以提供一定的系统监控能力
- 人机交互:OpenStack提供人机接口,外界可以通过API、命令行或图形界面的方式参与OpenStack进行交互。
OpenStack不是虚拟化,OpenStack不是云,OpenStack只是构建云的关键组件
组件
- 计算服务:Nova
- 镜像服务:Glance
- 对象服务:Swift
- 块储存服务:Cinder
- 网络服务:Neutron
- 仪表盘:Horizon
- 认证服务:Keystone
- 编排:Heat
- 监控:Ceilometer
- 数据库服务:Trove
- 数据处理:Sahara