KVM 嵌套虚拟化介绍及使用 virtual ETP 特性

嵌套虚拟化简介

嵌套虚拟化(nested virtualization、recursive virtualization)是指在虚拟化的客户机中运行一个Hypervisor,从而再虚拟化运行一个客户机。嵌套虚拟化不仅包括相同 Hypervisor的嵌套(如KVM on KVM、Xen on Xen、VMware on VMware等),也包括不同Hypervisor的相互嵌套(如VMware on KVM、KVM on Xen、Xen on KVM等)。根据嵌套虚拟化这个概念可知,不仅包括两层嵌套(如KVM on KVM),还包括多层的嵌套(如KVM on KVM on KVM)。

如果嵌套虚拟化比较成熟并商用了,在Amazon上的EC2或者Google的GCE上面租用的虚拟客户机中,就可以自己再使用VMware、KVM、Xen等虚拟机。

KVM嵌套虚拟化的当前状态(virtual EPT)

在两三年前(约2010年),KVM就开始支持嵌套虚拟化,可以向L1提供最基本的CPU硬件虚拟化。然后由于没有EPT的支持,在L1中只能使用 shadow pagetable,其内存访问的效率比较低;最近IBM和Intel(我们team)的工程师开始做一些virtual EPT的工作,可以让L1使用虚拟EPT的特性,从而极大地提高L2中内存访问的效率。有了virtual EPT之后,L2的pagetable就有3种可能的类型:shadow on shadow, shadow on EPT, EPT on EPT(其中EPT on EPT的性能当然是最好的)。目前,virtual EPT的patch还没发到upstream KVM中,不过最近应该可以很快进去了。

另外,最近IBM(和Intel)的工程师也在KVM maillist中发了一些关于VMCS shadowing的patch,这个也是可以很好地提高L2的运行效率的(今后可以再说说)。

BTW,在最新的Xen中,Intel工程师已经开发了virtual EPT 和 VMCS shadowing等nested中重要feature的patch,并且都已经正式加入到upstream中了的,貌似性能有很大的提高(今后可以有些数据)。也可以参考Xen Summit 2013中的一个演讲稿:http://www.slideshare.net/xen_com_mgr/nested-virtualization- update-from-intel

KVM virtual EPT的性能数据

在最新的KVM内核(3.9.0-RCx)中,添加了内部的virtual EPT相关的patch,然后在L2中测试kernel build的效率。(这里的嵌套虚拟化是 KVM on KVM 类型)

在一台Ivy Bridge机器上,L2是4 vCPU 和 4GB内存配置,内核编译所需的时间对比如下

without v-EPT: 32’6″ (32分6秒) –> 是shadow on EPT的情况。

with v-EPT: 9’56″ –> 是 EPT on EPT 的情况

可见,在KVM虚拟化中使用了virtual EPT的性能,可以让kernel build这个测试场景的性能变为原来的3倍(3X)左右。

相信在最近virtual EPT 和 VMCS shadowing 等patch都加入到upstream KVM中后,KVM的嵌套虚拟化效率会得到很大的提高,从而让嵌套虚拟化成为真正可实际使用的技术。

时间: 2024-10-07 05:34:49

KVM 嵌套虚拟化介绍及使用 virtual ETP 特性的相关文章

《Linux KVM虚拟化架构实战指南》——1.3 RHEV虚拟化介绍

1.3 RHEV虚拟化介绍 RHEV(Red Hat Enterprise Virtualization)的中文意思为红帽企业虚拟化.RHEV是RedHat公司推出的功能强大且全面的服务器虚拟化平台,是基于KVM的虚拟化架构. RHEV是一款针对服务器和桌面虚拟化的完整虚拟化管理解决方案,是第一个成熟的.完全开源的企业虚拟化平台.RHEV寻求更好的总拥有成本.更快的投资回报.加快收支平衡,以及从单一供应商解脱出来的虚拟化备选方案. 对于企业级KVM虚拟化,需要的是轻松的KVM管理.高可用性.最佳

《Linux KVM虚拟化架构实战指南》——1.2 KVM虚拟化介绍

1.2 KVM虚拟化介绍 Kernel-based Virtual Machine(基于内核的虚拟机)最初是由以色列的一个创业公司Qumranet开发的,作为他们的VDI产品的虚拟机. 1.2.1 KVM虚拟化技术简介为简化开发,KVM的开发人员并没有选择从底层开始新写一个Hypervisor,而是选择了基于Linux kernel,通过加载新的模块使Linux Kernel本身变成一个Hypervisor. 2006年10月,在先后完成了基本功能.动态迁移以及主要的性能优化之后,Qumrane

《Linux KVM虚拟化架构实战指南》——第1章 KVM虚拟化概述 1.1XEN虚拟化介绍

第1章 KVM虚拟化概述 Kernel-based Virtual Machine(基于内核的虚拟机)是开源的系统虚拟化模块,从Linux 2.6.20内核之后集成在Linux的各个主要发行版本中.它使用Linux自身的调度器进行管理,所以相对于XEN,其核心源码很少,KVM目前在开源系统中大规模使用.本书以Red Hat Enterprise Virtualization(红帽企业虚拟化)为主要平台,配合其他版本的KVM进行介绍. 1.1 XEN虚拟化介绍 XEN虚拟化技术是英国剑桥大学计算机

《VMware vSphere 6.0虚拟化架构实战指南》——第2章 安装配置VMware ESXi 6.0 2.1VMware vSphere 6.0虚拟化介绍

第2章 安装配置VMware ESXi 6.0 2014年10月,VMware vForum 2014大会在北京召开,VMware公司针对了VMware vSphere 6.0发布时间作了统一的回复,将于2015年1季度发布VMware vSphere 6.0正式版本.2015年2月3日,作为软件定义数据中心 基础.面向混合云的最新版本虚拟化 解决方案 VMware vSphere 6.0正式发布,3月12日官方网站开始提供下载.VMware ESXi 6.0作为VMware vSphere 6

嵌套你妹的嵌套虚拟化

上次VMDK转VHD失败.主要是因为硬盘太多,SCSI和IDE关系及GRUP.CONF和FSTAB的修改都涉及太多测试, 而网络又不给力.那只好测试别的办法了.VHD转VMDK,这个倒有信心,但时机不到.又N多大文件上传下载. 也试了HYPER-V里弄ESXI,网卡不给力哈. 这次用一下嵌套虚拟化吧,上面觉得省事,当然,也损失了性能. ~~~~~~~~~~~ 策略是将VHD原封不到,放到ESXI的WINDOWS环境中的HYPER下,那,这就是正宗的嵌套虚拟化了. 文档找了一批,又有5.0和5.1

开源KVM管理工具介绍

在之前的文章中,我们介绍了开源虚拟化平台KVM的概念与工作原理.下面我们来看看KVM的获取方式与管理工具. 两种方式获取KVM 购买Linux版本获得KVM.很多Linux发行版本都内置有KVM,包括红帽企业Linux 5.4及以上版本,SUSE Linux Enterprise Server 11 SP1及以上版本,Canonical Ubuntu 10.04 LTS及以上版本.如果想虚拟运行Linux的服务器,或者虚拟运行Linux与Windows服务器的话,该购买方法最合适. 将KVM作为

联想VNX新版本的虚拟化介绍

新版本在虚拟化方面主要增加了两个功能,更好地整合了VNX和VMware的功能,本文将详细介绍VASA.   VASA (vStorage API for Storage Awareness) 用于NFS多重快照的VAAI (vStorage API for Array Integration) 解决方案: VASA功能介绍     VASA是VMware开发的API用在vCenter显示存储信息.VASA的功能和VNX Unisphere的功能很类似,正如VNX通过Unisphere显示主机VM

KVM 存储虚拟化 - 每天5分钟玩转 OpenStack(7)

KVM 的存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理的. Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种类型,后面会详细讨论.Volume 是在 Storage Pool 中划分出的一块空间,宿主机将 Volume 分配给虚拟机,Volume 在虚拟机中看到的就是一块硬盘. 下面我们学习不同类型的 Storage Pool 目录类型的 Storage Pool 文件目录是最常用的 Storage Pool 类型.KVM 将宿主机目录 /v

服务器虚拟化介绍

George Ou 提供了服务器虚拟化的介绍,从什么是虚拟化,为什么要使用虚拟化到何时需要使用虚拟化.如何将物理服务器迁移至虚拟服务器,等等.这篇热文最初发表于2006年5月. ----------------------------– 什么是虚拟化,为什么要虚拟化什么时候要使用虚拟化如何避免"所有鸡蛋都放进同一个篮子中"物理向虚拟服务器的迁移虚拟化服务器的补丁管理授权及支持方面的考虑什么是虚拟化,为什么要虚拟化? 虚拟化是在单个物理服务器上运行多个独立的虚拟操作系统的一种方法.是通过