1、虚拟机与容器对比:

2、Hypervisor管理工具对比:

3、QEMU:

软件模拟虚拟化、可以模拟多种硬件,包括X86架构处理器、AMD64架构处理器、ARM、SPARC与PowerPC、AIX架构等,效率低、一般用于研究测试场景。QEMU可以模拟一部手机,开发人员用于开发手机程序。

此处使用QEMU的主要目的是为了方便管理KVM虚拟机镜像文件。

说明:

QEMU由Fabrice Bellard编写的模拟处理器的自由软件,它是一个完整的可以单独运行的软件,可以独立模拟出整台计算机、包括CPU、内存、IO设备、通过一个特殊的“重编译器”对特定的处理器的二进制代码进行翻译,从而具有跨平台的通用性。QEMU有两种工作模式:系统模式,可以模拟出整个电脑系统,另一种是用户模式,可以运行不同与当前硬件平台的其他平台上的程序。1.0以后版本就只能使用QEMU-KVM进行加速了,1.3版本之后QEMU和QEMU-KVM合二为一了。

4、KVM:

KVM Kernel-based virtual machine 基于内核的虚拟机,KVM是虚拟机模块。

是X86架构下硬件辅助的全虚拟化的首选解决方案。

KVM需要通过修改的QEMU软件(qemu-kvm)来实现虚拟机的管理。

KVM就是内核的一个模块,用户空间通过QEMU模拟硬件提供给虚拟机使用,一台虚拟机就是一个普通的Linux进程,虚拟机中的VCPU就是该进程中的线程。

说明:

不同的基于KVM的虚拟化平台,可能会采用不同的虚拟化组件,目前主流的采用QEMU-KVM组件,但在不同的产品里版本有所不同,功能也有差异。

KVM通过调用Linux本身内核功能,实现对CPU的底层虚拟化和内存的虚拟化,使Linux内核成为虚拟化层,需要x86架构支持虚拟化功能的硬件支持(比如Intel-VT,AMD-V),是一种全虚拟化架构。

KVM在2007年2月被导入Linux 2.6.20内核中。

从存在形式来看,它包括两个内核模块:kvm.ko和kvm_intel.ko(或者kvm_amd.ko)。本质上,KVM是管理虚拟硬件设备的驱动,该驱动使用字符设备/dev/kvm(由KVM本身创建)作为管理接口,主要负责vCPU的创建,虚拟内存的分配,vCPU寄存器的读写以及vCPU的运行。

KVM是Linux内核的模块,它需要CPU的支持,采用硬件辅助虚拟化技术Intel-VT,AMD-V,内存相关的如Intel的EPT和AMD的RVI技术Guest OS的CPU指令不用再经过Qemu转译,直接运行,大大提高了速度,KVM通过/dev/kvm暴露接口,用户态程序通过ioctl函数来访问这个接口。

总结:

1)KVM是基于内核的虚拟机

2)是内核的一个模块

3)2007加入linux内核,版本2.6.20

4)为虚拟机提供CPU和内核,QEMU来提供其他组件

5)通过/dev/kvm接口使用kvm模块

5、QEMU-KVM:

KVM只负责CPU和内存的虚拟化,加载它之后,用户就可以进一步通过工具创建虚拟机(KVM提供接口),但仅有KVM还是不够的,用户无法直接控制内核去做事情(kvm只提供接口,怎么创建虚拟机,分配vCPU等并不在它上面运行),还必须有个运行在用户空间的工具才行,KVM的开发者选择了比较成熟的开源虚拟化软件QEMU来作为这个工具,并对其进行了修改,最后形成了QEMU-KVM。

QEMU-KVM中,KVM运行在内核空间,QEMU运行在用户空间,实际模拟创建,管理各种虚拟硬件,QEMU将KVM整合起来,通过ioctl调用/dev/kvm, 从而将CPU指令的部分交给内核模块来做,KVM实现了CPU和内存虚拟化,但KVM不能虚拟其他硬件设备,因此QEMU还有模拟IO设备,如磁盘、网卡、显卡等的作用,KVM加上QEMU后就是完整意义上的服务器虚拟化。当然,由于QEMU模拟IO设备效率不高的原因,现在常常采用半虚拟化的virtio方式来虚拟化IO设备。

QEMU-KVM作用:

1)提供对CPU、内存(KVM负责)、IO设备(QEMU负责)的虚拟;

2)对各种虚拟设备的创建,调用进行管理(QEMU负责)。

总结:

QEMU-KVM:

1)用户空间的虚拟化管理工具;

2)QEMU提供IO设备虚拟化及管理;

3)KVM提供CPU和内存的虚拟化

6、libvirt:

libvirt是一套免费的、开源的支持Linux下主流虚拟化管理程序的C函数库,其旨在为包括KVM在内的各种虚拟化管理程序提供一套方便、可靠的编程接口。

当前主流Linux平台上默认的虚拟化管理工具virt-manager、virsh等都是基于libvirt开发的。

说明:

一个针对各种虚拟化平台的虚拟机管理的API库,一些常用的虚拟机管理工具如virsh(类似vim编辑器),virsh-install、virt-manager等和云计算框架平台(如OpenStack、OpenNebula、Eucalyptus等)都在底层使用libvirt提供的应用程序接口。libvirt主要是由三个部分组成:API库,一个守护进程libvirtd和一个默认命令行管理工具virsh。

virt-manager、libvirt、qemu-kvm三者之间的关系:

总结:

libvirt:

1)为用户管理虚拟机提供了访问hypervisor接口

2)包含三部分:库、libvirtd、virsh命令

3)virt-manager、libvirt、qemu-kvm三者之间的关系

virt-manager通过libvirt管理qemu-kvm虚拟机。

KVM虚拟化技术学习笔记2相关推荐

  1. KVM虚拟化技术学习-网络及脚本管理

    1.配置桥接 1.在宿主机上,修改文件 [root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-s ...

  2. java mvc框架代码_JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码)

    原标题:JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码) JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的 ...

  3. kvm虚拟化技术下虚拟机磁盘的数据保护

    摘要:kvm虚拟化技术下虚拟机的磁盘空间中数据的保护与恢复,考虑kvm的服务器级别的可用性. 1.kvm技术简单介绍    kvm虚拟化技术由几部分构成,kvm内核模块(cpu和内存的虚拟化及管理), ...

  4. 小五思科技术学习笔记之SSH

    下面介绍一下相关概念: SSH的概念: SSH的英文全称为Secure Shell,SSH使用TCP的22号端口,其目的是要在非安全的网络上提供安全的远程登陆和其他安全的网络服务, 为什么要使用SSH ...

  5. KVM 虚拟化技术以及 KVM 和云计算的关系

    KVM 是 Kernel-based Virtual Machine 的简称,KVM 要求 CPU 支持硬件虚拟化技术(如 intel VT 或 AMD-V),是 Linux 下的全虚拟化解决方案.K ...

  6. Linux KVM 虚拟化技术

    目录 KVM 介绍 一.KVM虚拟化 二.虚拟化技术 三.虚拟化技术发展 四.虚拟化类型 五.虚拟化特性 优势 劣势 案例 VMM主要功能 六.KVM架构及原理 KVM简介 KVM原理 KVM虚拟化架 ...

  7. ssm 转发请求_千呼万唤!阿里内部终于把这份SSM框架技术学习笔记分享出来了...

    SSM SSM(Spring+SpringMVC+MyBatis)框架集由Spring.MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容).常作为数据源较简单的web项 ...

  8. KVM虚拟化技术的-NUMA技术和应用

    KVM虚拟化技术的-NUMA技术和应用 NUMA技术是解决多CPU共同工作的技术方案,多CPU共同工作主要有3中架构:SMP:Symmetric Multi-Processor),非统一存储访问结构( ...

  9. 知识图谱技术学习笔记

    知识图谱技术学习笔记 从一开始的Google搜索,到现在的聊天机器人.大数据风控.证券投资.智能医疗.自适应教育.推荐系统,无一不跟知识图谱相关.它在技术领域的热度也在逐年上升. 本文以通俗易懂的方式 ...

最新文章

  1. 华为将发布世界首款人工智能原生数据库
  2. java url 根域名_php中取得URL的根域名的代码
  3. JVM专题(2)-类加载器子系统
  4. BZOJ2038 : [2009国家集训队]小Z的袜子(hose)(莫队算法)
  5. 这位博士跑赢“地震波”:提前 10 秒预警宜宾地震!
  6. php软件开发--tp5
  7. 记一次mysql中文字符乱码的问题排查
  8. 辨别Python中load和loads的小技巧
  9. IT Library第4期《备份域升为主域控制器》
  10. Bootstrap3学习笔记
  11. Codeforces Round #275 (Div. 2)
  12. 66、加一(python)
  13. 【每周论文阅读-第四周】proposal-level 特征聚合视频目标检测方法01
  14. 《SuperMap iDesktop的理论知识》
  15. 职场篇(一):明哥的职场礼仪七堂课笔记
  16. javascript网站期末作品~html电影资讯博客网站模板(HTML+CSS+JavaScript)在线电影网页设计...
  17. 一图看懂RTB广告竞价原理,原来这就是实时竞价
  18. 保洁阿姨看完都会了!熬夜肝完这份Framework笔记,吐血整理
  19. 【mysql-日志】清理二进制日志文件
  20. 使用 PyTorch 搭建网络 - predict_py篇

热门文章

  1. php将时间戳转换为时间格式,php时间戳如何转换为时间格式
  2. 易语言怎么写删除c盘文件夹,易语言删除文件目录的方法
  3. 手机端移动端的前端原生js裁剪图片上传
  4. OpenGL南邮计算机图形学实验报告三——实现类似地月系统的两物体环绕移动
  5. eclipse svn忽略classpath、target、.project等
  6. dwg文件的编辑方法有哪些
  7. 利用python实现将文本、摩尔斯电码与用滴答表示的摩尔斯电码三者相互转换
  8. IIS安装和使用URL重写工具-URL Rewrite
  9. h5页面转PDF下载(包括pc端和移动端)
  10. JQuery控制表单提交