手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

虚拟化技术,类型,KSM个人总结

[日期:2016-05-01] 来源:51CTO  作者:莫名慌亂 [字体: ]

一、虚拟化技术
1、XEN 英国剑桥大学开发,2007 RedHat 5.0集成XEN。被思杰收购。 运行XEN虚拟化需要使用ZEN定制过的内核,普通的linux的标准内核需要升级到XEN定制内核才能使用XEN虚拟化。(保证guses OS和hostOS完美配合)
2、KVM  Kernel-based Virtual Machine,redhat5.4 集成KVM,依然保留了XEN;redhat6之后只有KVM。不同于ZEN,使用linux标准的内核,KVM是以模块的方式存在,所有的虚拟机都是一个进程。
 
二、虚拟化类型
1、完全虚拟化
如果CPU支持VT-x或者AMD-v,设备就支持全虚拟化,否则只能半虚拟化(只能支持linux,不能安装windows);原因是因为CPU的工作原理: Intel的x86处理器是通过Ring级别来进行访问控制的,级别共分4层,RING0,RING1,RING2,RING3。kernel运行在RING0这一层,应用程序在RING3层,Windows只使用其中的两个级别RING0和RING3。RING0层拥有最高的权限,RING3层拥有最低的权限。按照Intel原有的构想,应用程序工作在RING3层,只能访问RING3层的数据,操作系统工作在RING0层,可以访问所有层的数据,而其他驱动程序位于RING1、RING2层,每一层只能访问本层以及权限更低层的数据。

CPU工作原理
 

CPU工作原理
 
敏感指令引入虚拟化后,虚拟机中的系统(guest OS)就不能运行在Ring 0上。因此,原本需要在最高级别下执行的指令就不能够直接执行,这些指令叫做敏感指令集。后来人们给linux内核植入一些代码(windows内核没有开源无法修改),这些敏感指令交由VMM(Virtual MachineMonitor,虚拟机监控器)处理执行。当执行这些指令时,都由VMM捕获翻译。效率非常低下。

现在的虚拟化叫做基于硬件完全虚拟化。VMware是基于软件的完全虚拟化,不在意cpu是否支持虚拟化。
 
敏感指令集包括:
1.企图访问或修改虚拟机模式或机器状态的指令。
2.企图访问或修改敏感寄存器或存储单元,如时钟寄存器、中断寄存器等的指令。
3.企图访问存储保护系统或内存、地址分配系统的指令。
4.所有I/O指令。
2、半虚拟化
虚拟机需要使用到的网卡驱动,硬盘驱动,使用的半虚拟化技术驱动优于传统设备。如virtI0、vmware tools都是半虚拟化驱动。提升虚拟机的性能。
3、硬件虚拟化(本地虚拟化)
后来,CPU厂商,开始支持虚拟化了,情况有发生变化,拿X86 CPU来说,引入了Intel-VT 技术,支持Intel-VT 的CPU,有VMXroot operation 和 VMX non-root operation两种模式,两种模式都支持Ring 0 ~ Ring 3 这 4 个运行级别。这下好了,VMM可以运行在VMX root operation模式下,虚拟机运行在VMX non-root operation模式下。也就说,硬件这层做了些区分,这样全虚拟化下,有些靠“捕获异常-翻译-模拟”的实现就不需要了。而且CPU厂商,支持虚拟化的力度越来越大,靠硬件辅助的全虚拟化技术的性能逐渐逼近半虚拟化,再加上全虚拟化不需要修改客户操作系统这一优势,全虚拟化技术应该是未来的发展趋势。因为在硬件虚拟化下虚拟机guest OS也可以工作在Ring0,所以虚拟机支持虚拟机里面运行虚拟机,支持虚拟机的嵌套。
 
1、CPU虚拟化  intel的 VT-X,AMD-V
2、MMU虚拟化 intel EPT ,AMD RVI
3、I/O虚拟化  intel VT-D,AMD IOMMU
 
IntelVT-x,AMD-V :CPU虚拟化技术 cat /proc/cpuinfo  查看是否有vtx(intel)  svm(AMD)
 
intelVT-D 直接IO:英特尔VT-d通过减少 VMM 参与管理 I/O 流量的需求,不但加速了数据传输,而且消除了大部分的性能开销。这是通过使 VMM将特定 I/O 设备安全分配给某一个单独的虚拟机使用。每个设备在系统内存中都有一个专用区域,只有该设备及其分配的客户操作系统才能对该区域进行访问。可直接在客户操作系统与为其分配的设备之间进行传输。减少了的 VMM 负载,进一步缩减服务器CPU的负载。
 
AMDIOMMU:将一个网卡分给很多个虚拟机
 
IntelVT-C:两大技术VMDq和VMDc;
传统虚拟化环境中,VMM 必须对每个单独的数据进行分类,并将其发送到为其分配的虚拟机。这样会占用大量的处理器周期。而借助 VMDq,该分类功能可由网卡内的专用硬件来执行,VMM 只需负责将预分类的数据包组发送到适当的客户操作系统。这将减缓 I/O 延迟。虚拟机直接互连(VMDc)支持虚拟机直接访问网络 I/O 硬件,减轻VMM的负担,从而显著提升虚拟性能。
 
IntelEPT, AMD RVI 嵌套页表:虚拟机调用的内存需要映射物理内存,这个虚拟机内存是按需分配,需要多少内存才会映射物理内存。正常情况下CPU需要消耗更多的周期来映射物理内存到虚拟机,MMU(内存管理单元)虚拟化允许CPU硬件来映射内存页,减少VMM的负担。
三、KSM
KSM  kernel same-page merging,优点:相同物理内存片只保留1份,多个虚拟机共享这一份内存。缺点:kernel每隔一段时间扫描一下内存,会带来一定开销。

执行 ksctlinfo | start | stop


四、远程协议
Redhat  vnc
微软    rdp
思杰    ica
华为    hdp
开源    spice

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-05/130878.htm

linux
相关资讯       虚拟化 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款