zoukankan      html  css  js  c++  java
  • KVM虚拟化技术(二)KVM介绍

    KVM:Kernel Virtual Machine

      KVM是基于虚拟化扩展的x86硬件,是Linux完全原生的全虚拟化解决方案。部分半虚拟化支持,主要是通过半虚拟网络驱动程序的形式用于Linux和Windows客户机系统的。

      KVM被设计为是一个内核模块,支持广泛的客户机操作系统;在KVM架构中,虚拟机实现为常规的Linux进程。这使KVM能够享受Linux内核的所有功能。

      KVM模块是KVM虚拟机的核心部分。其主要功能是初始化CPU硬件,打开虚拟化模式,然后将虚拟机客户机运行在虚拟机模式下,并对虚拟客户及对运行提供一定的支持。

      然而,KVM本身不执行任何模拟,需要用户空间的程序通过接口设置一个内核空间,向它提供模拟的I/O,并将它的视频显示映射回宿主的显示屏;这个应用程序就是QEMU(可理解为一个模拟器);现在主流启用libvirt来管理。

      为了软件的简洁和性能,KVM仅支持硬件虚拟化。

      QEMU本身并不是KVM的一部分,其自身就是一个著名的开源虚拟机软件。与KVM不同,QEMU虚拟机是一个纯软件的实现,所以性能低下。但是,其优点是在支持QEMU本身编译运行的平台上就可以实现虚拟机的功能,甚至虚拟机可以与宿主机并不是同一个架构。

      为了简化开发和代码重用,KVM在QEMU的基础上进行了修改。虚拟机运行期间QEMU会通过KVM模块提供的系统调用进入内核,由KVM模块负责将虚拟机置于处理器的特殊模式运行。遇到虚拟机进行输入输出操作,KVM模块会从上次的系统调用出口处返回QEMU,由QEMU来负责解析和模拟这些设备。

      从QEMU角度来看,也可以说QEMU使用了KVM模块的虚拟化功能,为自己的虚拟机提供硬件虚拟化的加速。从而提高虚拟机的性能。

      KVM必须的硬件虚拟化扩展分别为:Intel的虚拟化技术(Intel VT)和AMD的AMD-V技术。首先处理器(CPU)要在硬件上支持VT技术,还要在BIOS中将其功能打开,KVM才能使用到。

    o(=•ェ•=)m纸上得来终觉浅,绝知此事要躬行o(=•ェ•=)m
  • 相关阅读:
    Android的startActivityForResult()与onActivityResult()与setResult()参数分析,activity带参数的返回
    git stash 保存当前工作状态
    vim diff 的使用
    git pull 命令
    java 开发环境安装
    vim 处理换行符
    git 操作分支
    git 操作远程仓库地址
    vim 宏的使用
    Chrome 调试技巧
  • 原文地址:https://www.cnblogs.com/occl/p/5827969.html
Copyright © 2011-2022 走看看