第一阶段

KVM和XEN是实现hypervisor(系统管理)功能的2类主要技术。
粗谈虚拟化技术的发展与应用现状
如图所示,XEN位于基础硬件和虚拟机之间,早期是不受Linux内核支持的,IT管理员需要把开源Xen作为主流内核的补丁来安装,甚至安装后不能对内核做升级,否则会破坏Xen的功能。

KVM则是一种基于Linux内核的轻量级的虚拟化管理程序模块,通过提供一个/dev/kvm接口来实现cpu虚拟化+内存虚拟化。但KVM的kvm.ko本身只提供了CPU和内存的虚拟化,由QEMU模拟IO设备(网卡,磁盘等),最后形成了QEMU-KVM。

图中的QEMU是一个主机上的VMM(virtual machine monitor),通过动态二进制转换来模拟CPU,并提供一系列的硬件模型,使guest os认为自己和硬件直接打交道,其实是同QEMU模拟出来的硬件打交道,QEMU再将这些指令翻译给真正硬件进行操作。通过这种模式,guest os可以和主机上的硬盘,网卡,CPU,CD-ROM,音频设备和USB设备进行交互。但由于所有指令都需要经过QEMU来翻译,因而性能会比较差。
粗谈虚拟化技术的发展与应用现状
Hipervisor位于操作系统和底层硬件之间,每个虚拟机都需要运行一个完整的操作系统以及其中安装好的大量应用程序。
粗谈虚拟化技术的发展与应用现状

第二阶段

Linux Container(简称LXC)它是一种内核轻量级的操作系统层虚拟化技术。有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。Linux Container主要由Namespace和Cgroup两大机制来保证实现。Namespace实现隔离,Cgroup实现资源管理控制。
粗谈虚拟化技术的发展与应用现状

第三阶段: Docker及服务器虚拟化

1 Docker
使用Golang语言进行开发,实现了操作系统层面的虚拟化,如下图所示。lxc 是早期版本 docker 的一个基础组件,docker 主要用到了它对 Cgroup 和 Namespace 两个内核特性的控制。现在docker已经开发了自己的直接使用核心namespaces和cgroup的工具:libcontainer。Docker已成为容器化的事实标准。
粗谈虚拟化技术的发展与应用现状
粗谈虚拟化技术的发展与应用现状
Docker通常用于隔离不同的应用,例如前端,后端以及数据库。

虚拟机更擅长于彻底隔离整个运行环境。例如,云服务提供商通常采用虚拟机技术隔离不同的用户。Docker是在操作系统进程层面的隔离,而虚拟机是在物理资源层面的隔离。其性能对比情况如下图所示。
粗谈虚拟化技术的发展与应用现状
2 服务器虚拟化

服务器虚拟化就好比在码头上(物理主机及虚拟化层),建立了多个独立的“小码头”—仓库(虚拟机)。其拥有完全独立(隔离)的空间,属于不同的客户(虚拟机所有者)。每个仓库有各自的库管人员(当前虚拟机的操作系统内核),管理员无法管理其它仓库,彼此间不存在信息共享的情况。
粗谈虚拟化技术的发展与应用现状
对于隔离要求较高的环境如混合用户环境,建议使用服务器虚拟化技术。

Docker有着小巧、迁移部署快速、运行高效等特点,但隔离性比服务器虚拟化差。建议每个容器只运行一个服务或者数据库,易于管理,且易于监控性能,便于了解故障的影响,并预测成本。

3 基于虚拟化的云操作系统框架——OpenStack

OpenStack是目前最为流行的开源云操作系统框架,为构建完整的云操作系统,特别是,为实现资源接入与抽象的功能,OpenStack需要虚拟化软件实施集成,从而实现对服务器的计算资源的池化。在资源池化的过程中,物理资源虚拟化的功能仍然由虚拟化软件完成。因此实现了支持接入多种主流虚拟机软件:KVM、LXC、QEMU、Hyper-V、VMware、XenServer,也可以自行开发插件接入其他的虚拟化软件。
粗谈虚拟化技术的发展与应用现状

OpenStack包含4个主要的组件:

A. NOVA: Nova是一个完整的 OpenStack 计算资源管理和访问工具,负责处理规划、创建和删除操作。OpenStack云中实例(instances)生命周期的所有活动都由Nova处理。使得Nova成为一个负责管理计算资源、网络、认证、所需可扩展性的平台。使用libvirt API来与被支持的Hypervisors交互。
粗谈虚拟化技术的发展与应用现状

  • API(nova-api service):nova-api service能够接收和响应Client的Compute API调用,所以API就是Client进入Nova的HTTP接口。
  • Compute(nova-compute service):nova-compute service是一个通过hypervisor
    APIs(虚拟化层API)来实现创建和终止虚拟机实例的守护进程,Compute通过和VMM的交互来运行虚拟机并管理虚拟机的生命周期。
  • Scheduler(nova-scheduler service):会从queue中接收一个虚拟机实例的请求,并确定该实例能够运行在哪一台Compute server中。Scheduler通过读取数据库的内容,从可用的池中选择最合适的Compute Node来创建新的虚拟机实例。
  • Conductor(nova-conductor):能够协调nova-compute
    service和database之间的交互,Conductor为数据库访问提供了一层安全保障。
  • Queue:是Nova 服务组件之间传递信息的中心枢纽。通常使用AMQP的RabbitMQ消息队列来实现。

B. NEUTRON: Neutron能够连接其他 OpenStack 服务并连接网络。

C. KEYSTONE: Keystone认证所有 OpenStack 服务并对其进行授权。同时,它也是所有服务的端点目录。提供的服务包括(1)用户管理:验证用户身份信息合法性(2)服务目录管理:提供各个服务目录的服务,无论任何服务或者客户访问openstack都要访问keystone获取服务列表,以及每个服务的端点目录。
粗谈虚拟化技术的发展与应用现状
D.GLANCE: Glance从多个地点存储和检索虚拟机磁盘镜像。Glance是一个可以组织和管理大量虚拟磁盘镜像的独立服务。

相关文章:

  • 2022-01-13
  • 2021-04-22
  • 2022-02-09
  • 2022-12-23
  • 2021-07-21
  • 2021-11-07
  • 2021-05-18
猜你喜欢
  • 2021-06-17
  • 2021-11-06
  • 2021-07-13
  • 2022-02-09
  • 2021-12-23
  • 2021-05-05
相关资源
相似解决方案