“我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那样在服务器之间挪动虚拟机,也是异常困难的。盼望比基尼出现的人这下彻底失望了~
图在最后一贴!说完了虚拟界的四大天王,再来说说四小天鹅。
第一天鹅是Sun公司。好像把这么大的公司算做小天鹅有点那个,不过在虚拟界Sun的影响确实不如前面那几位大嘛。没办法,暂时委屈一下喽。 Sun以前就有个很类似Virtuozzo的软件,叫Solaris Container。从名字就能看出来,这咚咚也是个应用容器。最近Sun在虚拟技术方面的热情很高,新推出了一个叫做Logical Domain的咚咚,简写的模样很怪异——LDoms。
第二天鹅是Parallels公司。这家公司跟前面提到的SWsoft其实是姊妹公司,幕后投资人就是SWsoft的大老板。所以你在SWsoft的主页上还能找到Parallels的链接呢。 Parallels主攻的方向是桌面虚拟,在Windows、Linux和Mac OS上都有产品。以Parallels掌握的技术,完全可以实现,在Windows上运行Mac OS程序,在Mac OS上运行Windows程序。但是目前的产品只支持后者,因为苹果公司的授权条约限制了前者的合法性。苹果真是够“独”,居然禁止别的平台运行自己的程序!
第三天鹅是InnoTek公司。这家公司非常识时务,发现自己无论如何也打不过VMware等对手,就干脆把自己的VirtualBox做成开源项目。现在大家可以在网上任意下载VirtualBox来玩。这一招还真管用,刚开源没多久的时间,VirtualBox的用户,当然主要是玩家型的用户啦,就迅速增加。看来还是免费的午餐更好吃啊!
第四天鹅是Thinstall公司。这家公司其实不属于传统虚拟主机这个圈子,从名字就能猜出来,它更多的是和一些所谓“瘦终端”厂商勾搭。但是它的产品却从名字到功能,都不折不扣的属于虚拟范畴。它的产品叫Thinstall Virtual Suite,运行起来的效果跟Virtuozzo差不多,也是蒙骗应用程序,不让应用改动系统环境。
虚拟技术世界里,除了这四大天王和四小天鹅,还有很多配套工作。比如前面提到的Intel和AMD的新技术,就是配合这些虚拟软件滴。
Intel的虚拟技术叫Intel-VT,其中VT是Vanderpool Technology的缩写。嘿嘿,不好意思,我刚开始看到的时候还以为是Virtual Technology的缩写呢。这个技术的效果就是把一个CPU分成若干分区,然后把指令的执行范围限定在分区内。简单点说,就是在硬件上,把一个CPU虚拟成几个CPU。
按照Intel的设想,将来都不需要什么虚拟软件了,它自己的CPU直接就能同时运行多个操作系统。不过现阶段这只是个梦,Intel-VT技术还是要搭配VMware或者XEN才能起作用。当然啦,VMware和XEN都是很给面子的,Intel-VT刚刚发布没几天,这两个天王就都纷纷支持了。至于Virtuozzo这样的“应用容器”,由于主要是跟操作系统和应用打交道,暂时还不用搭理CPU里面的这些技术。
AMD的虚拟技术正式名称叫AMD-V,但也有很多人喜欢称呼原来那个内部用名,Pacifica。跟Intel-VT一样,AMD-V技术的原理也是在CPU上划分区,同时隔离指令。对用户来说,让人有点不爽的是Intel-VT和AMD-V互相是不兼容的。目前VMware和XEN都是要专门针对两个技术分别做工作。啥?你说没关系?那下次跟你谈薪水的时候,咱们说美元,发钱的时候数字不变,票子变成日元试试看。
Intel和AMD这边虚拟得热火朝天,IBM和Sun也怕落后,在新的PowerPC和SPARC处理器里,也弄了一堆虚拟技术。不过相比x86上的虚拟成分要“软”很多,我的意思是说要更多的依靠软件,不要想歪哦!
其实,虚拟技术,说到底就是一个字——骗。 Virtuozzo对应用程序说:“来吧,来搞我吧,我就是操作系统。” VMware和XEN对操作系统说:“来吧,来弄我吧,我就是主机硬件。” Intel-VT和AMD-V对操作系统说:“来吧,来x我吧,我…我…我…还是x86 CPU。不过我是好几个CPU哦,你想x哪一个?”
这些技术虽然在骗,但是骗得都不够狠。虚拟技术里,有一类狠角色,真是说瞎话不眨眼。 N久以前有个名叫Bochs的骗子,他就可以在任何CPU上运行,来模拟IA-32环境。可惜这个骗子的寿命不长,M久以前就翘辫子了。
跟Bochs几乎同时代的还有个PearPC开源项目,他可以在任何CPU上模拟PowerPC。也就是说,你可以在家里的PC上安装Linux,然后编译PearPC代码,然后运行PearPC,然后在模拟出的环境中安装AIX或者老版本的Mac OS!酷吧?!
可惜PearPC也寿禄不长,2005年底弄出模拟G4的0.4.0版之后,就再没动静了。后来另外一个叫做CherryOS的开源项目接过PearPC衣钵,又折腾了一年多时间,到处对人说他可以在PC上安装Mac OS,结果却一再推迟发布日期。后来人民群众不爱搭理他了,他也就如烟般散去了。
这些项目虽然最终不了了之,但是他们为后来的大骗子遗留下很多宝贵的骗术遗产。今天业界知名的大骗子——QEMU就还一直沿用着Bochs遗留下来的BIOS模拟技术。当然QEMU比他的前辈们出息多了,他已经发展成一个家族。用句文言文说,QEMU家族可谓NB得不得了。
他们可以平台无关的模拟x86、ARM、PowerPC、SPARC环境,而且速度非常快。据说效率可达80%,当然,俺也不知道这个80%是意味着什么,反正肯定不是送过去100个指令,最后只执行80个。
只要不太傻的人都知道,光有CPU是P也干不了的。还得有总线、I/O之类的外部环境。还好今天的QEMU已经可以完整的模拟一个主机环境,让你可以在Linux上模拟出IBM或Sun的小机工作站,甚至能模拟一个阵列控制器。
当然了,NB的事情总是高难度的。使用QEMU可不像使用VMware或者XEN那么容易,对各种真实硬件的支持也很不到位。可以原谅嘛,人家才是0.9版,而且还是个免费的开源,都是靠雷锋们为QEMU添砖加瓦。也不容易啊!
如果你只对商业软件感兴趣,可以关注一下Transitive这家公司。他们的产品叫QuickTransit,可以让Unix的程序在x86 Linux上运行。而且据说效率也很高。现在QuickTransit可以支持的跨平台方式有: SPARC Solaris到x86/x86_64 Linux; SPARC Solaris到x86 Solaris; PowerPC或MIPS到x86 Linux 这些不同的虚拟技术,虽然今天看来走得路子很接近,但是他们的祖宗并不是一个。状如QEMU这样的CPU模拟器,最早源于那些写编译器的高手。这些又牛又懒的高手总想省事,恨不得写一个编译器就可以在各种CPU上到处用,于是就产生了今天跨平台指令实时互译的雏形。
而VMware和XEN,甚至包括Intel-VT、AMD-V的套路,主要师从于一个叫做“服务器分区”的技术。这是一门同样古老的技术,玩过Sun E10000的人一定对这种咚咚很熟悉。先在一台E10000里插上若干CPU、若干内存、若干板卡、若干菜刀……然后再跑到console台上把某些CPU跟某些内存以及某些I/O划分成一个Domain。每个Domain就是一台机器,最后在Domain上装Solaris系统。说到这里,不由得想起当年中国移动总局规划的一个愚蠢方案——居然采购两台E10000做双机!那个脑子进水的技术主管显然没搞懂E10000咋用。
x86平台的服务器分区技术出现的也非常早,UniSys公司的机器就是用一堆x86 CPU搭成的类似E10000的模样。不过从“分区”到“虚拟”还是有明确界限的。如果分区的时候只能操作整个的CPU,就算“分区”;如果能把一个CPU切开,分配半个甚至更小的CPU资源,就算“虚拟”了。从这个角度说,E10000、UniSys和其它大冰箱,都还是只能分区不能虚拟。这也正是大部分刀片服务器,一般都会搭配VMware的原因。不过例外总是有的。一个叫做Egenera的公司就做了几乎纯硬件的虚拟系统。此外,一些InfiniBand交换设备也能提供类似的虚拟功能。前面说操作系统虚拟的时候,忘了提一个挺酷的咚咚,在这打个补丁。 ReactOS是一个开源项目,目标是模拟一个Windows环境,让你的Windows程序可以直接运行在这个不花钱的操作系统上。
说Virtuozzo的时候没想起来ReactOS,是因为这两个软件虽然都是模拟操作系统环境,但是模式还是明显的不同。Virtuozzo是安装在操作系统上的软件,省不下买Windows的钱,而ReactOS本身就是一个完整的操作系统。不过ReactOS不能像Virtuozzo那样以一当十,只能起到女扮男装冒名顶替的作用。对!有点像花木兰,不过Windows可不是ReactOS他爹,一点亲戚关系都没有。
有了ReactOS,你就可以理直气壮的运行那些原本只能在Windows上安装运行的程序,比如Office 2003,而不必担心查盗版的警察叔叔来敲门了。当然,要想不被警察叔叔带走,还有两个前提:一是Office 2003本身不是盗版;二是警察叔叔听说过ReactOS这个咚咚。
看来这两条都有点难,而且ReactOS目前还没做到那么好,暂时还不能支持Office 2003(昏倒!),只能运行Mozilla FireFox和部分Open Office组件。况且ReactOS目前支持的硬件也很有限,如果不想看到它启动中出现蓝屏,最好的办法就是用VMware或QEMU的虚机启动。可以原谅嘛~雷锋们做的开源,而且还仅仅是0.3.1版本而已,已经很不错啦。
哦,对了,还有个补丁……Stop扔ing西红柿!不怨我这个蹩脚裁缝,实在是虚拟产品和技术太多,而且变化太快。CU上曾经有个2005年的帖子,给出过一些虚拟引擎的链接,今天再看的时候,90%以上的链接都已经实效了。
对于习惯了产品比较的坛友来说,下面这个链接也许能有点用。 http://en.wikipedia.org/wiki/Comparison_of_virtual_machines 这里总结了将近50个虚拟引擎,全面虽然谈不上,但还算是收录的比较多了。
前面颠三倒四的说了“操作系统环境虚拟”、“主机资源虚拟”、“CPU模拟器”等等,这些并不是虚拟世界的全部,还有很多…… 你说啥?虚拟存储?拜托~大家都是医生,就没必要互相开药方了吧。我要说的是一个比较新的提法——“服务虚拟”。当然这个名词跟其它很多新名词一样,只是个新瓶子,里面装的是新旧混杂的鸡尾酒。