【云计算 IT 基础知识】 3.4 服务器虚拟化技术

muzilan 2016-04-16 02:22:16
加精

处理器虚拟化

处理器全虚拟化技术

主要采用优先级压缩技术(Ring Compression)和二进制代码翻译技术(Binary Translation)。优先级压缩技术让VMM和Guest运行在不同的特权级下。对x86架构而言,即VMM运行在最高特权级别Ring0下,Guest OS运行在Ring 1下,用户应用运行在 Ring 3下。因此,Guest OS的核心指令无法直接下达到计算机系统硬件执行,而是需要 经过VMM的捕获和模拟执行(部分难以虚拟化的指令需要通过Binary Translation技术进行转换)。如图3-6所示。


处理器半虚拟化技术

主要采用Hypercall技术。Guest OS的部分代码被改变,从而使Guest OS会将和特权指令相关的操作都转换为发给VMM的Hypercall(超级调用),由VMM继续进行处理。而Hypercall支持的批处理和异步这两种优化方式,使得通过Hypercall能得到近似于物理机 的速度。如图3-7所示。


处理器硬件辅助虚拟化技术

目前主要有Intel的VT-x和AMD的AMD-V这两种技术。其核心思想都是通过引入新的指令和运行模式,使VMM和Guest OS分别运行在不同模式(ROOT模式和非ROOT模式) 下,且Guest OS运行在Ring0下。通常情况下,Guest OS的核心指令可以直接下达到计 算机系统硬件执行,而不需要经过VMM。当Guest OS执行到特殊指令的时候,系统会 切换到VMM,让VMM来处理特殊指令。如图3-8所示。



内存虚拟化

内存全虚拟化技术

通过使用影子页表(Shadow Page Table)实现虚拟化。VMM为每个Guest都维护一个影子页表,影子页表维护虚拟地址(VA)到机器地址(MA)的映射关系。而Guest页表 维护VA到客户机物理地址(GPA)的映射关系。当VMM捕获到Guest页表的修改后, VMM会查找负责GPA到MA映射的P2M页表或者哈希函数,找到与该GPA对应的MA, 再将MA填充到真正在硬件上起作用的影子页表,从而形成VA到MA的映射关系。而Guest的页表则无需变动。如图3-9所示。


内存半虚拟化技术

通过使用页表写入法实现虚拟化。Guest OS在创建一个新的页表时,会向VMM注册该页表。之后在Guest运行的时候,VMM将不断地管理和维护这个表,使Guest上面的程序能直接访问到合适的地址。

内存硬件辅助虚拟化技术

通过扩展页表EPT(Extended Page Table)实现虚拟化。EPT通过使用硬件技术,使其能在原有的页表的基础上,增加一个EPT页表,用于记录GPA到MA的映射关系。VMM预先把EPT页表设置到CPU中。Guest修改Guest页表,无需VMM干预。地址转换时,CPU 自动查找两张页表完成Guest虚拟地址到机器地址的转换,从而降低整个内存虚拟化所 需的开销。如图3-10



I/O 虚拟化

I/O全虚拟化技术

通过VMM模拟I/O设备(磁盘和网卡等)实现虚拟化。Guest OS所能看到就是一组统一的I/O设备。VMM截获Guest OS对I/O设备的访问请求,然后通过软件模拟真实的硬件。这种方式对Guest而言非常透明,无需考虑底层硬件的情况。

I/O半虚拟化技术

通过前端(Front-End)/后端(Back-End)模拟实现虚拟化。Guest OS中的驱动程序为前端,VMM提供的与Guest通信的驱动程序为后端。前端驱动将Guest OS的请求通过与VMM间的特殊通信机制发送给VMM的后端驱动,后端驱动在处理完请求后再发送给物理驱动。

I/O硬件辅助虚拟化技术

主要有Intel的VT-d、AMD的IOMMU和PCI-SIG的IOV这三种技术。前两种技术属于直接I/O技术,物理设备可以直接分配给虚拟机使用(而不需经过VMM),通过硬件芯片完成GPA到MA的翻译。IOV技术在其基础上,在硬件设备中增加了一个PCIe设备,用于呈现一个物理功能(PF)和多个虚拟功能(VF),从而使每个虚拟功能可单独分配给 不同的客户机使用。
...全文
1777 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
muzilan 2016-05-12
  • 打赏
  • 举报
回复
引用 8 楼 qq_32131221 的回复:
引用 10 楼 zhao4zhong1 的回复:
O(∩_∩)O谢谢支持啊
muzilan 2016-05-12
  • 打赏
  • 举报
回复
引用 3 楼 line_us 的回复:
这个弄成了就真是太好了。
引用 6 楼 aierda 的回复:
这个弄成了就真是太好了。
O(∩_∩)O哈哈~,弄成虚拟化吗?弄成了,你可以使它更好哦
muzilan 2016-05-12
  • 打赏
  • 举报
回复
引用 1 楼 aierda 的回复:
好高深的东东啊,看不明白
没事儿,多了解之后就懂了
引用 13 楼 lucky__lin 的回复:
学习学习啦
引用 11 楼 zjtz79 的回复:
学习ing。。。
引用 9 楼 cattpon 的回复:
重新过来学习下~
引用 8 楼 qq_32131221 的回复:
互相学习哈,虚拟化技术这块还是很实用的,现在应用也很广,像比较新的docker发展也很快
赵4老师 2016-04-18
  • 打赏
  • 举报
回复
lucky__lin 2016-04-18
  • 打赏
  • 举报
回复
学习学习啦
cattpon 2016-04-18
  • 打赏
  • 举报
回复
重新过来学习下~
qq_1021540607 2016-04-18
  • 打赏
  • 举报
回复
qq_30859481 2016-04-18
  • 打赏
  • 举报
回复
。。。。。。。。。。
zjtz79 2016-04-18
  • 打赏
  • 举报
回复
学习ing。。。
cattpon 2016-04-17
  • 打赏
  • 举报
回复
感谢专题分享~
aierda 2016-04-17
  • 打赏
  • 举报
回复
这个弄成了就真是太好了。
nettman 2016-04-17
  • 打赏
  • 举报
回复
进来学习下
line_us 2016-04-16
  • 打赏
  • 举报
回复
这个弄成了就真是太好了。
aierda 2016-04-16
  • 打赏
  • 举报
回复
好高深的东东啊,看不明白

448

社区成员

发帖
与我相关
我的任务
社区描述
云计算开发
社区管理员
  • 云计算
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧