说完了虚拟界的四大天王,再来说说四小天鹅。
第一天鹅是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%以上的链接都已经实效了。
对于习惯了产品比较的坛友来说,下面这个链接也许能有点用。
[url]http://en.wikipedia.org/wiki/Comparison_of_virtual_machines[/url]
这里总结了将近50个虚拟引擎,全面虽然谈不上,但还算是收录的比较多了。
前面颠三倒四的说了“操作系统环境虚拟”、“主机资源虚拟”、“CPU模拟器”等等,这些并不是虚拟世界的全部,还有很多……
你说啥?虚拟存储?拜托~大家都是医生,就没必要互相开药方了吧。
我要说的是一个比较新的提法――“服务虚拟”。
当然这个名词跟其它很多新名词一样,只是个新瓶子,里面装的是新旧混杂的鸡尾酒。