虚拟化是走向云的第一步,同理,开源虚拟化是走向开源云的第一步。云计算所提供的产品与方案都是围绕着IT资源的新交付与消费模式。云的形式多样,私有云、公有云与混合云,无论哪种云都具有三个关键特征:虚拟化、标准化与自动化。那么,KVM是什么?它能否满足企业对云的需求?

KVM是什么?

KVM(Kernel-based Virtual Machine)源自一家公司叫Qumranet。2008年9月,该公司被红帽收购后大力发展KVM的社区,目的在于增强底层架构功能,简化虚拟机管理。KVM是一个开源的系统虚拟化模块,它需要硬件支持,如Intel VT技术或者AMD V技术,是基于硬件的完全虚拟化。

KVM背靠Linux好乘凉

从上图可以看到,KVM是完全内置于Linux的开源hypervisor。它将Linux转换成虚拟机监控器。因此,KVM能利用Linux做大量hypervisor能做的事情,如任务调度、内存管理与硬件设备交互等。

事实上,自Linux 2.6.20之后,KVM就集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。红帽2011年发布RHEL 6后,完全抛弃开源Xen,支持KVM作为hypervisor。

KVM专注于成为最好的虚拟机监控器,创建的虚拟机能作为Linux处理器,当做子操作系统运行在Linux或Windows上。此外,通过使用另一个开源模块QEMU,提供虚拟机中的I/O设备仿真。

近年来,随着x86虚拟化流行,KVM能利用虚拟化扩展运行在x86处理器上。所以在虚拟x86处理器很得心应手。KVM价值在于能运行Linux或Windows虚拟机,由于其内置在Linu中,无需任何修改就能运行Linux应用。

IBM与KVM的渊源

在44年前,IBM为了更好地利用硬件,实现了大型机分区技术,也就是虚拟化技术。硬件支持对于虚拟化的采用至关重要。早在1967年,IBM System/360大型机上就实现了虚拟化,客户可同时运行多个应用提高硬件利用率。随着时间推移,这项技术也伴随着IBM大型机的发展进入了z/VM。这时也开发了新市场,将Linux移植到System z,z/VM就能让成百上千的Linux虚拟机同时运行在单台IBM主机上。

90年代,IBM将hypervisor带入Power系统,充分利用底层硬件。发展到现在,PowerVM能虚拟AIX、i/OS以及Linux操作系统。

让我们回到早期的x86服务器时代,那时英特尔和AMD还不能友好地支持虚拟化技术。VMware使用动态内存翻译技术,Xen使用Paravirtualization(半虚拟化)技术,修改操作系统以便进行虚拟。转机发生在2005年,英特尔和AMD为虚拟化添加了硬件支持,由此开启了x86 hypervisor新时代。

不久,KVM问世。它构建在Linux之内,并将其转换成一个成熟的hypervisor。KVM背靠Linux好乘凉,迅速发展壮大。

KVM引起了业界大佬们的兴趣。红帽与IBM开始投资这个开源新秀。2007年,KVM正式成为Linux的一部分。同年,红帽收购Qumranet及其专家资源。2009年,IBM大幅增加KVM工程投资。如今IBM有60位程序员专门工作在KVM开源社区上。

开源KVM的未来

四年多前,从KVM内置在Linux的那一刻起,就注定着它有不平凡的发展道路。KVM本身就是使用Linux企业的不二选择,加上它还支持Windows平台,所以也是异构环境的最佳选择。

近几年,随着红帽、IBM和其他厂商的投入,KVM已经成为一个企业级hypervisor。KVM特别之处在于将Linux转换成一个Type-1 hypervisor。所以无需任何变更就能享受现有的Linux内核进程调度、内存管理和设备支持。随着Linux持续发展,KVM也能受益于其成果。

2011年五月,IBM、红帽、英特尔等重量级厂商组成开放虚拟化联盟(OVA),致力于提升开源技术KVM的认知度与采用率。2011年11月,红帽、IBM、英特尔等厂商赞助成立了oVirt.org开源社区,旨在开发开源KVM管理与建立ISV生态系统。OVA从市场角度联合业界大厂商入手,oVirt社区从技术联合开发人员入手,为KVM的发展保驾护航。

如今的KVM提供了一个成熟的开源虚拟化平台,可以直接用于企业业务。KVM的时代已来临。

KVM背靠Linux好乘凉的更多相关文章

  1. kvm上的Linux虚拟机使用virtio磁盘

    kvm上的Linux虚拟机使用virtio磁盘 系统:centos6.6  64位 网上的文章比较少,怎麽将Linux虚拟机的磁盘改为使用virtio磁盘 因为centos6或以上系统已经包含了vir ...

  2. CentOS7.1 KVM虚拟化之linux虚拟机安装(2)

    一.上传ISO文件到/data/iso下 这里使用CentOS-5.5-i386-bin-DVD.iso 二.安装CentOS5.5 CentOS7.1 安装KVM虚拟机默认磁盘格式为qcow2(推荐 ...

  3. Centos7 搭建KVM并创建Linux Windows虚拟机

    一.安装KVM   查看系统版本 cat /etc/redhat-release     关闭防火墙及selinux   systemctl disable firewalld.service 查看防 ...

  4. kvm初体验——linux之kvm安装及使用qemu工具安装系统【转】

    本文转载自:https://blog.csdn.net/Heimerdinger_Feng/article/details/79119445 一.安装虚拟机之前先升级软件仓库 sudo apt-get ...

  5. 关于Linux虚拟化技术KVM的科普

    虚拟化技术应用越来越广泛,虚拟化技术需求越来越强劲.KVM.XEN.Docker等比较热门,尤其是KVM技术越来越受欢迎. 基于此背景,了解一下KVM+QEMU就有点必要了. 从网上收集了一些资料进行 ...

  6. KVM源代码解读:linux-3.17.4\include\linux\kvm_host.h

    #ifndef __KVM_HOST_H #define __KVM_HOST_H /* * This work is licensed under the terms of the GNU GPL, ...

  7. centos7 通过kvm+vnc 实现远程桌面虚拟化和创建windows、Linux虚拟机

    感谢朋友支持本博客.欢迎共同探讨交流,因为能力和时间有限.错误之处在所难免,欢迎指正! 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  8. Linux中安装配置KVM虚拟化

    KVM 概述: KVM 即 Kernel-based Virtual Machine 基于内核的虚拟机. KVM,是一个开源的系统虚拟化模块,自 Linux 2.6.20 之后集成在 Linux 的各 ...

  9. Oracl Linux KVM虚拟机备份

    Oracle Linux  KVM 作为Oracle Linux的一部分,基于KVM的Oracle Linux 服务器虚拟化解决方案在功能上得到了增强.用户可以利用Oracle Linux旧版本,将操 ...

随机推荐

  1. Java多线程4:synchronized关键字

    原文:http://www.cnblogs.com/skywang12345/p/3479202.html 1. synchronized原理在java中,每一个对象有且仅有一个同步锁.这也意味着,同 ...

  2. C++:String类

    String类 1.使用String类必须在程序的开始包括头文件string,即要有如下语句:#include<string> 2.string类字符串对象的使用方法与其他对象一样stri ...

  3. Nodejs实现web静态服务器对多媒体文件的支持

    前几天,一个同事说他写的web静态服务器不支持音视频的播放,现简单实现一下. 原理:实现http1.1协议的range部分. 其实这一点都不神秘,我们常用的下载工具,如迅雷,下载很快,还支持断点续传, ...

  4. <<c 和指针 >> 部分笔记。

    最近竟然对指针有些迷惑了,分不清指针的指向.废话少说,复习.(下面内容来自<<c和指针>>) =指针 ==内存和地址 尽管一个字包含了4个字节,它仍然只有一个地址.至于是最左边 ...

  5. svn 版本升级的问题

    原创文章,转载请注明 svn本地版本由1.6升级到1.7后,再使用时遇到一些问题,这里记录一下以备忘. 升级后,使用任何命令 不能用了,提示的意思大致是本地的workcopy版本太低了(之前用1.6版 ...

  6. 2014图灵技术图书最受欢迎TOP15

    来自:图灵社区昨晚给我发的邮件,感觉不错,和大家分享,mark下. [小编语] 回首2014,感谢小伙伴们一路相随.让我们2015一起更快乐地玩耍.今天小编为大家盘点一下过去2014年表现最给力的技术 ...

  7. python获取外网地址

    # coding=gbk import sys,urllib.request,re url = "http://www.3322.org/dyndns/getip" #网页地址 m ...

  8. ios中addtarget的用法

    1.addtarget 的.部分使用事件没有直接的操作方式,需要进行调用.就要用addTarget. - (void)setupCustomView { self.customView = [[CHV ...

  9. c# webbrowser 随机点击链接 2

    找到广告代码所在的div或table ,然后用WebBrowser执行js去点这个div(或table) 那个广告是js实现的,你浏览的时候是看不到图片和连接的,请问各位大虾应该怎么实现?给点思路.. ...

  10. Android之界面刷新(invalidate和postInvalidate使用)

    Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用. Android提供了Inva ...