萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

楼主: xiaobailong

再说 Solaris Containers

[复制链接]
 楼主| 发表于 2005-9-2 13:20 | 显示全部楼层
10。Solaris虚拟区的结构
刚刚安装好的Solaris事实上只有一个全局区域(global zone),我把它简称为大区,另外在这个大区的基础上,可以划分局部区域(local zone),我把它们称为小区,就是通常所说的虚拟区。在一个Solaris实例中,大区只能有一个,小区的数量可以自由确定,最多可以达到8000个。每一个小区本身大概占用70-几百兆的硬盘空间,另外建议留给它40M的内存空间。

虽然每一个虚拟区看起来就像是一个独立的操作系统,但是事实上这些区全部是在一个Solaris实例中的。从图中可以看到,只有一个内核,其中也包括了虚拟区的管理模块。在内核上有一个虚拟层,实现各个小区的虚拟化,虚拟区就在这层虚拟层上。虚拟区可以安装不同的应用程序,或相同应用程序的不同版本,例如三个虚拟区,一个装了Apache1.3,一个装数据库,第三个装Apache2.0。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-2 13:46 | 显示全部楼层
11。安全性
每一个虚拟区都有一个安全边界。

虚拟区中对特权(Privileges)进行了一定的限制。也就是说哪怕是虚拟区中的root,也不是具有所有Solaris中的48个特权的,例如改变系统时间。而且虚拟区不能扩大它自己的特权。

虚拟区有它自己的独立的命名空间(name space),例如自己的root用户和普通用户。

一个区里运行的进程不能影响其它区的活动。

Solaris的日志系统也考虑到了虚拟区。大区的管理员可以指定,是整个系统一起有共同的日志,还是每个虚拟区有各自的日志。如果是每个虚拟区有各自的日志,小区的管理员可以独立设置自己的参数。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-2 14:01 | 显示全部楼层
12。虚拟区中的进程
每一个进程属于一个区,可以是大区,也可以是小区,但是不能更换自己所属的区。

在虚拟区中不允许进行某些特定的系统访问(system call),或是访问范围受到限制。

属于同一个区的进程之间的互动和平常一样。

一个虚拟区里只能看到并影响同一个区里的进程,而看不到区外的进程。为了实现这些,proc指令被虚拟化了。

从大区里能看到所有的进程,但是需要一定的特权 。Solaris 10一共定义了48个特权,可以赋予不同的用户和进程。想要从大区里控制所有的进程,需要proc_zone特权,一般只有大区的root用户才有。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-2 14:18 | 显示全部楼层
13。虚拟区的文件系统
每一个虚拟区都有自己的根目录(/),这个根目录在大区有自己的绝对路径,是应该在设立虚拟区的时候指定的。

不象chroot(2)命令,虚拟区里的进程不能够操作超出虚拟区的范围。

虚拟区的文件系统有三种方式存在,可以是只读方式从大区mount上去的,也可以是安装的时候从大区复制过去的,还可以是读写方式mount上去的。缺省情况下,/usr, /lib, /sbin, 和 /platform 四个文件系统是采用只读方式的,这样一来节省了空间,二来安装公用程序比较方便,三来打补丁的时候比较快捷,只要打在大区,各个虚拟区也就都有了。 /etc和/opt两个文件系统是被复制到各个虚拟区的。大区的其它文件系统可以用读写方式mount到虚拟区去。NFS客户端程序可以在虚拟区运行,但是NFS服务器到目前为止仍然不可以。另外,automounter 也可以在虚拟区运行。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-2 15:47 | 显示全部楼层
14。虚拟区的网络
每一个虚拟区除了有一个区名(zonename) 之外,都有自己的IP地址,可以是IPv4或IPv6的,甚至可以有多个IP地址。另外还有自己的主机名(hostname),端口范围(port space),和命名服务(naming service)。

在设置安装一个虚拟区的时候,可以用zonecfg指令中的add net选项来指定网络接口和IP地址。 在一个虚拟区运行当中,也可以用ifconfig指令来分配另外的IP地址给这个虚拟区。

虚拟区之间的相互通讯,虽然是通过网络通讯协议来实现,但是事实上是在Solaris内部完成的,而不是真正通过网络,所以虚拟区之间通讯是高带宽,低延迟,不会给网络造成负担。

同时,一个虚拟区能看到自己的网络使用情况,但是不能看到其他虚拟区的网络使用情况。应用程序可以绑定到INADDR_ANY(*.*.*.*)地址上去,也就是所有的地址,但是只能看到在自己的虚拟区里的通讯流量。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-2 16:40 | 显示全部楼层
15。身份
每一个虚拟区都有自己的节点名(node name),域名(RPC domain name),时区,语言设定和命名服务(例如LDAP,NIS)。在第一次启动进入虚拟区的时候,系统会自动调用sysidtool(1M)命令来帮助设置这些内容。

虚拟区有自己单独的/etc/passwd文件,这意味着虚拟区可以拥有自己的root用户,虽然权限受到一定的限制。

不同虚拟区所拥有的用户名也可以是不同的,还可以有不同的命名服务(name service)。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-2 16:53 | 显示全部楼层
16。服务管理
虚拟区也可以和服务管理设施(Service Management Facility, smf(5))结合使用。每一个虚拟区有自己的储藏室(repository),并在虚拟区内运行自己的svc.configd(1M)和 svc.startd(1M)实例。每一个虚拟区有自己的contract(4)文件系统。需要注意的是,虚拟区本身(尚)不能作为一种服务来实现。

虚拟区事实上一个学习SMF,并测试服务转变的很好的工具。

到目前为止,虚拟区支持标准多用户运行模式和单用户运行模式(用boot -s启动),而不支持其它的模式。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2005-9-5 08:52 | 显示全部楼层
原帖由 xiaobailong 于 2005-9-2 15:18 发表
13。虚拟区的文件系统
每一个虚拟区都有自己的根目录(/),这个根目录在大区有自己的绝对路径,是应该在设立虚拟区的时候指定的。

不象chroot(2)命令,虚拟区里的进程不能够操作超出虚拟区的范围。

虚拟区的文件系统有三种方式存在,可以是只读方式从大区mount上去的,也可以是安装的时候从大区复制过去的,还可以是读写方式mount上去的。缺省情况下,/usr, /lib, /sbin, 和 /platform 四个文件系统是采用只读方式的,这样一来节省了空间,二来安装公用程序比较方便,三来打补丁的时候比较快捷,只要打在大区,各个虚拟区也就都有了。 /etc和/opt两个文件系统是被复制到各个虚拟区的。大区的其它文件系统可以用读写方式mount到虚拟区去。NFS客户端程序可以在虚拟区运行,但是NFS服务器到目前为止仍然不可以。另外,automounter 也可以在虚拟区运行

我想问一下
1。如果是只读方的话,那是不是就不能实现在不同的虚拟区上安装不同的软件了?
2。如果是读写方式Mount的,会不会对大区的安全性有影响?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-5 10:44 | 显示全部楼层
原帖由 zat 于 2005-9-5 09:52 发表

我想问一下
1。如果是只读方的话,那是不是就不能实现在不同的虚拟区上安装不同的软件了?
2。如果是读写方式Mount的,会不会对大区的安全性有影响?



以缺省方式创建的虚拟区,根目录/是虚拟化了的一个文件系统;/usr, /lib, /sbin, /platform四个文件系统是只读方式;/etc, /opt两个文件系统是从大区复制到虚拟区的。

通常安装在/opt或其它子目录例如/mysoftware的软件,在每个虚拟区内都是不同的。如果软件需要安装到上述四个只读方式的目录下的时候,就用到读写方式mount.

举例来说, oracle需要安装到/oracle目录下,这个目录在虚拟区里本身就是可读可写可以创建的。

另一个例子,sap软件一般需要安装到/usr/sap子目录下。这个时候可以先用缺省方式创建一个虚拟区,/usr目录是只读方式的。然后用zonecfg里的add fs指令,把大区里创建好的一个文件系统以lofs方式mount到虚拟区里的/usr/sap上去,实现可读可写。

以这种lofs读写方式mount的文件系统,在大区里是不能够进行读写操作的,连大区的root也不行,所以不会对大区有安全性的影响。

除了lofs mount之外,另有几种其它的mount方式,其中有一些,例如直接mount raw disks,就可能会有安全隐患,在mount之前需要事先规划清楚才能杜绝这些隐患。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-5 10:55 | 显示全部楼层
17。进程间的通信
IPC机制例如System V IPC, STREAMS, sockets, libdoor(3LIB) 以及loopback传输在虚拟区之内都工作良好。

重要的IPC命名空间在虚拟区内都被虚拟化了。(例如?何为虚拟化?)

虚拟区之间的通讯通过网络协议和软件回送(loopback)来进行。

Global zone can setup rendezvous too, although this is not commonly needed.
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+1, 2025-2-7 10:18 , Processed in 1.847444 second(s), 16 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表