设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 RedHat 查看内容

张浙:红帽企业虚拟化方案及其实战

2009-1-20 12:27| 发布者: joejoe0332| 查看: 4914| 评论: 0


  下面我们讨论一下全虚拟化和半虚拟化。所谓全虚拟化一个操作系统是运行在软件环境下的。我们看到完全虚拟化有一些特点,比如说兼容性好,我拿过来就可以用。这里面引出一个半虚拟化的技术,X86平台实际上不是非常适合做虚拟化,因为他有一些特定的使用一定要运行在特定的级别上面。

  有一些指令一定要用在特定的级别上面,如果你在X86上面再靠一个操作系统的话,这样就会造成一定的冲突,真实的效果是X86平台CPU会忽略一些东西,他们在当时实现完全虚拟化的时候是在虚拟平台上面做一个监听的机制,如果发现从用户派来特权的请求,他就创建另外一个通道,把它翻译成另外一种方式解决。

  实际上它实现了在X86不支持虚拟化的这种情况下,它实现了完全虚拟化,但是这种实现方式的开销就是,这样软件的性能会有大幅的降低,根据现在的数据是 17%到20%的样子,基于这个情形,有人就开始想出了半虚拟化的解决方案,他通过修改操作系统的内核,把一些特权级别的请求翻译成为刚才我们看到那个虚拟化平台的那个图了吧,把一些特权的请求发送给AMM,然后由它转化为真正要处理器处理的指令,那么半虚拟化的优点主要就是由于没有它没有VMR执行的监听机制,性能会有很大的提高。

  由于它把一些请求直接发给,然后由它去和底层的硬件去交流,这样会有很好的性能表现,因为刚才我们讲到X86平台它不适合虚拟化,因为有一些特权指令的操作,另外还有一个,由于你要实现完全虚拟化,那么有一些设备,例如如IO设备还有网卡设备,你也是不能够改的,OX也是不知道底下网卡运行的是真的是假的,那么完全虚拟化怎么做,它用软件模拟出一些快设备,或者是网络的设备,实际上这种模拟开销是非常大的,那么半虚拟化没有模拟的过程,这样也会大幅度增加程序的运行效率,我们大家知道就好了。

  最后总结一下,半虚拟化需要修改操作系统,需要操作系统的支持,那么完全虚拟化不需要修改操作系统,无法感知它到底运行在硬件还是软件上,相带来的问题就是半虚拟化需要改一些东西,有一些系统无法做到,那么全虚拟化相对带来的问题就是由于模拟化所导致的性能的开销,那么实际上在06年的时候,基于虚拟化需求的现状,我们X86的两个厂家,一个叫英特尔一个叫AMD他们在硬件方面实现了硬件虚拟化的技术,解决了之前我们说的第一个问题,那么它通过在硬件上面实现了对这种特权级别的指令级的捕捉,然后从硬件角度转换到另外处理的方式上面去,我们简单理解解决这样的,因为这个话题说起来挺大,我也不知道该怎么说好一些。

  现在我们知道,很多最新的完全虚拟化的解决方案都是基于在X86平台上基于英特尔和AMD的硬件虚拟化技术,所以我们看到第二条写了,需要处理器具有硬件虚拟化支持,实际上这个是不需要的。我们就不多说了,我们可以看到,还是刚才那个情景,最下面是硬件,上面是VMM,所有的虚拟机跑在上面,其中有一个比较特殊的虚拟机,这个里面我们看到叫DOM0,它是第一个加载的虚拟机,那么它起的作用是什么,它所起的作用就是硬件驱动程序的支持,因为我们平台上面与底层硬件打交道的话,还是需要有完整的操作系统来做,那么它只是做一些调度和分配,还有一些事件传输的工作。

  那么我们来开始一下我们的虚拟化实战,首先软件平台就是红帽企业版,这是我的软件平台,现在最近的软件版本是968,原计划在这个上面做,后来想到其是应该拿企业环境做一下,那么特殊的硬件要求需要带有偏移物理硬件扩展的英特尔或AMD的处理器,通常来讲都是奔腾4以上的处理器,那么如果你要想跑完全虚拟化的XOS,那么就需要处理器有硬件的虚拟化支持。

  我们看一下我们如何验证我们的主机处理器是否支持虚拟化,是否支持硬件虚拟化,我们看到找到PAE的标记还有VMX的标记,在座的肯定有很多高手,我就不多说怎么取到这个命令了。在鸿毛企业中我们提供了一个叫mananger的工具里管理我们的虚拟机,我们有一个简洁的画面,由它来能够处理虚拟机的一些基本操作,比如说创建虚拟机,删除虚拟机,比如说让它挂起,还有保存状态等等的信息。

  下面这个就是创建虚拟机的过程,待会我会给大家演示一下,我给大家演示一下,实际上这个画面是蛮简洁的,我们可以找到有一个叫做虚拟机管理器的这么一个程序,然后我们选择可以连到hypervisor,那么为什么这里要选一下呢,之后我们再来说,我们可以看到这里面有我已经创建好的很多的虚拟机,那么我现在给大家演示我创建一个,这里面由于我要装的是本土的操作系统,它应该是完全虚拟化的安装,半虚拟化由于需要更改OX,所以你必须有支持半虚拟化的操作系统才可以,那么实际上在鸿毛平台鸿毛自己本身就是支持半虚拟化的,然后下一步是我选择完全虚拟化,下一步我找一个安装的光盘,选择操作系统类型,这里面是选择磁盘的存储空间,实际上存储空间是分三类的,一种可以把它放在一个单独的盘上,你也可以把它放在逻辑间上面,另外还可以制定成单独的文件,我们根据客户的反馈来讲,我们建议客户放在逻辑间上面,因为它可以使用这上面的一些功能,比如动态,还有景象,包括快兆的功能,我们在某个状态上打个快兆,然后我们做个下一个东西,实际上你可以用这个快兆功能实现你所需要的要求,实际上它只是用它的方法类似的实现的一种方式。

  我们选择一个单独的软件,这里面是选择网络,LAN的网络环境比较复杂,它有两种类型的环境可以选择,稍候我们来介绍一下,一种叫共享的物理设备,它实际上可以把它想象成条接在了操作系统的 ETH0网卡上面, 也就是说这里面提到一个XEN B20这么一个设备,这个是由XEN创建的,我们把它理解成交换机,这台交换机把底层操作系统的ETH0接进去,那么你的虚拟机跟它接在一起,你可以通过物理的ETH0出去,如果你有多个网卡的话,你可以看到PHPET多种交换机,你可以自由的选择哪条路,另外还有一个虚拟网卡,这个我们稍候讲一下。

  这里我们随便选一个,这里面有一个画面就是分配内存和 CPU,这里面有两个选项,一个是启动CPU和最大CPU,实际上作为半虚拟操作系统,它支持动态调整内存容量的功能,如果我的guest OS突然发现有可能内存使用非常大,我当前给它分配的内存不足,我可以动态把它的内存放大,当然反之也一样,如果另外一台虚拟机需要的内存非常大,这台的虚拟机内存都空闲着,我可以把它收缩回来,这里面两个内存,一个是最大内存,就是这台虚拟机最多可以分配多少,另一个是启动内存,就是启动的时候用多少。

  下面一条是选CPU,CPU的数量计算能力是由提供的,实际上它是一个虚拟的CPU,它也可以选择超过物理CPU的数量,当然如果你是双核处理器,你选择6颗、8颗、10颗,可能会由于调度上的开销反而降低你的性能,那么在这里面CPU还可以提一下,我可以制定某一台虚拟机使用我这个操作系统上的某一个空,这里面我们提到的空是逻辑的空,CPU如果在半虚拟化的平台上面,CPU的数量也是可以动态调整的,我们待会可以演示一下,我们可以看到我这个CPU 从10颗降到1颗然后再调上去,这样可以合理的分配你的计算资源。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部