前言
"云计算" 这个技术经过十余年的普及到如今已经可以称得上是家喻户晓了, 基于云计算平台, 在多个领域内创造了一个又一个的记录: 电子商务里亿万人同时在线抢购的的 "双 11" 神话; 几个月里从 0 到千万用户级别的游戏应用; 集结海量计算力从无用数据中寻找价值的大数据分析;
种种一切, 无不在叙说着这种新型信息技术所带来的伟力与震撼.
云计算诞生于互联网行业, 而又不止于影响互联网. 无论是马云所说 "数字经济体" 又或者马化腾所说的 "产业互联网", 归根究底是使用自身云计算的能力去影响或者去重构传统行业, 带来产业融合的新创新价值.
"信息技术改革" 一触即发, 云计算不是一门技术, 是一种 "合作创新, 云以致用" 服务和理念. 而其背后最重要的技术莫过于虚拟化技术了, 今天就让我们来揭晓云计算应用最广的 KVM 和 XEN 虚拟化技术.
1, 虚拟化和云计算的关系
在云计算行业历练多年, 笔者集各家之对云计算的解释, 总结出了了个 "云计算三四五定律".
三是指云计算的服务模式: IaaS(基础设施即服务)Paas(平台即服务),SaaS(软件即服务).
四指的是部署方式: 公有云, 私有云, 行业云 (政务云, 工业云等集合) 以及混合云.
五指的是云计算的基本特征: 按需接入, BGP 线路, 资源池化, 弹性伸缩以及可计量的费用.
那么, 最重要的, 资源如何达到池化的效果呢?
这里先来理解下虚拟化的定义.
虚拟化, 是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机. 在一台计算机上同时运行多个逻辑计算机, 每个逻辑计算机可运行不同的操作系统, 并且应用程序都可以在相互独立的空间内运行而互不影响, 从而显著提高计算机的工作效率.
-- 来自维基百科
虚拟化技术是云计算的基石, 早在上世纪的 90 年代, 已经有人在研究如何利用虚拟化技术来平衡昂贵硬件和利用率不足之间的矛盾, 中间出现了类似如 VMware 以卖虚拟化软件而崛起的公司, 也随着虚拟化技术发展, 出现了开源的 XEN 和 KVM 两种虚拟化技术. 正因为开源虚拟化技术的普及, 才有了云计算的如今的发展势头.
2, 虚拟化的分类与优缺点
虚拟化核心思想是提高硬件资源的利用率, 通过在系统中加入一个虚拟化层, 将下层资源池化后, 向上层操作系统提供一个预期一致的服务器硬件环境, 并允许不同操作的系统的虚拟机互相隔离且并发运行在一台物理机上.
尽管虚拟化技术上个世纪已经出现, 然后当时虚拟化技术主要应用于 IBM 的大型机中, 随着 X86 服务器架构流行, VMware 第一个针对 X86 服务器的商用虚拟化技术. 后来, IT 界最不缺开源精神, 剑桥大学一名讲师发布了开源虚拟化项目 XEN.
但是问题是, XEN 有个缺点: 需要对内核补丁, 稍微不慎, 系统崩溃.
KVM 其实比 XEN 出现的晚, 但是当 KVM 出现时, 已经全盘使用 XEN 虚拟技术的 RedHat 直接抛弃了已经使用多年的 XEN, 究其原因, KVM 是 Linux 的一部分, 可使用通常的 Linux 调度器和内存管理. 这意味着 KVM 更小更易使用.
上图是 KVM 和 XEN 的架构对比图, 首先, 两者都属于硬件虚拟化(硬件提供结构支持帮助创建虚拟机监视并允许客户机操作系统独立运行).
• 全虚拟化: 虚拟机完整的模拟了底层硬件, Linux 系统直接内核支持, 不需要对操作系统进行修改. 简单来讲, 虚拟机以为自己运行在硬件上.
• 半虚拟化: 虚拟机能够感知是运行在 Hypervisor(虚拟机器监视器, 简称 VMM)之中, 且为了支持 Hypervisor, 需要对操作系统进行专门的更改.
XEN 包含三个基本组件: Hypervisor,Domain 0,Domain U.
其中 Hypervisor 运行在硬件之上, 承载所有的操作系统, 提供 CPU 和内存调度的作用.
Domain 0 是管理员, 相当于一个大管家, 主要负责 IO 虚拟化.
Domain U 则是真正的 XEN 中的虚拟客户机, 而 Domain U 又分为两类: 一类全虚拟客户机, 一类半虚拟客户机, 后者是运行在经过修改的操作系统之上.
只支持全虚拟化的 KVM 则简单的多了, 主要两个部分组成: KVM 驱动和 Qemu.
KVM 驱动直接被集成到 Linux 系统 (Intel-VT 或 AMD-V)) 中了, 主要负责虚拟机创建, CPU 和内存的分配等等.
Qemu 是用于模拟虚拟机的用户空间组件, 提供 I/O 设备模型, 访问外设的途径. 这里我们来看下两者的图解对比.
大多数 XEN 和 KVM 性能基准测试表明, XEN 比 KVM 拥有更好的处理性能.
3, 总结
当然, 在如今, 两种虚拟化的边界也越来越模糊, 选择适合自己的才是最重要的. 而作为世界最大的云计算厂商 AWS 从诞生以来一直是 XEN 的拥护者, 然后近几年也开始接入 KVM, 开始两者融合, 为用户提供所需的服务.
而作为国内最大的云厂商阿里云, 目前在基本已经 KVM 虚拟化方案了.
毫无疑问, KVM 拥有更好的生态, 更多的开源支持. 而 XEN 诞生时间较长, 也是目前最成熟的虚拟化技术.
但是未来, 究竟是 XEN 夺得先机, 还是 KVM 更胜一筹?
让我们拭目以待.
来源: http://virtual.51cto.com/art/201904/595371.htm