主题 : 张浙:红帽企业虚拟化方案及其实战
取我所需的坦荡,即使病入膏肓
级别: 五分秋意
UID: 76075
精华: 0
发帖: 1382
威望: 4765 点
无痕币: 4174 WHB
贡献值: 2 点
在线时间: 148(时)
注册时间: 2009-01-01
最后登录: 2018-01-24

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

主持人:由于时间的原因我们提问就进行到这里,下面我们有请红帽公司的技术工程师张浙,他是刚从西安赶过来的,大家欢迎。

  张浙:感谢大家来参加今天这个会议,但大家还要等一下,因为这个环境还要布置一下,我准备了一个高集成的环境。我叫张哲,来自红帽中国,我们部门主要的工作就是支持整个香港、台湾以及中国大陆地区虚拟工作。我首先请问在座的各位,在你们的工作、学习、生活中使用红帽的,请举手。有哪位正在使用红帽虚拟化解决方案的请举手。您能描述一下的您那边的环境吗?

  听众:我们主要是做XEN。

  张浙:主要是做什么的?

  听众:主要是做虚拟的。

  张浙:我关注了一下今天的话题,主要是VMware公司和微软公司的产品为主,我们今天也想告诉大家由开源社区提供的虚拟化的解决方案。我可以告诉大家,所有虚拟化软件可以做到的事情我们开源都是可以做到的,下面我给大家分步介绍一下。

  今天的话题分四个部分,第一部分是简单介绍虚拟化技术,从我们技术员角度理解虚拟化技术和红帽的虚拟化。第二个是如何创建虚拟机,某种虚拟化的情形有什么特殊的功能,我们在这里给大家演示一下,我们能不能做到之后会给大家演示。第三是高可用集群在企业的应用,很多人有一个顾虑,如果我们虚拟平台崩溃怎么办,在同样的虚拟化方案中如何解决呢,之后关于虚拟化使用时的故障排出。第四是基于这个平台,企业开源虚拟化的未来。

  原计划我们是基于这个平台来做的,因为在座各位都是来自与企业。先明确一下这个概念,首先它是社区版本的虚拟机,这是没有错的,但很多人认为它是一个桌面版本,但这是错的,这是红帽支持的一个社区,这个版本里面包含的是开源最新的技术,但它不适合一个成熟的企业应用,所以我们可以把它当成一个企业的试验场,它不完全是一个企业版本的桌面版本。

  里面带有专利是需要付费的,比如说MP3的解码器是需要付费的,我经常在论坛上说这个字体太难看了,但这个字体也是需要花钱的,如果你是一个企业的话,这个费用还可以,但实际上这个费用对一个社区来讲是比较困难的。

  首先谈什么是虚拟技术,我看到过一些书,上面讲到,虚拟化技术就是在一个固定的物理硬件平台上运行多个独立的操作系统,这个系统是有限制的,它必须是自己同一个架构,比如说我在X86架构下面运行的系统也必须是X86架构。可能我们有一些在校读研究生的同学会知道,有一个软件叫做KMU,它可以在X86软件中模拟出一些特性,实际上从技术角度来讲这是模拟化,在X86平台上运行多个X86主机,过过虚拟机共享低层硬件,同一种解决方案对上等的虚拟机来讲是一样的,基于这条特性才可以实现动态兼移的技术。

  客户运行在主机的VMM上面,我们看一下VMM是虚拟机的监控器,这就是一个虚拟化的架构图,传统的操作系统概念就是运行在硬件上面,为应用程序提供应用接口,它去惯例和分配硬件的资源。有很多高端的虚拟化平台并不是用完全类似的方法来解决的,无论是VMware、还是微软,他们都是基于这种架构来做,在硬件上面做一个转化层,之后把虚拟机运行在这个 VMM上,这是剑桥大学开发的一个项目,很早以前就在开发,之后V公司接收维护,之后重改了所有的代码。最后由于很火爆,就被业内的老大收购了。

  3.0是07年发布的,之后就支持完全的虚拟化的技术。一会和大家讨论什么是半虚拟化什么是完全虚拟化,2005年在红帽这个是企业M5里面集成了虚拟化的技术,这里面(one音)实际上是一个开源项目,就像Mysql和Apache一样,它是一个开源项目,它并不是属于某一个公司,所以任何企业都可以把这个版本加进去。实际上在2006年后期的时候,有多公司都选择它作为自己的虚拟化解决方案,所以这里我们讲的是一个社区的开源项目,而不是一个公司的产品,我在这里讲到的是一个开源项目。

  下面我们讨论一下全虚拟化和半虚拟化。所谓全虚拟化一个操作系统是运行在软件环境下的。我们看到完全虚拟化有一些特点,比如说兼容性好,我拿过来就可以用。这里面引出一个半虚拟化的技术,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颗然后再调上去,这样可以合理的分配你的计算资源。

  刚才就是一个简单的安装过程,实际上没有大家想象的那么复杂,有一个优点可能很多人认为是缺点,我们可以通过命令的方式来创建虚拟机,我们这边有叫VIRSHF的命令,它可以通过交互式的方式去问,比如第一步是完全虚拟化其是半虚拟化,你的主机名是什么,你分配多大内存,你存储在哪,多大怎么安装等等,它都可以通过命令的方式来输入。

  VIRSHF这个命令也支持非交互式的方式,我可以通过命令参数的方式直接把所有安装的参数直接送给程序,这样它直接就创建了,这样我给大家演示一下,我一条命令已经创建好了一个虚拟机,它的名字叫什么,是半虚拟化还是全虚拟化,它有多大内存,有多少个CPU,从哪安装,刚才安装过程我忽略了一点,就是说半虚拟化的安装实际上是有一些特殊的情况的,由于半虚拟化我刚才说了,需要更改操作系统的内核来配合工作,那么半虚拟化就不是一个完整的操作系统,因为它是一个不完整的操作系统,那么它的安装方式不能够选择传统安装操作系统一样,比如说我们可以通过光盘安装等等,它不支持,它支持的方式是通过HTPT和NFS的方式来安装,实际上我刚才给大家演示了这些从字符上面创建虚拟机的命令,实际上都是半虚拟化的安装方式。

  这个图就是我们刚才讲的那个xen的网络环境,我给大家再简单讲一下在操作系统启动的时候,我这台物理层面的操作系统启动的时候,xen做一些事情,创建一个叫做xenB20的设备,把第一台启动的主机控制硬件的管理虚拟机的这台主机,把它一些使用插上去,那么我们刚才在创建虚拟机的时候,我们可以选择桥街到这个设备上去,相当于把它们全都连接在一起了,而原来第一台启动的物理设备被改名为PDEH0,我们只要桥街到xenB20上面,你就可以ETH0接到局域网里面去。

  刚才我们创建完了的时候,我们还看到了有一个叫虚拟网络的选项,它实际上是由创建的一个虚拟网卡,它可以实现NAT的功能,实际上大家用的虚拟机很多,大家看图就明白了,实际上我们可以创建一个新的虚拟网卡,并且可以选择DHCP的范围,还有它是否是NAT连接到某一个物理网卡上面去。

  刚才我们演示了创建一些虚拟机的过程,我们虚拟机创建好了再了解一下管理平台,XEN相关的服务有三个,一个叫XENB,这是管理服务,我们把这三个服务打开就好了,这里面提到了一个叫做(荔波我的)的东西,这个要跟大家讲一下,这个是由鸿毛开发的为开发人员提供标准的平台,并且提供了一个叫VRS的工具,也是客户机和虚拟化之间的管理工具,我们可以看一下架构,我们之前XEN的架构是这样的,不同的应用可能会和底层不同的模块打交道,我们可以看到,不同的模块和不同的接口打交道,这样比较复杂,那么有了这个以后,我们在中间加上一个层,就像虚拟化一样,所有的应用程序都只对来进行操作,那么底层是由空来实现和底层的交互,那么和用户空间是没有关系的,这样开发人员不需要去了解更多的不同的底层虚拟化技术的细节差异。

  因为我们要实现的功能都是一样的,只是实现的方式不一样,这里面我们看到的是XEN,实际上底层还可以是,我们之前提到的KBM,也就是内核级别的虚拟化技术,也有可能是QEMO 的一个模拟化的一个技术,总之,它是一个虚拟化上面的一个标准,那么现在平台上面,都已经默认了这个服务,并且在使用基于它的一些应用程序,比如刚才看到的VIIT Mananger,那么现在我给大家演示一下虚拟化的功能,刚才我们提到的,比如说动态分配内存,动态分配CPU,给大家演示一下,我觉得这是蛮好玩的一件事。

  我们在多讲一下,因为半虚拟化我可能没有说的太清楚,因为我们开头讲到的由于特殊的指令只能运行在特权模式下应用,那么半虚拟化的解决方案是修改了操作系统内核,修改了GUEST OS的内核,它不是工作在硬件平台上,而是工作在上面了,所以这样会提高很多性能,并且提高一些特殊的功能。

  我们现在启动一台鸿毛企业的主机,我们可以看一下,我默认设置了这台机器,我刚才提到有一个叫VIRSH的工具,它是基于的调试虚拟机的接口,这个命令也是有两种用法,第一个支持非交互式的,比如说我们看到动态的没了,改成一颗的时候明显了,迅速的没了,我现在来设一下内存,现在是256兆内存,我这台虚拟机给它设置的最大内存是 512兆,我们可以看到这里面反映的结果它迅速变成512兆了,这样可以让你非常轻松的对你计算资源和硬件资源进行动态合理的分配,那么我做一个实验,有谁知道会出现什么情景,我们不演示这些东西了,我把这台虚拟机关掉,当然它还有其他的一些功能,比如说暂停,我迅速把它暂停,就不再动了,当然也可以保存状态,我回到另外一台虚拟机上面再把状态恢复出来,由于时间关系,这块不给大家演示太多了,很多有很好玩的东西。

  下面我给大家介绍一个企业应用性虚拟化的一个实例,刚才有一个网友问到,高可用集群的问题,就是存储管理的情况,实际上企业用到高可用是很多的,有一些应用需要7乘24乘 365的工作,如果说出现状况的话,我们可能需要通过软件层面,通过其他的方式来修复这个状况,而且保证我们应用继续运行,那么这是一个传统的平台,我们看到上面有5个白色的,这是5个结点,5个虚拟机,这些结点可以做到两件事情,第一个是要保证它的应用在这个结点上面是活着的,可能有4个应用,可能有6 个应用,不管多少个如果说一个结点坏的时候,一个应用应该在另外一个结点上继续工作。

  这边我做了一个环境,如果我们回到虚拟化里面,作为虚拟化平台来讲,它自己就是一些结点,那么它上面跑的虚拟机就可以是作为资源,如果说一台虚拟机宕掉了,那么我们可以在另外一个结点上面动态的把这台虚拟机启动起来,基于这种模式,我们把虚拟机的数据放在共享存储上面,包括数据文件等等,如果任何一个结点出现了状况的话,那么另外一个结点可以启动这个虚拟机,而保证你的应用不间断的运行。

  那么我们现在再网上看一个层面,你的虚拟机也可以做到这一点,我的虚拟机可以跑一些应用,如果虚拟机宕掉了,虚拟机的平台集群也可以感受到这个错误,并且把这个应用迁到另外一台虚拟机上去,我给大家演示一下,就是基于这么一个过程,虚拟平台高可用,虚拟平台上面跑的虚拟机也是高可用的,大家看一下,可能时间不是很多了,我就不给大家演示这个了,这个东西我认为是一个企业的基本模型。

  那么下面讲故障排除,实际上在虚拟化平台上面,在座不管有无经验的人都应该知道,我们首先要看日志,那么这里面就列出了和XEN相关的一些日志,如果说虚拟机的平台不是软件上的爆破信息,比如说应用不懂的话,你可能碰到这台主机已经宕掉了,或者主机没有相应的情况,那么收集的信息也是很重要的,实际上红麻或者是Unix事件推荐你把这个平台上虚拟机的管理环境,做到最小,甚至我是一个没有脑袋的机器,我只需要通过和远程连接就好了,这样可以做到安全最大化和性能最大化。

  下面就是一些修改的配法了,我们就不演示了,还有操作系统层面上,解决操作系统崩溃或者死机通用的方法就是收集我把操作系统死机当时的状态中断,我们把它收集下来留给操作系统专家来分析,那么如果我的虚拟化平台不管是虚拟机还是平台硬件主机出现状况,我们多会通过不同的方式来把信息收到,这个是一些做法。

  其他的就是汇总,第一个是安全问题,就是我的虚拟平台上面什么应用都不跑,只做驱动程序和管理界面,具体就不多说了,实际上这是很多的一个话题。

  那么下面改变内存收缩的问题,这个也不多说了,这个讲起来就慢了,第三个就是网络问题,都可以通过相应的工具做到,最后我们介绍一下在平台上面的一些企业开源系统化的简介,我刚才讲的技术最前沿的一个展示的平台,那么在世界里面虚拟化最热门的名词就是KVM,它是一个Kernel级别的虚拟化解决方案,那么它的特点就是有更好的性能表现,并且由于它是集中在Kernel里面的,这样可以被其他的发现集成进去,现在这个KVM心目由鸿毛主导做这个事情,它实际上是把VMM放到了的里面,这样可以看到一个好处,我们可以把定制到很小很小,我们基于KVM可以把虚拟化平台定制的很小很小,放在一个闪存里面,甚至放在网络上面,这样我的虚拟化是最安全最高效的。

  最后一个项目就是Oworld这个也是一个开源的虚拟化管理工具,因为我们刚才看到有人觉得可能太简陋了,习惯于微软平台更漂亮的界面,那么实际上它也正在实现这个目标,也可以做到很小,实现一个开源虚拟机的管理平台,目标是可以管理上千台的虚拟机,还有集群,还有它的管理能力,这块我们就不具体说了,总之是一个很小的东西,虚拟化由KVM实现,实现管理的功能。

  最后给大家看一张图,就是我们截的一些图,这个是主机的一个管理的工具,存储的还有硬件资源的,还有一些负载的统计信息等等,最后这个是用户管理的界面,如果大家有兴趣的话,建议大家到社区来更多的了解一下开源的虚拟化的解决方案,谢谢大家!

  主持人:刚才是一位网友一直在潜水,他平时发言不多,但是他经常去看大家的一些帖子,我知道他准备了很长时间,因为我们在一个月之前就开始沟通了,我估计他讲两个小时也能讲,但是确实今天时间太紧,后面还有四个,大家有什么问题的话可以提两个问题。

  问1:我们在实际应用中,现在用的戴尔,现在跑8到10台业务机,但是因为某种原因我们有时候会重启,但是脚本可以以启动,经常会出现物理级的问题。

  答:这个就是刚才讲的收缩的问题,这个是由于XEN的机制导致的。

  问2:我想问一下当你说KVM是由在做,并且是下一代的虚拟机,那么会放弃XEN而去开发这个吗,还有就是对XEN的支持有哪些?

  答:第一个问题是商业问题,我回答不了你,第二个问题,实际上所有的开源项目都在用,我们要基于开源的观念来看这件事情,剩下的都是商业的事情,这个就不是由我们来决定的,我觉得我们可以私下交流这个事情,我们就不占用大家的时间了,谢谢大家!
Total 0.255537(s) query 3, Time now is:05-02 19:17, Gzip enabled 粤ICP备07514325号-1
Powered by PHPWind v7.3.2 Certificate Code © 2003-13 秋无痕论坛