今天我要讲的是Linux上和Virtualization有关的问题。我们去年开始做 KVM的,我们也在2004年之前自己做了一些这方面的事情。今天我先从一些最基本的概念开始,然后我想试着从开始到后面,慢慢的一步一步往下进入到 Virtualization世界里面。
我想讲到Virtualization的话,大家一定会问什么是Virtualization。今天操作系统上碰到的种种问题都可以 通过Virtualization解决。我想大家一定要先了解EMM,它可以把一个单一的物理的机器做成多个虚拟的机器,每一个虚拟的机器上都运行一个系 统。
通过这帧图大家可以有一个比较感性的认识到底是什么是Virtualization,这个图左面是没有虚拟化软件支持情况下 的计算机,这看起来像一个什么样的呢,计算机一定会有内存,硬盘,网卡,显示器等等,那么在这上面运行的是一个操作系统。右边这个图大家看到这里面有一个 黄色的一层,通过它可以把下面的物理的变成一个多个。这里面的东西也都在。
这个图基本上和上一张是一样的,那么Virtualization关键点就是Virtualization的Morniter,我们把它分成三类。这样的话High本身很小,如果一个机器死机的话,很多原因是因为这个引起的,所以这是一个最大的引起死机的原因。
我们看一下Virtualization,今天这个LinuxVirtualization,上午有人讲过,我们有三个,一个是KVM,一个 XEN,KVN最早的是XEN,XEN在2002年就出现了。这基本上来说的话,像Windows很难实现,因为不能改Windows。大概在2004年 底到2005年初的时候,我们进入进来把XEN扩展了,来支持技术的完全虚拟化。这样没有修改操作系统,就可以运行在XEN环境下,Windows就没有 问题了。
KVM是比较新生的事物,它在2005年底出现的。KVN如果按照我们刚刚那个分类方式的话,每一个Gass是运行在这个进程里面的,每一个CPU会运行在HOST里面。
每个社区的爱好者可以自己实践一下,看看到底Virtualization有多么好,或者有多少魅力。最早只有5000到10000行。现在可能会多一 点,但是它出来最大的一个目的,就是做一个所谓的测试,所以说我们今天说到这个在Linux领域里面一定不能不提一下,这里面有一个故事是说,XEN是最 早的,大概是在2005年的时候,已经掀起很大的反响,但是在2006年也加入进来了,不同的人做同样一件事情一定会做得不一样,那何况是两家独立的公 司,那都不一样的话,每个人都要改,你这样改他那样改,今天只有两个公司,那再过两天的话会有其他的公司,所以说每一个都要改的话,又改得都不一样,那肯 定会乱了,当然这世界上也不会发生这样的事情,否则的话就没有办法维护了,所以当时就有一个讨论,要提到他们的一个叫VMI,希望把这标准化下来。最后提 供一个相当于最基本的一个方式。这样的话可以把所谓相关的一部分分割开来,使得未来的,今天的不同的都能够利用这个架构实现。所以今天这个大概只是在32 位的X86有,但是社区想把它扩展到64位。
现在我们看一下KVN的架构。KVN是运行在一个Host的进程里面的,所以对于Kvn 一定要在Host的OS上有一个进程,这个图我画了两个VM,这个Host进程一和Host进程二,这先出来的是host的一个进程,那么它先调用 ABN,这是一个进程标准,这基本上是一个两个进程的标准,因为它要保持后项兼容。这两个会把处理器的处理权放到VM,进入VM状态,这个VM状态和 Host状态有什么不同呢,这个应用了处理器的硬件功能,叫Gessmode和Hostmode,那么处理器进入之后会显示出一个Gess状态。所以在一 个客户机运行以后呢,这时候客户机要操作一些操作,或者说发生了一个外部中断,这个时候处理器会从Gess模式推出,在KVmode里面,这时候会对中断 进行响应,有时候会要求在Host里面进行帮助。这是一个KVM的模式。它基本上可以用种种其他的类似的东西,都能够比较方便的支持。
那另一个主要的Linux,我觉得就是XEN,今天它可能已经独立发展了,因为它没有和Linux同步。它用完了就继续维持,它只是很小,它只是用了其 中的一块,如果从软件的角度来讲可能有几十万,但是硬件的角度很小,它早年的话只是占用了40兆的空间,现在可能多一点,也可能是60兆。
在这个家族里面最右边的是DOM 0,还有一个对设备进行方针的,还有一些支持。这个HVM的话是完全没有修改过的,可以用Guest等等。
接下来我想介绍一下大概在2007年的时候,在LinuxVirtualization里面发生的主要的事情,我没有列所有的,我主要的列了一下大的事 件。这个PPT上都有。一个大的原则是说,作为一个Guest来说,它产生的操作都是Virtual,这都是Guest自己的东西,那么它什么时候变成自 己的东西呢,它根据一定的管理软件,根据一些要求,这里我们举一个例子,在这个图上可以看到很关键的一个有叫做OSPM,今天在Server这个环境下 面,我们还是进行系统的管理。那么这是给其他VM的设备,但是这个还不够,很多设备在DOM0里面,所以第二步就是对这些设备做同样的事情,这个过程是完 全相似的,基本上原理也很一致,也就是说把所有的物理设备都进行S3状态。
OSPM在这里是Step3,对这些设备要进入S3操作,回到OSPM之后,它会发出命令,命令它进入S3状态,然后再通知所有的东西多准备好了,你可以“睡觉”了,这样它会发出命令真正的进入“睡觉”,这是一个“睡觉”的过程,那恢复的过程也是一致的。
还有一个事情是在去年发生的,从今年开始Linux一定会发展得很好,去年我们还是作为一个探索者,还在前面做了一些开张性的事情,这个 Virtualization是嵌入式的,主要是给中小企业提供一个管理的目录,所以这个系统里面有一个ServerOS,是运行在后台的服务,它会提供 网络包的一个过滤功能,当然你也可以把它变成一个引擎,或者是其他的东西都可以。
这个图是一个大体的架构,在这个图上我们把它放 在一起,是从Relis角度来讲,它是有提供的。US通常的话它还是一个系统,那么这是从微软买来的,从三个公司买的东西装在一起,这个US拥有所有的硬 件设备,这个图上我们只写了一个USB等等,实际上这后面的就把所有的东西包括在里面了,但是只有一个例外就是网卡,网卡让ServerUS拥有的,所以 不光是被恶意的人登陆了还是怎么样,都不可能改变这个网络的安全,你都不可能By pass,所以它还是提供网络过滤的功能。
这 个图是主要的应用模式,在DOM0里面是不应该有这个设备的,但是这个是TPM,这个是一个很重要的模块,这原因是说今天的US如果跑这个的是要有TPM 的,如果没有TPM的话,某些功能就没有了。所以物理的TPM,因为我们要提供这样一个平台,物理的TPM就必须要提供Server。在整个的系统里面有 三个,这都有很大的不同,最大的不同,这个US是主流的,也就是整个系统有百分之百资源的话,95%是在US里面,这个DOM0实际上很小,大概只有40 兆到60兆左右,其他的也很小,这两个加起来的话,我们希望把所有的事情解决掉,但现在要超一点,这取决于最后用户到底怎么配制,基本上DOM0非常的 小,它对系统的占用资源非常小,它占了一个网卡其他的什么都不占,从性能角度来讲,US得到的性能也很好。这是Virtualization的一个应用。
我还想提一下的是去年我们做了一个关于KVN性能的事情。大概去年5月份的时候,4月5月的样子,我们看一下这个,当时这个还很差的,大概只占1/3左 右,大家一定要努力把这个提高起来,至少KVN有相似的效果,我们分析最后知道原来KVN里面有太多的,我们就做了相应的东西,我们自己开始在那个时候一 道做这个事情,基本上通过我们种种的努力之后,我们可以看到这是一个历史的图,差不多发生在4,5月份的时候,差不多这个性能从原来的1/3的时候,恢复 到了70%到80%之间,当然中间会出现一些错误掉线了。
现在还有很多工作要做,包括一些TPN的工作,甚至包括一些其他的工作最近 也在陆续的做。XEN相对来讲稳定一些,因为它产生的时间比较早,它基本上大多数的可以达到90%左右,当然也还是有很多的需要改进的地方,大家整个社区 包括英特尔也在看,怎么样可以做得好上加好。
提问者:XEN和KVN开发是比较活跃的,我想问一下从英特尔的角度对这个技术有没有偏重,您认为这些技术的前途或者方向哪个会胜出,或者有什么预测没有?
董耀祖:他的问题从英特尔角度来说XEN和KVN有什么不同的策略,我不适合回答这个问题,因为这个问题比较复杂,但是从我们Team角度来讲的话,这 两个事情我们都在开发,我们希望好上加好,我们希望KVN更好,作为某一样新技术出来的时候,这两个都需要做,但是具体在哪个上面先做的话,这可能取决于 种种因素,也不可能有什么绝对的标准,举例来说,XEN启动比较早,我们可能先做这,那么KVN好的话,我们先做这个,这根据具体的需求来定。
提问者:我想问一下在IO虚拟化方面你们有没有做工作?
董耀祖:现在还没有加上,KVN有计划加IO,不过我暂时不清楚到底什么时候会加这个东西,应该是今年会做的,但我不确定。
提问者:请问一下你们怎么看待你们正在进行的这两个技术和VOMI的关系,这虚拟机之间也不兼容,标准化方面有没有什么进展?
董耀祖:对于英特尔来说我们都在支持,我这个部门是OTC,这个VOMI也是在OTC部门里面的。VOMI相对成熟一点,它需要什么帮助的话,我们也会及时的加入进去。
这个标准化的问题我回答不了,有很多标准化,但是直接对我们的影响还没有产生出来。这个问题我可能还不适合回答。谢谢大家。