xiaobailong 发表于 2005-8-21 11:29

开个Solaris Containers专题, 大家来讨论啊

个人认为,Solaris里面现在最好玩的就是那个Solaris Containers,特别是其中的Zones.

以前的操作系统,都是把所有的应用程序全部装在一起。就像一个大厅,所有工作都在里面进行。这些任务有时候会互相影响的。而如果某个程序要重新启动机器的话,所有的应用程序都会受到影响。

而Solaris Zones,则是按需要把这个大厅分成各个独立的房间,可以按照自己的想法分配不同的任务,不同的用户,在不同的房间里操作。这样避免了相互干扰。

如果某一个区出故障,需要重新启动,则只要重起这个区就可以了,其它区不受影响。而且重起可以在十几秒之内完成。

如果某一个区不幸被病毒感染了,或者其它原因,需要重装,则只要把这个区彻底干掉,另建一个区,而且只要重装这一部分的应用程序就可以了,其它的区不会受到影响。一个区的病毒也不会感染到其它区去。

[ 本帖最后由 xiaobailong 于 2005-8-24 10:46 编辑 ]

xiaobailong 发表于 2005-8-22 20:29

在有些领域,大家把不同的应用程序放在不同的机器上,例如webserver, database, appserver各放在一个机器上。在做sizing的时候,每一个应用程序的峰值都要单独考虑,可是其实达到峰值的时间是很短的。总体资源利用率有时候只能达到20-30%的样子。

而如果使用Solaris Container,就可以把这些应用程序全部装在一台机器上。这样:
1。保证了应用程序的独立性。(效果同上)
2。简化管理。因为现在只有一台机器要管;系统升级的时候,也只要升级一次操作系统。
3。减少了网络的通讯流量。同一个Solaris里的zones之间互相通讯的时候,是不用通过外部网络的,虽然每一个zone 都有自己的IP地址。
4。提高系统的利用率。现在做sizing的时候,可以综合考虑所有应用程序的总体使用情况,考虑一个总的峰值就可以了。
。。。

[ 本帖最后由 xiaobailong 于 2005-8-24 10:51 编辑 ]

xiaobailong 发表于 2005-8-22 20:53

我居然在这个主题下还没有用任何Smilies, 不爽,改变一下这个状况:$辛苦$$支持$$瞧瞧$:lol::P:D$ok$:)$漂亮$$不错$$赚到了$

BeBe 发表于 2005-8-22 21:33

要玩就玩得专业一点。
注意:两米以外观看。

:):):):):):):):):):):):):):):):):):):):):):):):):lol::lol::lol::lol::lol::lol::lol::lol::lol::)
:):):):):):):):):):):):):):):):):):):lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::)
:):):):):):):):):):):):):):):):lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::)
:):):):):):):):):):):):lol::lol::lol::lol::):lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::):):):):):):)
:):):):):):):):):lol::lol::lol::lol::lol::lol::lol::):lol::lol::lol::):):lol::lol::lol::lol::lol::):):):):):):):)
:):):):lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::):):):):):):lol::lol::lol::lol::):):):):):):):):)
:):lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::):):):):):):lol::lol::lol::lol::):):):):):):):):)
:):lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::):):):):):):):lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::):):)
:):lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::):):):):):):lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::):)
:):):lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::):):):):):lol::lol::lol::lol::lol::lol::):):):lol::lol::lol::lol::lol::lol::):)
:):):):):):):):):lol::lol::lol::lol::):):):):):lol::lol::lol::lol::):):):):):):lol::lol::lol::lol::lol::):)
:):):):):):):):):lol::lol::lol::lol::):):):):lol::lol::lol::lol::):):lol::lol::):):):lol::lol::lol::lol::lol::):)
:):):):):):):):):lol::lol::lol::lol::):):):):lol::lol::lol::lol::):):lol::lol::lol::lol::):lol::lol::lol::lol::lol::):)
:):):):):):):):):lol::lol::lol::lol::):):):):lol::lol::lol::lol::):):lol::lol::lol::lol::):lol::lol::lol::lol::lol::):)
:):):):):):):):):lol::lol::lol::lol::):):):):lol::lol::lol::lol::):):lol::lol::lol::):):lol::lol::lol::lol::lol::):)
:):):):):):):):):lol::lol::lol::lol::):):):):lol::lol::lol::lol::):):lol::lol::lol::):):lol::lol::lol::lol::lol::):)
:):):):):):):):):lol::lol::lol::lol::):):):):lol::lol::lol::lol::):lol::lol::lol::lol::):):lol::lol::lol::lol::lol::):)
:):):):):):):):):lol::lol::lol::lol::):):):):lol::lol::lol::lol::):lol::lol::lol::lol::):):lol::lol::lol::lol::lol::):)
:):):):):):):):):lol::lol::lol::lol::):):):):lol::lol::lol::lol::):lol::lol::lol::lol::):):lol::lol::lol::lol::lol::):)
:):):):):):):):):lol::lol::lol::lol::):):):):lol::lol::lol::lol::):lol::lol::lol::lol::):):lol::lol::lol::lol::lol::):)
:):):):):):):):):lol::lol::lol::lol::):):):):lol::lol::lol::):):lol::lol::lol::lol::):):lol::lol::lol::lol::lol::):)
:):):lol::lol::):):):lol::lol::lol::lol::lol::):):):):lol::lol::lol::):):lol::lol::lol::):):):lol::lol::lol::lol::lol::):)
:):):lol::lol::lol::lol::lol::lol::lol::lol::lol::lol::):):):):):lol::lol::):):lol::lol::):):):):lol::lol::lol::lol::lol::):)
:):):):lol::lol::lol::lol::lol::lol::lol::lol::lol::):):):):):):):):lol::lol::lol::):):):):):lol::lol::lol::lol::):)
:):):):):):lol::lol::lol::lol::lol::lol::lol::):):):):):):):):lol::lol::lol::):lol::lol::lol::lol::):):):):):)
:):):):):):):lol::lol::lol::lol::lol::lol::):):):):):):):lol::lol::lol::lol::):):lol::lol::lol::lol::lol::):):):)
:):):):):):):):):):lol::lol::lol::):):):):):):lol::lol::lol::lol::lol::):):):lol::lol::lol::lol::lol::lol::lol::)
:):):):):):):):):):):):):):):):):lol::lol::lol::lol::lol::lol::):):):):):lol::lol::lol::lol::lol::lol::)
:):):):):):):):):):):):):):):):lol::lol::lol::lol::lol::lol::):):):):):):lol::lol::lol::lol::lol::lol::lol:
:):):):):):):):):):):):):):):lol::lol::lol::lol::lol::):):):):):):):):):lol::lol::lol::lol::lol::lol:
:):):):):):):):):):):):):):lol::lol::lol::lol::lol::):):):):):):):):):):):lol::lol::lol::lol::)
:):):):):):):):):):):):lol::lol::lol::):):):):):):):):):):):):):):):lol::lol::lol::):)

xiaobailong 发表于 2005-8-22 21:49

这个字写得好棒。赞一个。$漂亮$

greenflute 发表于 2005-8-23 01:04

楼上的帖子好厉害,俺的Safari险些死掉。

觉得这个Container的概念像过去sun大型机上的Domain,HP上面好像叫Partition.

xiaobailong 发表于 2005-8-23 10:53

Domain和Container确实都是在一台硬件server上划分独立软件区的,他们的最大区别在于:

多个Domain的硬件虽然可以是同一台大的server, 但是每一个Domain都要有自己的操作系统(可以是不同的版本)。而Container则是运行在同一个操作系统中的,用的是同一个kernel。这样管理起来比较简单,reboot某个zone的时候速度也快得多。两者可以说是各有利弊,互为补充吧。

看过一个图片举的例子,是说一个大的server, 可以分成两个Domain, 其中一个Domain运行Solaris9和一些应用程序,另一个Domain运行Solaris10, 里面又分了5个zone。每一个zone里有各自的应用程序。

[ 本帖最后由 xiaobailong 于 2005-8-23 17:50 编辑 ]

xiaobailong 发表于 2005-8-23 11:10

在一台机器上的一个Solaris系统中,可以有多达8000个zone。所有的Zone都公用同一个kernel。

刚刚安装好的Solaris 10, 和以前的操作系统没有两样,只有一个区,称为global zone. 而如果想要其它的独立区的话,必须设置安装启动一下才行。Solaris 10 里面有几个新增加的命令是专门做这个的,例如 zonecfg, zoneadm. 当然也可以不用这些命令,而使用GUI工具。这些新增加的区称为local zone, 简称zone.

缺省情况下,在新建一个zone的时候,/usr, /lib, /sbin, and /platform四个目录的内容是read-only方式mount到zone里面的。 如果某个zone想要自己的上述目录,就要用“full-root model”来建立这个zone.这个时候上述四个目录的内容就会被复制到新建的zone里面来。

也就是说,每一个zone可以有自己的不同的Solaris程序和库,也可以用公共的那个。但是无论如何,kernel都是同一个。

[ 本帖最后由 xiaobailong 于 2005-8-23 17:52 编辑 ]

tecehux 发表于 2005-8-23 12:51

不清楚在zone之间资源是怎么共享的?
比如鼠标,键盘,音卡,如果分配给一个程序后其它程序怎么使用呢?

xiaobailong 发表于 2005-8-23 17:29

原帖由 tecehux 于 2005-8-23 12:51 发表
不清楚在zone之间资源是怎么共享的?
比如鼠标,键盘,音卡,如果分配给一个程序后其它程序怎么使用呢?


在docs.sun.com有一个简单的例子:
http://docs.sun.com/app/docs/doc/817-1592/6mhahuooo?a=view

--------------------
Step 10. Add a device.

    zonecfg:my-zone> add device

1.Set the device match, /dev/sound/* in this procedure.

    zonecfg:my-zone:device> set match=/dev/sound/*

2.End the device specification.

    zonecfg:my-zone:device> end

This step can be performed more than once to add more than one device.
--------------------

Solaris里面的资源都是放在/dev或/devices目录下面的。上面的这个例子是说,如果在新建的local zone里想要加入某个设备的话,就用 zonecfg 里的 add device指令来设置。但是不是所有的设备都可以被加入local zone里面的,只有被认为安全的设备才可以被加入。设备加入之后,就可以在这个zone里面和其它的加入了这个设备的zone之间共享了。而没有加入这个设备的zone, 就不能使用这个设备了。这样,你可以分配某个设备由某个zone独享,也可以分配某个设备由多个zone共享。

只不过声卡的问题是,如果两个程序同时发出声音,那么声音还是会混在一起的。。。。这和不分zone的情况是一样的。。。。毕竟一台机器只有一个声卡,一套声音设备。。。。


说得不对的地方,欢迎大家指正哈。

[ 本帖最后由 xiaobailong 于 2005-8-23 19:28 编辑 ]

xiaobailong 发表于 2005-8-23 18:21

看过一个Solaris Containers的简介里面就说到可以用 Solaris Contianers 实现 resource, security and fault isolation, 也就是资源隔离,安全隔离和故障隔离。

Solaris Continsers事实上包含两方面的内容: Zones and Resource Managment.二者互为补充。

先挖个坑,以后再写Resouce Management。

tecehux 发表于 2005-8-23 19:50

原帖由 xiaobailong 于 2005-8-23 17:29 发表

只不过声卡的问题是,如果两个程序同时发出声音,那么声音还是会混在一起的。。。。这和不分zone的情况是一样的。。。。毕竟一台机器只有一个声卡,一套声音设备。。。。
...

声音不一定会混到一起的吧?
觉得solaris对外部设备不会支持得太好,毕竟主要是为工作站设计的。
对个人来说,8000个zone也没有什么意义吧?难不成每个程序用一个?

另外

假设原先每台机器2个CPU8M内存,一共10个CPU40M内存,那么现在就有可能只要5个CPU20M内存就够了。


这里是你自己写的还是翻译的?觉得这个算法怪怪的。

最后问一个这种分区的最重要关节:内核里zone和thread是什么关系?
一个zone里若干thread分别管理
还是所有thread统一分配销毁,zone只对其有管理的功能?

这种模式除了安全稳定外在性能上是否要做些牺牲呢?

xiaobailong回答的好我话我这周末就装solaris $辛苦$

xiaobailong 发表于 2005-8-23 21:16

原帖由 tecehux 于 2005-8-23 19:50 发表


声音不一定会混到一起的吧?

一台机器上,如果两个程序同时发音,不是就混到一起了吗?不过我还没试过。装过的zone都是为做server进行试验的,要么用zlogin切换进zone, 要么telnet进去。



觉得solaris对外部设备不会支持得太好,毕竟主要是为工作站设计的。

前半句对,后半句错。 对外部设备的支持确实是目前Solaris的最大弱点,特别是opensolaris, 就更惨了。好多驱动程序因为第三方版权问题不能开源。。。

不过Solaris主要并不是为工作站设计的,而是为服务器设计的。像我前面举的例子,webserver, database, appserver这些都是服务器的典型应用。


对个人来说,8000个zone也没有什么意义吧?难不成每个程序用一个?

这个倒是有理。8000只是一个理论上的说法,实际上8000个zone就算放在最大型的server上面也是没必要的。一般机器也就几个zone而已。当然那些做web hosting的可能会用得多一些,假设每一个客户购买的空间放在一个zone里面的话,100多个zone在一台机器上还是需要的。

事实上web hosting是zone的一个典型应用,每一个zone可以有自己的root用户和non-root用户。那么购买网页空间的每一个客户都可以获得一个root和自己的密码,虽然这种root还是受到一定的限制。



QUOTE:
假设原先每台机器2个CPU8M内存,一共10个CPU40M内存,那么现在就有可能只要5个CPU20M内存就够了。

这里是你自己写的还是翻译的?觉得这个算法怪怪的。

不好意思,这个数字是我自己随口说的。本意只是想说节省资源,其实数字并没有算过,事实上也没法算,因为要根据具体应用组合,用户数和用户使用习惯等情况来估算。。。那我把这句话去掉吧。


最后问一个这种分区的最重要关节:内核里zone和thread是什么关系?
一个zone里若干thread分别管理
还是所有thread统一分配销毁,zone只对其有管理的功能?

tecehux是说process吧,然后process里面又可以分多个thread。

对于zone来说process是划分的最小单位,一个process的所有thread都是属于同一个zone的。

内核负责管理process, 会把process按照各自的zone的归属进行权限设置。一个zone里运行的process, 只能直接看到和它在同一个zone里面运行的process, 而看不到运行在别的zone里的process. 这样就不会互相影响,也提高了安全性。这是zone的主要优点之一。


这种模式除了安全稳定外在性能上是否要做些牺牲呢?

要做一点点牺牲,但是非常小,1%的样子。因为无论多少个zone, 运行的kernel只有一个。

xiaobailong回答的好我话我这周末就装solaris ..

这句话听上去像是威胁哦?意思是我要是回答不好的话你就不装了????
@_@

[ 本帖最后由 xiaobailong 于 2005-8-24 22:10 编辑 ]

xiaobailong 发表于 2005-8-23 21:21

greenflute和tecehux提的问题还都是挺到位的啊。

xiaobailong 发表于 2005-8-23 21:28

再补充说process的权限设置,为了实现zone, Solaris 10 里面把权限设置的模式改掉了。前面的Solaris Privileges那个帖子就是看到这里的时候贴的。等我掌握更多资料之后再来补充哈。

http://dolc.de/forum/viewthread.php?tid=206818&pid=2764669&page=1&extra=page%3D2#pid2764669

[ 本帖最后由 xiaobailong 于 2005-8-23 21:29 编辑 ]

tecehux 发表于 2005-8-24 00:07

回答很到位,等我想到问题再提。
还是觉得不适合个人用户,做一个给企业用的发行版,日后的维护都是个大问题

asdfgh 发表于 2005-8-24 00:13

原帖由 tecehux 于 2005-8-24 00:07 发表
回答很到位,等我想到问题再提。
还是觉得不适合个人用户,做一个给企业用的发行版,日后的维护都是个大问题

小型企业,没钱买太多服务的,

学校,个人的网站,或者个人的服务器,都可以用

$走了$

xiaobailong 发表于 2005-8-24 09:56

楼上两位说的,属于需求分析范畴,我们另外开个帖子讨论一下好不好?

http://www.dolc.de/forum/viewthread.php?tid=211510&extra=page%3D1

[ 本帖最后由 xiaobailong 于 2005-8-24 11:26 编辑 ]

xiaobailong 发表于 2005-8-24 17:41

本来关于zone的还有两个重要方面,文件系统和网络体系。每一个zone都有自己专门的文件系统,IP地址,hostname(这个词中文是什么?),自己的root用户和non-root用户,甚至可以有自己的域名和域名服务。先在这里简单提一下,以后有空再写。

接下来写Resource Management(资源管理). Solaris资源管理和zone(中文不知道怎么翻译比较好?)是互为补充的两个独立系统,既可以一块儿用,也可以单独用。

资源管理里面和zone最有关系的是Fair Share Scheduler(FSS,公平共享调度)和Dynamic Resource Pools(简称pool, 动态资源池)。

xiaobailong 发表于 2005-8-24 17:42

现在说说FSS:

操作系统的一个基本功能就是管理哪些processes(进程?过程)可以使用哪些系统资源。Solaris上缺省的进程调度程序,在一般情况下,会平均分配CPU时间给所有进程(假设这些进程不在等待其它资源)。

而FSS就可以自己分配程序所占用的CPU比重(share)。假设你给三个程序分配了10:20:20的比重,那么在三个程序都运行的时候,CPU就会按照20%,40%,40%的比例分配给三个程序。如果第三个程序结束了,那么前两个程序占用CPU的比例就会变成33%,67%。

那么加上zone之后,现在的FSS就有两层结构了。首先是由global zone的root分配比重给各个zone, 这样就避免了一个zone运行很多很大计算量的程序而把整个机器的资源都占用掉。其次是在各个local zone里,由zone的root用户分配比重给各个程序。

[ 本帖最后由 xiaobailong 于 2005-8-24 18:07 编辑 ]

gaga 发表于 2005-8-24 18:21

Zone(或者说container,不确定是否是一个东西)是的概念是sun自己独有的吗?感觉像插在kernel和应用程序之间的一层‘虚拟机’。kernel管理这些‘虚拟机’,如果某个有问题就重新初始化它。问题是如果kernel本身有问题的话还不是一样整个系统崩溃。sun的这样做大概是意图简化它的‘kernel’的功能和复杂度,从而提高稳定性。但是对于用户来说,那个包含关键的应用的zone如果崩溃了,和整个系统崩溃的差别并不大。就像很多人说X的windows manager不稳定不代表unix不稳定。可是用户的应用程序都是在xwindow里面,X完蛋了我的工作也都完蛋了。就算你能全身而退回到console也没有太多意义。

FSS的概念和线程的优先级别似乎是一样的。另外,我记得process是有自己的独立空间,thread只能和别的thread共享父process的空间。或者solaris重新定义了这些名词?

xiaobailong 发表于 2005-8-24 20:10

原帖由 gaga 于 2005-8-24 18:21 发表
Zone(或者说container,不确定是否是一个东西)是的概念是sun自己独有的吗?感觉像插在kernel和应用程序之间的一层‘虚拟机’。

Container包含zone和Resource Management两部分。这个概念是sun自己独有的,但是其它的操作系统也有一些类似的概念。大家主要都是在用不同的方法实现应用程序的“隔离(isolation)”。

把应用程序装在一个个独立的servers上面是最彻底的隔离,但是需要的资源就比较多,管理起来化的功夫也比较大。好处当然有,就是每台机器上的资源都是由自己的应用程序独享的。一个机器硬件出问题的话,不会影响其它的机器。

Containers是实现隔离所需资源最小,管理最简单的一种解决方法。可以实现纯软件级别的高度隔离,和一定程度的硬件资源隔离,但是如果机器硬件整个出问题的话,就不行了。

介于二者之间的还有前面提到的Domain, Partitions, 以及VMware等等。大家各自的隔离度不同,需要化在管理上的功夫也不同,为实现同样的应用所需的资源也不同。


kernel管理这些‘虚拟机’,如果某个有问题就重新初始化它。

这个不太正确。一个container看上去就像一个独立的操作系统一样,因为有自己的资源,包括 IP addresses, hostname, root user, non-root users, file system, devices, 甚至是专用的CPU set,etc. (另外还有RPC domain, nameing services, 这两个是什么,我还没搞清楚呢。)

虽然看上去像多个操作系统,但是事实上这些Containers公用一个kernel。 这样对性能的影响就非常小,几乎可以忽略不计。kernel管理这些“虚拟操作系统”,但是如果某个contianer有问题的话,5555555555, 需要管理员才能重新初始化它,而不只是kernel.


问题是如果kernel 本身有问题的话还不是一样整个系统崩溃。

Solaris的kernel已经优化了20多年了,稳定性非常好,不会那么容易出问题崩溃的。这也正式它相对于Windows和Linux的优势。:lol:



sun的这样做大概是意图简化它的‘kernel’的功能和复杂度,从而提高稳定性。
错了,那些container的管理功能是新加进kernel里去的。原来的kernel倒是没有任何简化。

Sun这样做的意图,就是为了实现应用程序,资源,和故障的隔离,从而提高安全性和稳定性。而不是靠简化提高稳定性。以前所有的一切应用程序都放在一起,相当于都放在一个不分房间的房子里,经常会互相影响的,而如果一个应用需要重新启动系统,就会影响所有的程序。而用了contianer, 等于分开放在不同的房间里了。那么当然增加了安全性,方便性,降低了互相干扰。


但是对于用户来说,那个包含关键的应用的zone如果崩溃了,和整个系统崩溃的差别并不大。就像很多人说X的windows manager不稳定不代表unix不稳定。可是用户的应用程序都是在xwindow里面,X完蛋了我的工作也都完蛋了。就算你能全身而退回到 console也没有太多意义。

可是照这种说法,就算是把各个应用程序放在单独的server上,如果包含关键应用的server崩溃了,还不是和整个系统崩溃一样吗?对于这种关键应用,"隔离(isolation)"就不是问题的关键了,而高可靠性(High Availability)才是问题的关键。这个可以通过多台机器组成的cluster来实现,那才是正确的解决方案。

这么说吧,Containers和Cluster,一个是纵向分割,一个是横向联系。两个结构不同,实现的功能也不同,适用的情况也不同,可以作为互相补充吧。


FSS的概念和线程的优先级别似乎是一样的。
不知道是不是一样的,但也许Solaris里面另外有进程的优先级,优先级的事情我还没研究过。。。。但是FSS不光针对进程,还可以针对由进程组成的tasks, 由tasks组成的projects, 以及包含process, tasks, projects的Zones.这是一个扩展过的两级结构。可以防止某个(某些)程序过渡消耗资源而导致其它程序无法运行的情况。


另外,我记得process是有自己的独立空间,thread只能和别的thread共享父process的空间。或者solaris重新定义了这些名词?
Solaris里面就是这样的定义啊。所以process是划分的最小单位,因为资源共享的原因,不可能一个process的某几个threads在一个zone里,另几个threads在另一个zone里。

可是我怎么觉得linux的thread是和 Solaris的不一样的呢?也许是错觉?谁给说说,linux里面process和thread是怎么定义的?

$辛苦$$支持$

[ 本帖最后由 xiaobailong 于 2005-8-25 11:55 编辑 ]

gaga 发表于 2005-8-24 20:44

因为记得你的帖子里提到solaris的process相当于linux的thread(或者反过来?),有些纳闷。不过现在找不到你的帖子了,也许我看错了。

zone的出现的确可以隔离有故障的程序。至少让故障不会影响其他应用程序的运行。(前提是zone可以阻绝一切应用程序对kernel的破坏性操作)。

我说的‘虚拟机’是觉得它和SUN自己的java有些类似之处。都是将用户屏蔽出原系统,提供一个完全的运行环境。不过zone还做不到仿真出一堆硬件吧?我想它应该介于cygwin一类的API仿真和vmware一类的硬件仿真的中间。不提供独立的硬件却提供独立的进程和内存管理。

所有的想法都是基于你的帖子的介绍,呵呵,也许有曲解。没时间去翻solaris文档了。

xiaobailong 发表于 2005-8-24 21:11

原帖由 gaga 于 2005-8-24 20:44 发表
因为记得你的帖子里提到solaris的process相当于linux的thread(或者反过来?),有些纳闷。不过现在找不到你的帖子了,也许我看错了。

你没看错,我是这么写过的呢。我怎么觉得linux里没有process, 只有thread一样啊?或者我弄错了?


zone的出现的确可以隔离有故障的程序。至少让故障不会影响其他应用程序的运行。(前提是zone可以阻绝一切应用程序对kernel的破坏性操作)。

我说的‘虚拟机’是觉得它和SUN自己的java有些类似之处。都是将用户屏蔽出原系统,提供一个完全的运行环境。不过zone还做不到仿真出一堆硬件吧?我想它应该介于cygwin一类的API仿真和vmware一类的硬件仿真的中间。不提供独立的硬件却提供独立的进程和内存管理。

所有的想法都是基于你的帖子的介绍,呵呵,也许有曲解。没时间去翻solaris文档了。

你说的没错啊,绝大多数都是正确的。 sun自己也把zone和jvm相提并论呢。

zone据说可以把硬件虚拟化,就是说在zone里面可以感觉不到你是在什么样的硬件上的。但是肯定仿真不出不存在的硬件。具体我还没怎么研究呢。等知道了再来写。。。

vmware我知道一些,就是一个Linux的应用程序,实现一层虚拟平台,上面可以同时运行Linux, Windows和Solaris等多个操作系统的多个不同的instances.也是在一台机器上是实现隔离的方法。不过vmware是单独的产品,我们公司有人用的,可是我没有license, 不能用。。。而上面如果运行多个操作系统的话,需要有各自的license的。我都不知道vmware是否开源?

zone就不存在这个问题,因为是内嵌在Solaris里面的了。不需要另外的任何其它费用,就可以得到多个相对独立的“操作系统”。而且是开源的。

vmware的好处是可以在一台机器上同时运行多个不同的操作系统,而zone就只有Solaris 10采用,相当于所有的"操作系统"都是Solaris 10.

那么cygwin又是怎么回事呢?

gaga 发表于 2005-8-24 21:40

相信大部分root登录到unix系统最常干的一件事就是 ps ,查一下process status ;)

cygwin是win32平台下的类unix api环境。在上面可以重编译运行绝大部分开源的GNU软件。给很多不愿意脱离windows的人(比如我;))一个‘unix shell’。另外一个很有价值的是免费的win32平台上的X server实现(xorg)。我的感觉是cygwin在win32上留住了至少一半想投入linux桌面怀抱的人。

xiaobailong 发表于 2005-8-24 22:07

原帖由 gaga 于 2005-8-24 21:40 发表
相信大部分root登录到unix系统最常干的一件事就是 ps ,查一下process status

那就是说都叫process和thread. 一样的了。


cygwin是win32平台下的类unix api环境。在上面可以重编译运行绝大部分开源的GNU软件。给很多不愿意脱离windows的人(比如我)一个‘unix shell’。另外一个很有价值的是免费的win32平台上的X server实现(xorg)。我的感觉是cygwin在win32上留住了至少一半想投入linux桌面怀抱的人。


那就是wine的相对应的东东了。。。 Solaris上也有个类似cygwin的东东.$不错$

[ 本帖最后由 xiaobailong 于 2005-8-24 22:13 编辑 ]

gaga 发表于 2005-8-24 22:40

原帖由 xiaobailong 于 2005-8-24 22:07 发表


那就是说都叫process和thread. 一样的了。



那就是wine的相对应的东东了。。。 Solaris上也有个类似cygwin的东东.$不错$

thread是最基本的执行单元,每个process(mach里好像是task)必须至少包含一个thread。至少posix,win32是这么定义和进行库实现的。内核thread,用户thread和轻量thread运行在不同的层级。不过记得SUN的东西在细分thread的定义上有些区别。

wine可以直接运行win32的二进制代码,提供一个更低级的运行环境。换句话说,实现了对windows的二进制兼容。相比之下cygwin应该称为源码级的api仿真。GNU软件必须重新编译成本地的win32代码才可以在cygwin里执行。(而不是直接把UNIX的elf或者coff文件拿来执行)而所有的cygwin程序都依旧是纯粹的win32进程,和其他windows程序一起统一归windows内核管理。

greenflute 发表于 2005-8-24 23:17

Thread和process在不同的系统里和使用不同的线程库时是不一样的。
比如Solaris应该是真Thread,而早期Linux则是用process模拟thread,值得一提的是,windows是真thread,呵呵
但是记得新版本的linux或者是使用pthread线程库的时候,是真线程(记不太清了,惭愧)

greenflute 发表于 2005-8-24 23:30

原帖由 xiaobailong 于 2005-8-24 03:21 发表
greenflute和tecehux提的问题还都是挺到位的啊。

惭愧惭愧,俺只记得domain的license好贵哦,而且只有大型机上才有domain一说。据说3500也可以分domain,具体情况没研究过。
如果能在工作站级别的机器上划分zones,应该是sun做出了很大的牺牲/或者战略决策。总之感觉硬件门槛应该不会太低,商业宣传和技术实现还是有一定距离的。


solaris的知识还望多多推介,哈哈

gaga 发表于 2005-8-25 00:33

原帖由 greenflute 于 2005-8-24 23:17 发表
Thread和process在不同的系统里和使用不同的线程库时是不一样的。
比如Solaris应该是真Thread,而早期Linux则是用process模拟thread,值得一提的是,windows是真thread,呵呵
但是记得新版本的linux或者是使用p ...


现在linux的是posix thread(pthread)。solaris有它自己的threading实现。其他的还有mach,irix,win32等,不过概念上都和process区分开了的。不清楚早起linux的具体实现,如果是process来模拟的话只能说是伪threading
页: [1] 2
查看完整版本: 开个Solaris Containers专题, 大家来讨论啊