虚拟化是走向云的第一步,同理,开源虚拟化是走向开源云的第一步。云计算所提供的产品与方案都是围绕着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. Android ActionBar的Overlay模式如何不遮盖顶部内容的问题

    关于actionbar的overlay模式请参考 如何让android的actionbar浮动且透明 一文.这篇文章讲的是如何在这种模式下让actionbar不遮住顶部的内容. 这 一般是这样的场景, ...

  2. 什么是HttpOnly

    1.什么是HttpOnly? 如果您在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,具体一点的介绍请google进行搜索 2.ja ...

  3. 如何创建支持Eclipse IDE的Maven项目

    使用Maven创建的项目是不支持任何IDE的,不能导入IDE中,因为项目格式都不符合特定IDE的格式要求,那么如何创建符合IDE要求的项目呢? 1.使用mvn eclipse:eclipse 命令把项 ...

  4. Collection_Other

    package com.bjsxt.others.que; import java.util.ArrayDeque; import java.util.Queue; /** * 使用队列模拟银行存款业 ...

  5. 函数xdes_calc_descriptor_page

    根据偏移量计算出第几个xdes page 0 %16328 = 0 64% 16328 = 64 128 % 16328 = 128 192 % 16328 = 192 /************** ...

  6. asp.net 2.0中新增的web.config的默认namespace功能 (转)

    看上去这个题目比较长,但实际上,我在看资料时发现,这就是说,在asp.net 2.0中,只需要在web.config里定义你要用的那些namespace,则在aspx页面中就不需要再象1.1那样,用 ...

  7. Java 知识点:序列化

    首先明确一点:默认的序列化方法速度很慢,因为需要对整个对象和他的类都进行保存,因此我们建议自定义序列化格式. ObjectInputStream和ObjectOutputStream 用途 Objec ...

  8. Android获取SharedPreferences失败,且App无法启动

    说明: 一个app访问另外一个app的SharedPreferences,程序启动之后没有显示界面就卡死了,无任何提示信息. 错误原因: 应用调用createPackageContext失败,但是也不 ...

  9. LeetCode Reverse Linked List (反置链表)

    题意: 将单恋表反转. 思路: 两种方法:迭代和递归. 递归 /** * Definition for singly-linked list. * struct ListNode { * int va ...

  10. 【 D3.js 高级系列 — 7.0 】 标注地点

    有时需要告诉用户地图上的一些目标,如果该目标是只需要一个坐标就能表示的,称其为"标注". 1. 标注是什么 标注,是指地图上只需要一个坐标即可表示的元素.例如,在经纬度(116, ...