RHCA 318-1 Virtualization 个人总结

Virtualization

一、虚拟化技术

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层,每一层只能访问本层以及权限更低层的数据。

RHCA 318-1 Virtualization 个人总结_第1张图片

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每隔一段时间扫描一下内存,会带来一定开销。

RHCA 318-1 Virtualization 个人总结_第2张图片

执行 ksctlinfo | start | stop


四、远程协议

Redhat   vnc

微软     rdp

思杰     ica

华为     hdp

开源     spice


本文出自 “学习笔记” 博客,谢绝转载!

你可能感兴趣的:(虚拟化,个人总结,rhca)