1 虚拟化概述
云计算的一个核心思想是在服务器端提供集中的物理计算资源,这些资源可以被分解为更小的单位来服务于用户,而实现这一核心思想需要借助于虚拟化技术[1]。
百度百科对虚拟化的解释如下:
虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率[2]。
2 虚拟化分类
在物理机上实现虚拟化需要借助于虚拟机监控器。虚拟机监控器 (Virtual Monitor Machine, VMM) ,也可称为Hypervisor,处于硬件和操作系统之间,可以使每个用户拥有独立的虚拟硬件和执行环境。
根据Hypervisor在计算机系统中所处的位置,可划分为一类虚拟化 (裸机型) 和二类虚拟化 (宿主型) :
图1 一类虚拟化和二类虚拟化[1]
一类虚拟化的Hypervisor直接运行在硬件上,而二类虚拟化的Hypervisor在物理机的操作系统之上。
另一种划分虚拟化的方式是根据虚拟化平台的类型划分,可分为完全虚拟化和类虚拟化两种。完全虚拟化无需对客户的操作系统修改便可运行在物理机上,而类虚拟化则需修改操作系统的代码,使其适应于物理机。
3 Hypervisor
目前主要的Hypervisor有以下几种:
Hypervisor | 厂家 |
---|---|
KVM | 开源 |
Xen | 开源 |
VMware ESX | VMware |
Hyper-V | 微软 |
表1 Hypervisor
其中开源的KVM (Kernel-Based Virtual Machine) 应用广泛,且Openstack对KVM的支持较好,因此在这里着重介绍KVM。KVM基于Linux内核实现,主要管理CPU和内存。在实际应用中需与Qemu合作完成虚拟化任务,Qemu主要负责I/O的虚拟化。
4 高层管理工具
KVM等Hypervisor提供了虚拟化的基本功能,但与用户有关的工作仍需要更高层的工具完成,这些工具包括:Libvirt、XenAPI等,这里主要介绍Libvirt[3]。
Libvirt支持多种Hypervisor,主要包括如下组成部分:
- API
- Libvirtd 守护进程
- virt-manager 图形化工具
- virsh 命令行工具
5 KVM、Libvirt与Openstack的关系
KVM+Qemu -> Libvirt -> Openstack
参考资料
[1] 英特尔开源技术中心. Openstack设计与实现[M]. 北京:电子工业出版社, 2015
[2] 百度百科. 虚拟化[EB/OL]. https://baike.baidu.com/item/%E8%99%9A%E6%8B%9F%E5%8C%96/547949?fr=aladdin, 2019-7-20
[3] cloudman. 虚拟化 - 每天5分钟玩转 OpenStack(2)[EB/OL] https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587970&idx=1&sn=eeabd0d69d51a725b46a6fc773544773&chksm=8d30821bba470b0d03dbf113fb19564c82592bef0d168c3971341abdc72bd4e91c28d0e92d36&scene=21#wechat_redirect. 2019-7-20