一文带你速懂虚拟化KVM和XEN
来源 :蛋蛋团
前言
”云计算“这个技术经过十余年的普及到如今已经可以称得上是家喻户晓了,基于云计算平台,在多个领域内创造了一个又一个的记录:电子商务里亿万人同时在线抢购的的”双11“神话;几个月里从0到千万用户级别的游戏应用;集结海量计算力从无用数据中寻找价值的大数据分析...
种种一切,无不在叙说着这种新型信息技术所带来的伟力与震撼。
云计算诞生于互联网行业,而又不止于影响互联网。无论是马云所说”数字经济体“又或者马化腾所说的”产业互联网“,归根究底是使用自身云计算的能力去影响或者去重构传统行业,带来产业融合的新创新价值。
”信息技术改革“一触即发,云计算不是一门技术,是一种”合作创新,云以致用“服务和理念。而其背后最重要的技术莫过于虚拟化技术了,今天就让我们来揭晓云计算应用最广的KVM和XEN虚拟化技术。
虚拟化和云计算的关系
在云计算行业历练多年,笔者集各家对云计算的解释,总结出了个“云计算三四五定律”。
三是指云计算的服务模式:IaaS(基础设施即服务)Paas(平台即服务)、SaaS(软件即服务)。
四指的是部署方式:公有云、私有云、行业云(政务云、工业云等集合)以及混合云。
五指的是云计算的基本特征:按需接入、BGP线路、资源池化、弹性伸缩以及可计量的费用。
那么,最重要的,资源如何达到池化的效果呢?
这里先来理解下虚拟化的定义。
虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
--来自维基百科
虚拟化技术是云计算的基石,早在上世纪的90年代,已经有人在研究如何利用虚拟化技术来平衡昂贵硬件和利用率不足之间的矛盾,中间出现了类似如VMware以卖虚拟化软件而崛起的公司,也随着虚拟化技术发展,出现了开源的XEN和KVM两种虚拟化技术。正因为开源虚拟化技术的普及,才有了云计算的如今的发展势头。
虚拟化的分类与优缺点
虚拟化核心思想是提高硬件资源的利用率,通过在系统中加入一个虚拟化层,将下层资源池化后,向上层操作系统提供一个预期一致的服务器硬件环境,并允许不同操作系统的虚拟机互相隔离且并发运行在一台物理机上。
尽管虚拟化技术上个世纪已经出现,当时虚拟化技术主要应用于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拥有更好的处理性能。
总结
当然,在如今,两种虚拟化的边界也越来越模糊,选择适合自己的才是最重要的。而作为世界最大的云计算厂商AWS从诞生以来一直是XEN的拥护者,然后近几年也开始接入KVM,开始两者融合,为用户提供所需的服务。
而作为国内最大的云厂商阿里云,目前在基本已经KVM虚拟化方案了。
毫无疑问,KVM拥有更好的生态,更多的开源支持。而XEN诞生时间较长,也是目前最成熟的虚拟化技术。
但是未来,究竟是XEN夺得先机,还是KVM更胜一筹?
让我们拭目以待。
如有收获,点个在看,诚挚感谢
一文带你速懂虚拟化KVM和XEN的更多相关文章
- 一文带你读懂zookeeper在大数据生态的应用
一个执着于技术的公众号 一.简述 在一群动物掌管的世界中,动物没有人类聪明的思想,为了保持动物世界的生态平衡,这时,动物管理员-zookeeper诞生了. 打开Apache zookeeper的官网, ...
- 实战 | 一文带你读懂Nginx反向代理
一个执着于技术的公众号 前言 在前面的章节中,我们已经学习了nginx基础知识: 给小白的 Nginx 10分钟入门指南 Nginx编译安装及常用命令 完全卸载nginx的详细步骤 Nginx 配置文 ...
- 一文带你读懂什么是vxlan网络
一个执着于技术的公众号 一.背景 随着云计算.虚拟化相关技术的发展,传统网络无法满足大规模.灵活性要求高的云数据中心的要求,于是便有了overlay网络的概念.overlay网络中被广泛应用的就是vx ...
- 从源码入手,一文带你读懂Spring AOP面向切面编程
之前<零基础带你看Spring源码--IOC控制反转>详细讲了Spring容器的初始化和加载的原理,后面<你真的完全了解Java动态代理吗?看这篇就够了>介绍了下JDK的动态代 ...
- 【springcloud】一文带你搞懂API网关
作者:aCoder2013 https://github.com/aCoder2013/blog/issues/35 前言 假设你正在开发一个电商网站,那么这里会涉及到很多后端的微服务,比如会员.商品 ...
- 一文带你读懂什么是docker
一 简介 1.了解Docker的前生LXC LXC为Linux Container的简写.一种轻量级的内核虚拟化技术,隔离进程和资源. Linux Container有点像chroot,提供了一个拥有 ...
- 一文带你弄懂 JVM 三色标记算法!
大家好,我是树哥. 最近和一个朋友聊天,他问了我 JVM 的三色标记算法.我脑袋一愣发现竟然完全不知道!于是我带着疑问去网上看了几天的资料,终于搞清楚啥事三色标记算法,它是用来干嘛的,以及它和 CMS ...
- 一文带你看懂cookie,面试前端不用愁
本文由云+社区发表 在前端面试中,有一个必问的问题:请你谈谈cookie和localStorage有什么区别啊? localStorage是H5中的一种浏览器本地存储方式,而实际上,cookie本身并 ...
- 【并发编程】一文带你读懂深入理解Java内存模型(面试必备)
并发编程这一块内容,是高级资深工程师必备知识点,25K起如果不懂并发编程,那基本到顶.但是并发编程内容庞杂,如何系统学习?本专题将会系统讲解并发编程的所有知识点,包括但不限于: 线程通信机制,深入JM ...
随机推荐
- springboot使用策略模式实现一个基本的促销
策略模式 定义了算法族,分别封装起来,让它们之间可以互相替换, 此模式让算法的变化独立于使用算法的客户 源码:https://github.com/youxiu326/sb_promotion.git ...
- spring aop 源码解读之我见
spring aop 都是动态代理,分为jdk代理和cglib代理.默认的情况下,如果类有实现了接口,使用jdk代理.如果没有实现接口,则使用cglib代理.在下面的代码中,我会标明对应的这段代码. ...
- 浏览器中唤起native app || 跳转到应用商城下载
前段时间遇到一个小需求:要求在分享出来的h5页面中,有一个立即打开的按钮,如果本地安装了我们的app,那么点击就直接唤起本地app,如果没有安装,则跳转到下载. 因为从来没有做过这个需求,因此这注定是 ...
- gulp详细基础教程
一.gulp简介 1.gulp是什么? gulp是前端开发过程中一种基于流的代码构建工具,是自动化项目的构建利器:它不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成: ...
- 什么是静态内部(Static Inner)类,语法要注意什么?
4静态内部类(Static Inner Classes) 马克-to-win:这里的内部类的static,意思是它可以不用实例化外部类,就自己单独被实例化,单独存在(有点像生活中的办公室和办公桌(独立 ...
- Idea中配置Tomcat以及运行maven项目
maven安装和详细配置 提示:下面是Tomcat9.0版本的下载链接,需要其他版本的去官方网站下载. 链接:https://pan.baidu.com/s/1CONf8KVXM4gyJj4pxjFB ...
- js手机号隐藏中间四位
var tel = "13122223333"; var reg = /^(\d{3})\d{4}(\d{4})$/; tel = tel.replace(reg, "$ ...
- Java基础之浅谈接口
前言 前几篇文章我们已经把Java的封装.继承.多态学习完了,现在我们开始比较便于我们实际操作的学习,虽然它也是Java基础部分,但是其实入门容易,精通很难. 我认真的给大家整理了一下这些必须学会.了 ...
- python---概述
python的主要应用领域 云计算:云计算的最火的语言,典型应用OpenStack. web开发:众多优秀的web框架,典型地有Django,众多大型网站也是python开发,比如YouTube.豆瓣 ...
- 轻量化安装 TKEStack:让已有 K8s 集群拥有企业级容器云平台的能力
关于我们 更多关于云原生的案例和知识,可关注同名[腾讯云原生]公众号~ 福利: ①公众号后台回复[手册],可获得<腾讯云原生路线图手册>&<腾讯云原生最佳实践>~ ②公 ...