|

楼主 |
发表于 2005-8-24 19: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,一个是纵向分割,一个是横向联系。两个结构不同,实现的功能也不同,适用的情况也不同,可以作为互相补充吧。
不知道是不是一样的,但也许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 编辑 ] |
|