http://bbs.doit.com.cn/thread-50438-1-1.html

虚拟鸡和虚拟鸭

好久不写正经的技术介绍了,以至于最近朋友见了都问“换行之后感觉如何?”
“我K~谁…谁…谁…谁说我换行啦?我还在做皮匠这份很有前途的职业哩!”
好吧,为了不让人误会,我还是介绍点咚咚吧。可介绍点啥哩?
有了!让我来隆重介绍两个概念:SAN和NAS……别吐,别吐,我不说了还不行吗!救护车~~~

唉,也是, 存储技术里也没啥有意思的新咚咚了。FCoE?这东西只能让我联想起周星星同学发明的“太阳能手电筒”——只有在有光的地方才能亮,在没有光的地方,坚决不亮。

想来想去, EMC收购 VMware之后,好多存储人开始注意虚拟主机技术,咱们就说说这虚拟技术吧。不过事先声明,这方面我也不懂,我姑且一说,您姑且一听,如假不换,管杀不管埋……前排的同学注意了,不要再乱扔西红柿了,不然我要讲回SAN和NAS喽!

说起虚拟技术呢,首先当然要提这一领域的四大天王,他们是:VMware、XEN、MS Virtual Server、Virtuozzo和OpenVZ。
(哄噢~有人不识数喔~)
听我慢慢说啦!OpenVZ是用Virtuozzo全套源码的一个 开源项目,所以技术上说,Virtuozzo和OpenVZ是一家,就像CentOS和Red Hat的关系一样。当然CentOS和Red Hat实在太相像了,而Virtuozzo和OpenVZ还是稍微有点区别的。比如Virtuozzo能支持 Windows,而OpenVZ就不行;Virtuozzo有很多图形节目的管理工具,OpenVZ目前还只能用命令行。

叙述的有点乱,还是逐个介绍一下四大天王先。

首屈一指的当属VMware公司。这个公司在虚拟主机方面的产品贼丰富,技术也贼成熟,顺其自然的,其看家护院的产品——ESX Server——卖的也就贼贵贼贵的。

这个ESX Server是直接安装在裸机上的,不需要安装任何操作系统,或者说,ESX自己就是个特殊的操作系统。因为ESX的安装界面很像RedHat,里面的指令和服务也很像,所以有些人误以为ESX = RedHat + VMware Server,其实不是酱子滴。

ESX里的大部分底层驱动都由VMware重新写过,而且还内带好多咚咚,比如SAN文件共享和多路径冗余。VMware为了表示自己的确干了好多活,就把这个kernel命名为VMkernel。
而整个ESX基本可以看作VMkernel + Console。这个Console基本就是RedHat AS3的改版,可以看做是个特殊的虚拟机。

本人觉得VMware最酷的技术是VMotion,就是能让虚拟机活着搬家。我曾伙同另外一个家伙测过VMotion的效率,在虚拟机从一台服务器搬家到另外一台 服务器的过程中,持续ping这台虚拟机的IP地址,结果发现整个过程中只有一个ping响应略有延迟。厉害!

当然喽,要实现VMotion,就肯定需要后端有一个共享SAN文件系统。ESX里面带的SAN文件系统叫VMFS,实现的功能跟SANergyFS和ADIC StorNext FS差不多,不过VMFS是对称式的。也就是说,安装ESX的时候,不需要给VMFS指定MDC。

ESX里集成的多链路功能也不错,主流光纤卡都能支持(要求太低了点儿吧~)
还有,多链路聚合和切换是在驱动层完成的,不是靠device-mapper或MD。也就是说,在双卡的机器上安装ESX之后,在/proc/scsi/ scsi里看到的,就已经是合并之后的设备,不需要像powerpath那样再搞东搞西的。

另外ESX还支持 iSCSI和NFS,用来连接IP-SAN和NAS(咦?这回居然没人呕吐,那我再大声说一遍,“IP-SAN和NAS~”OK,我爽了,你慢慢吐先。)
其实ESX里面是有Samba Client的,而且我试了试,访问一般的Windows共享没啥问题。但是VMware的官方文档里,目前还没有对CIFS的支持,也许是人家对自己严格要求吧。

VMware产品系列中,除了ESX以外,还有两个虚拟引擎——VMware Server(也就是原来的GSX),VMware Workstation以及最近即将发布的VMware Fusion。
Sorry,这回真的数错了,是三个,三个产品。Server、Workstation和Fusion。
与ESX相比,这三个产品运行的层次要高一些,都是要安装在操作系统上的。Server和Workstation运行在Windows和Linux上,Fusion运行在苹果的Mac OS上。

为了配合这些个虚拟引擎,当然主要是为了配合ESX,VMware还有一些管理软件和工具。比如Virtual Center、Importer、Convertor、P2V、Player等等。
这些工具中很多是免费的,也有些如Virtual Center这样的工具,是跟ESX打包在一起卖的。ESX + VC的组合叫Virtual Infrastructure,简称VI。

顺便提一下,虚拟技术世界里,简称VI的咚咚好多,一不留神就容易搞混。比如有家公司叫Virtual Iron,而且其产品也叫Virtual Infrastructure,另外在InfiniBand交换技术里还有个协议层叫Virtual Interface。下次有人跟你说VI的时候,最好问清楚是哪个VI,免得最后驴被马性骚扰。
类似的重名现象还有VDI这个缩写。VMware有一个包叫Virtual Desktop Infrastructure,Virtual Iron公司也有个名字完全相同的产品包。当然里面的咚咚是完全不同的啦。

造成这严重的重名现象至少有两种可能:
一是这些公司在起名字的时候太缺乏创意,哪像咱存储界的厂商,明明东西一样,名字也起得五花八门。
二是人家故意把名字弄得一样,以表示说“对啦,我就是跟你竞争的!”

事实上Virtual Iron也确实是VMware的一个有力竞争者。咱们要说的第二个天王,XEN,确切的说不是一个人在战斗,而是一个庞大的阵营。其中就包括Virtual Iron公司。

XEN本是一个剑桥搞的开源项目,最近几年发展得超级迅速,目前几乎所有的Linux版本都搭配了这个咚咚,就连一些Unix也开始考虑勾搭之。XEN的技术特点是Para-virtual,即“并行虚拟”也叫“半虚拟”技术,就是说XEN能让虚拟机中的某些程序直接访问硬件。

打个比方说,VMware ESX像是穿在服务器硬件上的一层衣服,这层衣服把硬件包裹得很严实。ESX中的虚拟机所看到的硬件资源,100%都是由ESX虚拟出来的。虚拟机中的操作系统,是不能直“接触”摸到真正的硬件资源的。
而XEN呢,则像是穿在服务器硬件上的性感的比基尼泳装,虚拟机不仅可以看到,而且可以直接摸到……
同学~你口水流出来啦!赶快擦擦。

记得早些年间要在XEN上装Linux的时候,还需要手工改内核。现在Intel和AMD在CPU里提供的新的虚拟技术之后,XEN不仅可以不改内核直接安装Linux,还可以支持Windows虚拟机。技术的进步真是快啊!

啥?你问Intel和AMD是啥技术?别急,我后面会说到。本来我脑子就乱,你这一打岔,我就更乱了。
咳~咳~刚才说到哪了?
噢,对了,是说XEN阵营。

这里面的两大主力是Virtual Iron和XenSource公司。这个Virutal Iron公司原本是有自己一整套从软到硬的虚拟产品,不过近来发现XEN年轻貌美,便放弃了自己半老的旧引擎,全套采用XEN为其核心。早年记得Virtual Iron还有些基于InfiniBand交换的硬件虚拟技术,现在在他的 网站上也看不到了。看来告别过去的决心有够坚决。

XenSource公司没有什么旧关系的瓜葛,就是靠的XEN的发展而发展起来的。现在业界使用最广泛的XEN商用版本就来自这个公司。XenSource发布的商用版本一共有三个……等会儿,让我再数一遍。OK,没问题,的确是三个:XenEnterprise、XenServer、XenExpress。

虽然在XEN的阵营中,XenSource提供了类似VMware的P2V和Importer工具,Virtual Iron提供了集中管理工具,但是总体来说,XEN的管理软件和工具还是远不如VMware完整和成熟。好在XEN阵营还在日益扩大,除了各大Linux厂商、Sun和IBM,听说最近 微软也来凑热闹,跟XenSource谈起了合作。如此看来,XEN真是前途不可限量啊!

说到微软,也就是咱们要认识的第三位天王,总是让人想起IE、Media Player等“经典”之作,虽然他不是第一个做出来,而且技术也不见得更好,但是一旦开始免费的捆绑在Windows里面,对手的日子就难过了。如今微软在虚拟技术上的手段,也是如此。

到目前为止,微软一共推出了四个咚咚,安啦~不会再数错啦,Virtual PC 2004、Virtual PC2007、Virtual Server 2005、Virtual Server 2005 R2。这些咚咚的工作层次跟VMware Server和Workstation的层次相同,都是需要安装到操作系统上。当然了,用胳膊肘都能猜出来,微软的咚咚只能安装在Windows上喽。不过微软对虚机系统的支持倒是显得比较现实,声称在未来会支持Linux虚拟机。

让对手最害怕的是,微软号称在Windows 2008里面要开始捆绑他的虚拟产品。这可吓坏了VMware,尽管MS VSR现在做得很土,基本不具备任何实用性可言,VMware还是忙不迭的把自己的VMware Server变成免费产品,以免被微软打个措手不及。

由此也可以看出微软这三号天王也非浪得虚名,虽然东西做得不咋地,但至少可以隔山打牛。最终受益的还是咱们用户,可以免费使用功能 性能都不错的VMware Server。
啥?你说你原本也可以免费使用?拜托~用盗版就不要这么大声嘛!

这四号天王,就是前面被打岔时说过的Virtuozzo和OpenVZ。这两串勾勾文都是产品的名字,背后的公司名字叫SWsoft。如前面已经说过的那样,Virtuozzo OS Virtualization和Virtuozzo Server Virtualization是SWsoft公司的商业版产品,OpenVZ是采用SWsoft源码的开源项目。

与前三个天王的产品相比,SWsoft的产品运行在更高的层次上。用业内行话说,Virtuozzo和OpenVZ属于Application Container——应用程序的容器。好像有点难懂,咱们用点通俗的话说,不过你放心,这里没有比基尼什么事。

VMware、XEN、MS VSR这些咚咚所虚拟出来的,都是一个个“硬”的主机,你得在这些虚机上再装操作系统。而Virtuozzo和OpenVZ所虚出来的,是一个个已经装好系统的主机。
也就是说,VMware、XEN、MS VSR所虚拟的是硬件资源,而Virtuozzo和OpenVZ所虚拟的是操作系统环境。

所以Virtuozzo和OpenVZ里面没有VM(Virtual Machine)这个概念,取而代之的是VE(Virtual Environment)或称VPS(Virtual Private Server)。而进到VE/VPS里面,看到的就是一个现成的操作系统环境。
等着听比基尼故事的人失望了~

具体来说。比方说Windows下安装某个程序,要改注册表是吧?还有创建目录和文件是吧?Virtuozzo能把这些动作统统截获,并且偷偷在其它地方执行,而不真正修改原来的系统环境。这样程序自以为万事OK,很Happy的运行,殊不知却是被Virtuozzo给骗了。

Virtuozzo这个有所不同的机制,对资源管理更为灵活,某个虚拟环境只有活动的时候,才会被分配资源。因此在相同的硬件资源下,Virtuozzo可以配置出更多的虚拟环境。一般VMware和XEN只能在一台服务器上跑几十个虚拟机,而Virtuozzo号称可以一台机器支持5000个虚拟环境!

当然Virtuozzo也有很明显的不方便之处,就是Linux上只能虚拟Linux,Windows上只能虚拟Windows。而且像VMware或Xen那样在服务器之间挪动虚拟机,也是异常困难的。
盼望比基尼出现的人这下彻底失望了~