qemu kvm rhev支持嵌套虚拟化吗

当前位置:&>&&>&
KVM虚拟机安装配置过程图文详解
发布时间:
来源:服务器之家
一、KVM&虚拟机的管理工具
准确来说,KVM&仅仅是&Linux&内核的一个模块。管理和创建完整的&KVM&虚拟机,需要更多的辅助工具。QEMU-KVM:在&Linux&系统中,首先我们可以用&modprobe&命令加载&KVM&模块,如果用&RPM&安装&KVM&软件包,系统会在启动时自动加载模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有&KVM&模块是远远不够的,因为用户无法直接控制内核模块去做事情,还必须有一个用户空间的工具。关于用户空间的工具,KVM&的开发者选择了已经成型的开源虚拟化软件&QEMU。QEMU&是一个强大的虚拟化软件,它可以虚拟不同的&CPU&构架。比如说在&x86&的&CPU&上虚拟一个&Power&的&CPU,并利用它编译出可运行在&Power&上的程序。KVM&使用了&QEMU&的基于&x86&的部分,并稍加改造,形成可控制&KVM&内核模块的用户空间工具&QEMU-KVM。所以&Linux&发行版中分为&内核部分的&KVM&内核模块和&QEMU-KVM&工具。这就是&KVM&和&QEMU&的关系。&Libvirt、virsh、virt-manager:尽管&QEMU-KVM&工具可以创建和管理&KVM&虚拟机,RedHat&为&KVM&开发了更多的辅助工具,比如&libvirt、libguestfs&等。原因是&QEMU&工具效率不高,不易于使用。Libvirt&是一套提供了多种语言接口的&API,为各种虚拟化工具提供一套方便、可靠的编程接口,不仅支持&KVM,而且支持&Xen&等其他虚拟机。使用&libvirt,你只需要通过&libvirt&提供的函数连接到&KVM&或&Xen&宿主机,便可以用同样的命令控制不同的虚拟机了。Libvirt&不仅提供了&API,还自带一套基于文本的管理虚拟机的命令&virsh,你可以通过使用&virsh&命令来使用&libvirt&的全部功能。但最终用户更渴望的是图形用户界面,这就是&virt-manager。他是一套用&python&编写的虚拟机管理图形界面,用户可以通过它直观地操作不同的虚拟机。Virt-manager&就是利用&libvirt&的&API&实现的。
二、&安装配置KVM&相关软件
1&系统要求:
处理器需求:需要一台可以运行最新linux内核的Intel处理器(含VT虚拟化技术)或AMD处理器(含SVM安全虚拟机技术的AMD处理器,&也叫AMD-V)。可以使用如下命令检查:
[root@kvm ~]# egrep "(vmx|svm)" /proc/cpuinfo
如果输出的结果包含&vmx,它是&Intel处理器虚拟机技术标志;如果包含&svm,它是&AMD处理器虚拟机技术标志;。如果你甚么都得不到,那应你的系统并没有支持虚拟化的处理&,不能使用kvm。另外Linux&发行版本必须在64bit环境中才能使用KVM。
2&安装软件
安装KVM模块、管理工具和libvirt (一个创建虚拟机的工具),我们使用命令行安装:
#yum install kvm virt-manager libvirt
#service libvirtd start
#chkconfig libvirtd on
3&确定正确加载kvm模块
运行命令&lsmod | grep
kvm&检查&KVM&模块是否成功安装。如果结果类似于以下输出,那么&KVM&模块已成功安装:
[root@kvm ~]# lsmod | grep kvm
-----------------------
kvm_intel&&&&&&&&&&&&&
kvm&&&&&&&&&&&&&&&&&&
-----------------------
4&检查KVM是否成功安装
virsh -c qemu:///system list
将会显示如下结果:
#&virsh -c qemu:///system list
Id Name State
如果有机器在运行,则显示
如果在这里显示的是一个错误的信息,说明有些东西出现了问题。
三、KVM默认网络配置
1、kvm上网有两种配置,
一种是default,它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。
另外一种方式是bridge方式,可以使用虚拟机成为网络中具有独立IP的主机。
默认的网络连接是virbr0,它的配置文件在/var/lib/libvirt/network目录下,默认配置为:
另外一种是网络桥接方式,配置如下:
&配置:br0:
vi /etc/sysconfig/network-scripts/ifcfg-br0
--------------------
DEVICE="br0"
TYPE=Bridge
BOOTRPOTO=static
IPADDR=172.16.40.248
NETMASK=255.255.255.0
GATEWAY=172.16.40.254
ONBOOT=yes
----------------------
注:网桥模式需要在真机eth0配置文件中添加 BRIDGE="br0",否则真机与虚拟机无法互通.
&配置完毕后eth0口则不会显示地址信息,新配置的br0口会代替eth0口成为真机网口,装好的虚拟机eth0口将于真机br0口互通.
配置桥接网络之后,我们开始安装虚拟机
四、使用virt-manager建立一个KVM虚拟机
virt-manager&是基于&libvirt&的图像化虚拟机管理软件,请注意不同的发行版上&virt-manager&的版本可能不同,图形界面和操作方法也可能不同。本文使用了红帽6企业版的&virt-manager-0.8.4-8。创建KVM虚拟机最简单的方法是通过virt-manager接口。从控制台窗口启动这个工具,从root身份输入virt-manager命令,点击file菜单的"新建"选项virt-manager接口界面
接下来,出现的画面,大家都已经很熟悉了。
正文部分到此结束
SQL Error: select * from ***_***_news where id in ()
Copyright © . 版权所有KVM嵌套虚拟化
嵌套虚拟化指的是在宿主机上创建的虚拟机中,再运行hypervisor,从而在虚拟机里面再运行一个虚拟机,可以是KVM嵌套KVM,Xen嵌套Xen,或者是不同类型hypervisor的嵌套(如KVM嵌套Xen,VMware嵌套KVM等)
下面开始嵌套虚拟化的实验,我选择的类型是KVM on KVM的嵌套。
实验环境:
首先宿主机的内核版本需要3.0+,其次内核需要打开nested的功能,让内核支持嵌套虚拟化的功能。
[root@kvm ~]# uname -r #查看内核版本3.10.0-327.el7.x86_64[root@kvm ~]# cat /sys/module/kvm_intel/parameters/nested N #默认不开启,需要重新加载模块,并修改它的引导参数 [root@kvm ~]# rmmod kvm_intel #移除kvm_intel模块[root@kvm ~]# modprobe kvm_intel nested=1#重新加载并开启nested功能[root@kvm ~]# cat /sys/module/kvm_intel/parameters/nested Y#以上开启nested的方式在重启的时候失效,如果需要永久生效可以通过如下方式:[root@kvm ~]# echo "options kvm-intel nested=1" && /etc/modprobe.d/kvm_intel.conf
创建vm1,过程略
[root@kvm ~]# virsh list Id Name State---------------------------------------------------- 1 vm1 running
修改配置文件,实现CPU穿透
[root@kvm ~]# virsh shutdown vm1 [root@kvm ~]# vi /etc/libvirt/qemu/vm1.xml &cpu mode='host-passthrough'& #配置CPU model为host-passthrough &/cpu&[root@kvm ~]# systemctl restart libvirtd[root@kvm ~]# virsh start vm1
查看vm1的CPU特性是否与物理机一致
[root@vm1 ~]# cat /proc/cpuinfo |grep modelmodel: 62model name: Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHzmodel: 62model name: Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz
查看vm1的CPU是否支持虚拟化
[root@vm1 ~]# grep -E '(vmx|svm)' /proc/cpuinfoflags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm tpr_shadow vnmi flexpriority ept fsgsbase tsc_adjust smep erms xsaveopt
vm1需要加载模块
[root@vm1 ~]# modprobe kvm[root@vm1 ~]# modprobe kvm_intel[root@vm1 ~]# lsmod |grep kvmkvm_intel
安装kvm的管理工具
[root@vm1 ~]# yum -y install libvirt virt-install qemu-kvm qemu-kvm-tools
启动libvirtd服务
[root@vm1 ~]# systemctl start libvirtd[root@vm1 ~]# systemctl enable libvirtd
创建磁盘文件
[root@vm1 ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/vm1-1.qcow2 8G
[root@vm1 ~]#virt-install --cdrom=/opt/iso/CentOS-7.2-x86_64-DVD.iso --vcpu=2 --ram=1024 --network bridge=virbr0 --disk path=/var/lib/libvirt/images/vm1-1.qcow2 --graphics spice,listen=0.0.0.0 --name=vm1-1WARNING Unable to connect to graphical console: virt-viewer not installed. Please install the 'virt-viewer' package.WARNING No console to launch for the guest, defaulting to --wait -1Starting install...Creating domain...|0 B 00:00:00 Domain installation still in progress. Waiting for installation to complete.
我在宿主机创建了网桥,所以可以直接在windows通过remote viewer连接进vm1-1
[root@kvm ~]# brctl showbridge namebridge idSTP enabledinterfacesbrex05fa30yesenp10s0vnet0virbr0f5751yesvirbr0-nic
通过remote viewer进行安装
本文出自 “开源精神 源于分享” 博客
http://lidaxia.blog.51cto.com/1051
近期给云技术社区投稿,一经采用送最新出版的《运维前线》一本,数量有限,送完为止。投稿邮箱:。
加入中国最活跃的kubernetes技术讨论QQ群,加群主QQ:,并注明城市、行业、技术方向。
交流 分享 提升
云技术社区成立于2014年,国内最大的云技术交流平台,分享在云计算/虚拟化项目实施中的资讯、经验和技术,坚持干货。旗下运营:云技术实践、云技术、桌面云之云潮涌动等公众号,以及相关的微信群和QQ群,覆盖云计算领域的技术人群,加入云技术社区微信、QQ群请点击订阅号菜单“群和活动”。
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点qemu,kvm,qemu-kvm,xen,libvir&区别
KVM:(Kernel-based
Virtual Machine)基于内核的虚拟机
KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel
VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。
从存在形式看,
KVM是两个内核模块kvm.ko和kvm_intel.ko(对AMD处理器来说,就是kvm_amd.ko),这两个模块用来实现CPU的虚拟化。&如果要让用户在KVM上完成一个虚拟机相关的操作,显然需要用户空间的东西,同时还包括IO虚拟化,所以KVM的解决方案借鉴了QEMU的东西并做了一定的修改,形成了自己的KVM虚拟机工具集和IO虚拟化的支持,也就是所谓的qemu-kvm.
(KVM is a fork of QEMU, namely qemu-kvm)
Xen是第一类运行再裸机上的虚拟化管理程序(Hypervisor)。它支持全虚拟化和半虚拟化,Xen支持hypervisor和虚拟机互相通讯,而且提供在所有Linux版本上的免费产品,包括Red
Hat Enterprise Linux和SUSE Linux Enterprise
Server。Xen最重要的优势在于半虚拟化,此外未经修改的操作系统也可以直接在xen上运行(如Windows),能让虚拟机有效运行而不需要仿真,因此虚拟机能感知到hypervisor,而不需要模拟虚拟硬件,从而能实现高性能。&QEMU
is used by Xen.
QEMU是一套由Fabrice
Bellard所编写的模拟处理器的自由软件。它与Bochs,PearPC近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性,qemu可以虚拟出不同架构的虚拟机,如在x86平台上可以虚拟出power机器。kqemu为qemu的加速器,经由kqemu这个开源的加速器,QEMU能模拟至接近真实电脑的速度。
QEMU本身可以不依赖于KVM,但是如果有 KVM的存在并且硬件(处理器)支持比如Intel
VT功能,那么QEMU在对处理器虚拟化这一块可以利用KVM提供的功能来提升性能。
KVM和QEMU的关系
准确来说,KVM是Linux
kernel的一个模块。可以用命令modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是
远远不够的,因为用户无法直接控制内核模块去作事情,你还必须有一个运行在用户空间的工具才行。这个用户空间的工具,kvm开发者选择了已经成型的开源虚拟化软件
QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出可运行在Power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。所以你会看到,官方提供的KVM下载有两大部分(qemu和kvm)三个文件(KVM模块、QEMU工具以及二者的合集)。也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。这就是KVM和QEMU
QEMU是个独立的虚拟化解决方案,从这个角度它并不依赖KVM。
而KVM是另一套虚拟化解决方案,不过因为这个方案实际上只实现了内核中对处理器(Intel VT, AMD
SVM)虚拟化特性的支持,换言之,它缺乏设备虚拟化以及相应的用户空间管理虚拟机的工具,所以它借用了QEMU的代码并加以精简,连同KVM一起构成了另一个独立的虚拟化解决方案,不妨称之为:KVM+QEMU.&
KVM用户空间虚拟机管理工具有kvm, kvm-img, kvm-nbd ,kvm-ok
和kvm_stat,实际上kvm就是一个指向qemu-system-x86_64的符号链接,kvm-img则是指向qemu-img的符号链接。从适用的范围来讲,
QEMU虚拟化方案除了支持x86架构外,还支持其他很多架构,比如qemu-system-m68k,qemu-system-mips64,
qemu-system-ppc64, qemu-system-arm等等。但是目前提到KVM,一般指x86上基于Intel
VT和AMD SVM的解决方案,虽然目前将KVM移植到ARM, PPC的工作正在进行中。
当然由于redhat已经开始支持KVM,它认为KVM+QEMU'的方案中用户空间虚拟机管理工具不太好使,或者通用性不强,所以redhat想了一个libvirt出来,一个用来管理虚拟机的API库,不只针对KVM,也可以管理Xen等方案下的虚拟机。
kvm-qemu可执行程序像普通Qemu一样:分配RAM,加载代码,不同于重新编译或者调用callingKQemu,它创建了一个线程(这个很重要);这个线程调用KVM内核模块去切换到用户模式,并且去执行VM代码。当遇到一个特权指令,它从新切换会KVM内核模块,该内核模块在需要的时候,像Qemu线程发信号去处理大部分的硬件仿真。
这个体系结构一个比较巧妙的一个地方就是客户代码被模拟在一个posix线程,这允许你使用通常Linux工具管理。如果你需要一个有2或者4核的虚拟机,kvm-qemu创建2或者4个线程,每个线程调用KVM内核模块并开始执行。并发性(若果你有足够多的真实核)或者调度(如果你不管)是被通用的Linux调度器,这个使得KVM代码量十分的小。
当一起工作的时候,KVM管理CPU和MEM的访问,QEMU仿真硬件资源(硬盘,声卡,USB,等等)当QEMU单独运行时,QEMU同时模拟CPU和硬件。
from&http://yansu.org//different-bewteen-kvm-xen-qemu.html
http://blog.chinaunix.net/uid--id-3256677.html
http://zhidao.baidu.com/question/.html
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。KVM虚拟化技术_百度百科
清除历史记录关闭
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
KVM虚拟化技术
《KVM虚拟化技术》是2013年出版的图书,作者是任永杰、单海涛。
KVM虚拟化技术内容简介
首本Linux KVM虚拟化技术专著,由Intel虚拟化技术部门资深虚拟化技术专家和国内KVM技术的先驱者撰写,权威性毋庸置疑。在具体内容上,本书不仅系统介绍了KVM虚拟机的功能、特性和使用方法,而且还深入地剖析了KVM虚拟机的核心技术和工作原理,对KVM做了全面而透彻的讲解。
全书一共9章:第1章介绍了云计算和虚拟化的概念,并对KVM等几种流行的虚拟化技术做了比较;第2章介绍了KVM的基本架构、QEMU的作用以及Intel的硬件虚拟化技术;第3章详细讲解了KVM依赖的硬件环境配置,编译和安装KVM和QEMU的步骤与方法,以及KVM客户机的启动;第4章深入讲解了KVM的基础功能,包括虚拟的CPU、内存、存储、网络、图形显示等的配置和基本原理,以及CPU和内存的过载使用;第5章讲解了KVM的高级功能,包括半虚拟化驱动virtio、设备直接分配VT-d、热插拔、动态迁移、嵌套虚拟化、KSM、透明大页、KVM安全技术、QEMU监控器、QEMU命令行参数以及从物理机或其他虚拟机迁移到KVM的方法;第6章介绍了管理KVM虚拟化的上层软件;第7章介绍了RHEL等所有流行的Linux发行版中的KVM虚拟化功能的使用;第8章首先介绍了虚拟化性能测试,然后详细介绍了对KVM虚拟化的CPU、内存、网络、磁盘I/O等重要组件进行性能测试的方法、工具和步骤;第9章介绍了Linux、KVM、QEMU等开源社区的情况,KVM、QEMU和KVM单元测试代码的基本结构,以及如何向QEMU/KVM开源社区贡献自己的代码和如何提交KVM相关的bug。
KVM虚拟化技术作者简介
任永杰,资深虚拟化技术工程师和Linux技术工程师,现就职于Intel开源技术中心,担任虚拟化测试团队负责人,负责KVM的功能测试、性能分析及与开源社区的交流工作。对KVM/Xen等主流虚拟化技术有非常深入的研究,曾参与KVM/Xen开源社区的upstream和release测试,以及Redhat和Suse等Linux发行版中虚拟化功能的测试。此外,还精通Linux内核和Linux服务器管理,以及Shell、Python等脚本语言,熟悉C、Java编程。活跃于KVM/Xen/Qemu等开源社区,以及CSDN、ChinaUnix、51testing等论坛,在水木社区担任虚拟化技术版和软件测试版版主。  单海涛,资深虚拟化技术专家和系统软件工程师,现就职于Intel,担任虚拟化相关技术开发团队的经理,负责KVM、Xen等虚拟化软件的开发以及开发团队的管理。对KVM的原理和应用有非常深入的研究和认识,在Intel工作期间负责开发过与处理器、内存、I/O等相关的虚拟化软件,经验十分丰富。
.豆瓣读书[引用日期]
.京东[引用日期]
清除历史记录关闭本文测试物理机为centos6.5
物理机使用Intel-V虚拟化架构,安装qemu-kvm版本0.12
我们知道,在Intel处理器上,KVM使用Intel的vmx(virtul machine eXtensions)来提高虚拟机性能, 即硬件辅助虚拟化技术, 现在如果我们需要测试一个openstack集群,又或者单纯的需要多台具备"vmx"支持的主机, 但是又没有太多物理服务器可使用, 如果我们的虚拟机能够和物理机一样支持"vmx",那么问题就解决了,而正常情况下,一台虚拟机无法使自己成为一个hypervisors并在其上再次安装虚拟机,因为这些虚拟机并不支持"vmx"
嵌套式虚拟nested是一个可通过内核参数来启用的功能。它能够使一台虚拟机具有物理机CPU特性,支持vmx或者svm(AMD)硬件虚拟化,关于nested的具体介绍,可以看
1.首先查看一台普通的KVM虚拟机CPU信息
[root@localhost ~]# lscpu
Architecture:
Vendor ID:
GenuineIntel
Hypervisor vendor:
Virtualization type:
[root@localhost ~]# cat /pro/cpuinfo
: GenuineIntel
cpu family
model name
: QEMU Virtual CPU version (cpu64-rhel6)
: fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm
可以看到,这个虚拟机使用为全虚拟化,使用的CPU为QEMU模拟出来的CPU,并且不支持硬件虚拟化(flags中没有vmx)
2.物理服务器上开启nested支持
要使物理机内核支持nested,第一步需要升级系统内核到Linux 3.X版本,第二步要为内核添加新的引导参数
默认情况下,系统并不支持nested
#查看当前系统是否支持nestedsystool -m kvm_intel -v
| grep -i nestednested & & & & & & &= "N"
#或者这样查看
cat /sys/module/kvm_intel/parameters/nested
第一步升级内核,用3.18内核做测试,升级内核很简单,下载编译好的内核rpm包,,安装,然后修改grub.conf默认引导内核为新内核
第二步添加引导参数同样很简单,只需要在 kernel 那一行的末端加上 "kvm-intel.nested=1"
rpm -ivh kernel-ml-3.18.3-1.el6.elrepo.x86_64.rpm
#修改grub.conf
#使用新内核
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (3.18.3-1.el6.elrepo.x86_64)
root (hd0,0)
kernel /vmlinuz-3.18.3-1.el6.elrepo.x86_64 ro root=UUID=9c1afc64-f751-473c-aaa6-9161fff08f6f rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcy
rheb-sun16 crashkernel=auto
KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet kvm-intel.nested=1...
上面修改之后,重启系统,用"uname -r"查看系统内核,并检查nested是否支持
3. 建立一台支持"vmx"的虚拟机
如果你使用libvirt管理虚拟机,需要修改虚拟机xml文件中CPU的定义,下面三种定义都可以
#可以使用这种
&cpu mode='custom' match='exact'&
&model fallback='allow'&core2duo&/model&
&feature policy='require' name='vmx'/&
#这种方式为虚拟机定义需要模拟的CPU类型"core2duo",并且为虚拟机添加"vmx"特性
#也可以使用这种
&cpu mode='host-model'&
&model fallback='allow'/&
&cpu mode='host-passthrough'&
&topology sockets='2' cores='2' threads='2'/&
&/cpu&#CPU穿透,在虚拟机中看到的vcpu将会与物理机的CPU同样配置,这种方式缺点在于如果要对虚拟机迁移,迁移的目的服务器硬件配置必须与当前物理机一样
&如果你使用qemu-kvm命令行启动虚拟机,那么可以简单的添加
-enable-kvm -cpu qemu64,+vmx
#设置虚拟机CPU为qemu64型号,添加vmx支持
然后启动虚拟机,查看配置
#下面虚拟机CPU定义为"host-model"cat /proc/cpuinfo
: GenuineIntel
cpu family
model name
: Intel Core i7 9xx (Nehalem Class Core i7)...
: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc unfair_spinlock pni vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic
本文出自http://www.cnblogs.com/jython/p/4458807.html,转载请注明出处
http://kashyapc.com//nested-virtualization-with-kvm-intel/
http://networkstatic.net/nested-kvm-hypervisor-support/
阅读(...) 评论()

我要回帖

更多关于 qemu kvm 安装 的文章

 

随机推荐