KVM虚拟化技术

KVM简介
KVM(Kernel-based Virtual Machine,基于内核的虚拟机)是一种内建于Linux中的开源虚拟机啊技术。具体而言,KVM可帮助用户将Linux转变成虚拟机监控程序,使主机计算机能够运行多个隔离的虚拟环境,即虚拟客户机或虚拟机(VM)。
KVM是Linux的一部分,Linux2.6.20或者更新版本包括KVM。KVM于2006年首次公布,并在一年后合并到主流Linux内核版本中。由于KVM属于现有的Linux代码,因此它能够立即享受每一项新的Linux功能、修复和发展,无需进行额外工程。

KVM功能特性
1、内存管理
KVM从Linux继承了强大的内存管理功能。一个虚拟机的内存与任何其他的linux进程的内存一样进行存储,可以以大页面的形式进行交换以实现更高的性能,也可以以磁盘文件的形式进行共享。NUMA(Non-Uniform Memory Access,非一致存储访问结构)很好地解决了CPU资源地扩展问题,它可以把几十个甚至上百个CPU组合在一个服务器内,支持非一致性内存访问,针对多处理器的内存设计,允许虚拟机有效地访问大量内存。
KVM支持最新地给予硬件地内存虚拟化功能,支持Intel地扩展页表(EPT)和AMD地嵌套页表(NPT,也叫“快速虚拟机啊索引-RVI”),以实现更低的CPU利用率和更高的吞吐量。内存页面共享通过一项名为内核同页合并(KernelSame-pageMerging,KSM)的内核功能来支持。KSM扫描每个虚拟机的内存,如果虚拟机拥相同的内存页面,KSM将这些页面合并到一个在虚拟机之间共享的页面,仅存储一个副本。如果一个客户机尝试更改这个共享页面,它将得到自己的专用副本。
2、存储
KVM能够使用Linux支持的任何存储来存储虚拟机镜像,包括IDE、SCSI和SATA的本地磁盘,网络附加存储NAS(包括NFS和SAMBA/CIFS)或者支持iSCSI和光纤通道的SAN。多路径I/O可用于改进存储吞吐量和提供冗余。由于KVM是Linux内核的一部分,它可以利用所有领先存储供应商都支持的一种成熟且可靠的存储基础架构,它的存储堆栈在生产部署方面具有良好的记录。
KVM还支持全局文件系统(GFS2)等共享文件系统上的虚拟机镜像,以允许虚拟机镜像在多个宿主之间共享或使用逻辑卷共享。磁盘镜像支持按需分配,仅在虚拟机需要时分配存储空间,而不是提前分配整个存储空间,提高存储利用率。LVM的原生磁盘格式为QCOW2,支持快照,允许多级快照、压缩和加密。
3、设备驱动程序
KVM支持混合虚拟化,其中准虚拟化的驱动程序安装在客户机操作系统中,允许虚拟机使用优化的I/O接口而不使用模拟的设备,从而为网络和块设备提供高性能的I/O。KVM准虚拟化的驱动程序使用IBM和Redhat(红帽)联合Linux社区开发的VirtIO标准,它是一个与虚拟机管理程序独立的、构建设备驱动程序的接口,允许为多个虚拟机管理程序使用一组相同的设备驱动程序,能够实现更出色的虚拟机交互性。
4、性能和可伸缩性
KVM也继承了Linux的性能和可伸缩性.。KVM虚拟化性能在很多方面(如计算能力、网络带宽等)已经可以达到非虚拟化原生环境的95%以上的性能。KVM的扩展性也非常良好,客户机和宿主机都可以支持非常多的CPU数量和大量的内存。

KVM架构及相关组件
KVM本身不执行任何设备模拟,需要用户空间程序QEMU通过/dev/kvm接口设置一个虚拟机客户机的地址空间,想它向它提供模拟的I/O设备。并将它的视频显示映射回宿主机的显示屏。
1、KVM模块
KVM模块是KVM 虚拟机的核心部分。KVM仅支持硬件虚拟化。其主要功能是初始化CPU硬件,打开虚拟化模式,然后将虚拟客户机在虚拟机模式下,并对虚拟客户机的运行提供一定的支持。
以KVM在Intel的CPU上运行为例,在被内核加载的时候,KVM模块会先初始化内部的数据结构;之后KVM模块检测系统当前的CPU,然后打开CPU控制寄存器CR4中的虚拟化模式开关,并通过执行VMXON指令将宿主操作系统至于虚拟化模式的根模式;最后KVM模块创建特殊设备文件/dev/kvm,并等待来自用户空间的命令。接下来虚拟机的创建和运行是一个用户空间程序(QEMU)和KVM模块互相配合的过程。
2、QEMU
QEMU是一个开源的虚拟机纯软件的实现,性能低下。但是其优点是支持本身编译运行的平台上就可以实现虚拟机的功能,甚至虚拟机可以与宿主机不同架构。QEMU代码中有着整套虚拟机的实现,包括处理器、内存虚拟化以及虚拟设备模拟(比如网卡、显卡、存储控制器及硬盘等)。
3、Libvirt
Libvirt是KVM的管理工具。Libvirt除了能管理KVM这种Hypervisor,还能管理Xen,Virtualbox等,OpenStack底层也使用Libvirt。
Libvirt包含:后台Daemon程序libvirted、API库和命令行工具virsh。
libvirted:服务程序,接收和处理API请求;
API库:使得其他人可以开发给予Libvirt的高级工具,比如virt-manager,是图形化的KVM管理工具;
virsh:是人们经常要用的KVM命令行工具。

KVM的网络模型概述
KVM虚拟化使用一种称之为虚拟交换的技术实现虚拟机的网络互联,虚拟交换是运行在宿主机的一个软件结构,虚拟主机通过这个虚拟交换进行直连,实现与外界通信。虚拟交换可以运行在NAT模式、路由模式等。
目前,常见的是桥接模式。在虚拟化环境中,目前见过最多的就是桥接模式。现在流行的Docker一般在基于NAT模式实现的。

KVM虚拟化技术基础框架相关推荐

  1. 天翼云从业认证(1.6)虚拟化技术基础、服务器虚拟化、存储虚拟化和网络虚拟化技术;

    虚拟化技术基础.服务器虚拟化 常见虚拟化技术:vmware.xen.kvm. 虚拟化技术特征:分区.隔离.封装.相对于硬件独立. 全虚拟化:抽象VM具有完全的物理机特征,操作系统在其上运行,不需要任何 ...

  2. KVM虚拟化技术(三)之克隆虚拟机

    大家好,我是邵奈一,一个不务正业的程序猿.正儿八经的斜杠青年. 1.世人称我为:被代码耽误的诗人.没天赋的书法家.五音不全的歌手.专业跑龙套演员.不合格的运动员- 2.这几年,我整理了很多IT技术相关 ...

  3. KVM 虚拟化技术之Hypervisor的实现

    KVM 虚拟化技术之Hypervisor的实现 VMM(VirtualMachineMonitor)对物理资源的虚拟可以划分为三个部分: CPU虚拟化.内存虚拟化和I/O设备虚拟化,其中以CPU的虚拟 ...

  4. 50 xen虚拟化技术基础、xen虚拟化技术进阶

    01 xen虚拟化技术基础 配置环境: node1 192.168.1.61 CentOS6.6 [root@node1 ~]# uname -r 2.6.32-504.el6.x86_64 [roo ...

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

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

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

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

  7. Linux KVM 虚拟化技术

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

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

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

  9. 云计算运营—03 KVM虚拟化技术方案介绍

    KVM虚拟化技术方案介绍 1.背景介绍 KVM(Kernel-based Virtual Machine) 开源全虚拟化方案 支持体系结构 x86(32位,64位).IA64.PowerPC.S390 ...

  10. KVM 虚拟化技术 | 虚拟化平台部署

    KVM 虚拟化技术 一.虚拟化技术 1.1 概述 1.2 类型 ① 全虚拟化 ② 半虚拟化 ③ 直通 1.3 特点 二.KVM 2.1 概述 2.2 原理 2.3 虚拟化架构 2.4 工作流程 三.部 ...

最新文章

  1. 【C 语言】结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )
  2. wxWidgets 编译 ICON 资源
  3. Python基于python实现的http+json协议接口自动化测试框架源码(实用改进版)
  4. TRIPLE is More Than DOUBLE Plus One
  5. 09_期望极大法EM1_统计学习方法
  6. Windows Communication Foundation_1 overview
  7. python模块之httplib(在py3中功能进一步强大,请详看文档)
  8. php dvws,phpstudy配置dvwa——sql注入、xss攻击练习
  9. LaTeX 页眉和页脚
  10. python的encode()和decode()的用法及实例
  11. C - Reverse Polish Calculator
  12. 【总结】办公编程学习你可能需要这些小利器!
  13. Delphi 函数使用技巧
  14. ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(11)之支付管理及广告管理...
  15. Label 相关论文汇总
  16. iocomp ActiveX/VCL各版本大比拼之Crack
  17. 云服务器修改dns服务器为阿里云公共dns服务器
  18. update(更新) 和 upgrade(升级)
  19. SQL语句条件判断之case when基本用法
  20. vue.js请求数据

热门文章

  1. 计算机科学期刊介绍--各种杂志投稿方式与评价
  2. android listview刷新数据库,android – 如何在数据库更改后刷新ListView?
  3. ManualResetEvent
  4. visual foxpro v6.0官方版
  5. 大三上学期学期总结及百度实习感受
  6. 2021年软考网络工程师专题突破视频教程
  7. ISO 14001环境管理体系中环境因素的识别
  8. [EXP]CVE-2019-0604 Microsoft SharePoint RCE Exploit
  9. 安装VS2010 SP1失败,安装VS2010 SP1时出现回滚,
  10. 自动驾驶仿真:角雷达坐标系转换详解