关于Solaris 10的Zone技术的三言两语

这两天因为项目需要,开始接触Solaris 10的新特性Zone技术。这个技术被称作Solaris的革命性技术,不过愚笨的我一开始并没有领悟到这一点。

实际工作中用了才知道,Zone技术的确是有其独创性的。因为它是相对独立统一的,原本我是将Zone当作VMWare之类的虚拟机技术来理解的。但是,逐渐发现了其有截然的不同。首先,虚拟机与实际实体系统(比如Windows)之间是完全独立的,进程之间完全不能相互通信,而且关于资源的共享,虚拟机采取的方式为:硬件资源,通过虚拟机系统进行软件模拟——什么显卡啊,光驱啊之类都是通过模拟来实现的;软件资源——不好意思,要用什么软件,您自个儿装去吧。倘若是文件资料之类的,必须将实体系统和虚拟机当作两台远程计算机来看待,文件资源的共享方式因此也必须通过Samba,ftp这样的网络连接来完成

但是Zone技术是截然不同的。在Solaris 10上,默认存在的是global zone。用户可以根据需要,创建自己的zone(理论上可以创建n个,只要不怕机器负载过重)。用户定义的zone被称作none-global zone,而这个none-global zone就相当于新建一个Solaris 10环境,它会在none-global zone所在的路径(用户指定的)下再创建一个根分区,并将/bin , /lib, /usr/bin, /sbin/ , /etc,这些重要的目录在该根分区下创建一个干净的备份。在none-global zone之间,进程是严格独立的,彼此不能通信。但是global zone可以统一管理所有none-global zone进程,可以通过unix socket与之进行通信。

关于硬件资源的分享,zone采取的方式是“拿来主义”。从CPU, 到网卡。直接与global zone进行分享(不清楚其调度方式是怎样的)。而如果是文件资源的管理,在同一个zone内采用的是Unix的标准方式——即通过用户,群组,权限来进行管理。none-global zone之间资源不可共享(因为在none-global zone中最多只能看见当前zone的根目录,以外的东西是不可见的),但是在global zone中,则可以通过权限设置来对none-global zone的资源直接进行管理(本来none-global zone对global zone来说也可以看作只是一个简单的目录罢了)。

事实上,可以从Unix用户的角度将global zone可以看作是一个root,none-global zone可以看作是一个个普通用户。只不过,此时一个zone就是一个操作系统环境,而并不只是像普通user那么简单只是实现了文件级别的权限管理,zone可以看作是一台机器上操作系统级别的权限管理。

至于zone技术在实际中有什么用?深层次的我说不出来,结合实际工作来看。比如只有一台机器,上面有个Solaris系统,如果要做测试,希望同样的测试用例能够在不同的语言环境中都进行一遍测试。有了zone的出现,所有语言环境下的测试就可以并发进行了。而不用像从前那样测完一个语言环境再进行切换,从而开始下一个环境下的测试。而且有了none-global zone,再也不用担心build的过程中将系统环境弄毁了。实在不行,大不了对这个none-global zone进行uninstall – install,整个过程不超过半小时,就又能重新得到一份崭新的系统环境了。

P.S:关于zone的具体实践,Unix中文宝库中Solaris版的斑竹——南非蜘蛛所写的文章说得很详细,我都是照着它做的
 
Solaris10的革命性功能之Zone技术

Advertisements

About 小wing

☞ INTP星人☞爱猫家 ☞钝感男 ☞Google粉 ☞第70004号维基人 ☞民主自由控 ☞伪技术爱好者 ☞挨踢民工 ☞无证程序员 ☞游戏宅 ☞摇滚乐拥趸 ☞原版CD收藏癖 ☞反对爱国主义
此条目发表在Live Space分类目录。将固定链接加入收藏夹。

One Response to 关于Solaris 10的Zone技术的三言两语

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s