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

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

楼主: xiaobailong

再说 Solaris Containers

[复制链接]
 楼主| 发表于 2005-9-5 10:56 | 显示全部楼层
18。设备
虚拟区内包含一些“安全”的伪设备(pseudo devices) ,这些设备都存在于/dev 目录下。事实上,/dev目录在虚拟区内是可见的,而 /devices不可见。一些设备,例如/dev/random, /dev/console被认为是安全的,而另外一些例如/dev/ip被认为不安全。物理设备文件,例如raw盘,也可以被放在虚拟区内使用,但是通常没必要这么做。

通常使用zonecfg里的add device命令往虚拟区内增加设备。

虚拟区可以修改设备文件的参数,但是不可以mknod(2)。也就是说,所有的设备都必须在大区内可见,然后才可以增加到虚拟区内。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-5 12:15 | 显示全部楼层
19。动态跟踪(DTrace)
动态跟踪也是Solaris 10的一个很有吸引力的新功能,对debug非常有用。不过到目前为止,动态跟踪只能够在大区内使用。但是可以使用zonename变量动态跟踪一些内容。

例如,计算虚拟区的系统调用(system calls)的数量,可以在大区内执行如下命令来完成:
global# dtrace -n 'syscall:::/zonename=="red"/ {@[probefunc]=count()}'

另外也可以用curpsinfo->pr_zoneid来获取虚拟区内的进程列表。

DTrace和虚拟区共同使用的话,在跟踪调试多层(multi-tier)应用程序的时候,特别有用。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-5 12:46 | 显示全部楼层
20。微处理器(CPU)和虚拟区
缺省情况下,所有的虚拟区共享所有的微处理器。

当设置了资源池(resource pool, 前面讲过的)之后,就能对虚拟区所能看到和使用的为处理进行一定的限制。一个虚拟区只能见到自己绑定的那个资源池所包含的微处理器集(process set,包含一个或多个选定的微处理器)。那些用来获取CPU使用信息的命令,例如iostat(1M), mpstat(1M), prstat(1M), psrinfo(1M), sar(1M)等等,也都被虚拟化,而只提供这个资源池里包含的微处理器集的使用情况。在虚拟区使用sysconf(3C)和getloadavg可以得到微处理器集所含的CPU的数量。大量的kstat(3KSTAT)关于cpu, cpu_info和cpu_stat的统计数值也都被虚拟化了,从而只包含虚拟区的内容。

通过这些虚拟化措施,使软件的使用费可以限制在虚拟区的范围内。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-5 13:05 | 显示全部楼层
21。什么程序可以在虚拟区内运行
那么要想软件可以在虚拟区内运行,需要满足哪些条件呢?

首先,凡是可以不需要root权限就可以运行的程序,都可以直接在虚拟区内运行,不需要任何改动。

其次,那些需要root权限对网络和文件系统进行操作的应用程序,如果不需要其它的I/O操作,也可以直接在虚拟区内运行,不需要任何改动。

第三,需要root权限区对一些设备进行直接操作的应用程序,例如磁盘分区,只有在对虚拟区进行相应的设置之后,才可以直接运行。这些程序也不需要改动。但是这样做有可能会产生安全隐患,应事先考虑周全,尽量避免。(这一点前面 zat 也问到了。)

而不可以在虚拟区内运行的也有一些,例如,那些需要对/dev/kmem设备进行直接操作的应用。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-5 13:45 | 显示全部楼层
22。开发员要知道的
需要反复强掉的是,虚拟区没有改变现有的Solaris的应用程序接口,包括二进制接口(ABI)和编程接口(API)。因此,那些不需要root权限就能运行的程序,可以不做任何修改就直接在虚拟区内运行。

需要特殊权限的应用程序,绝大多数情况下也没有问题,当然也有一些限制。首先,某些特殊权限(privileges)在虚拟区内是不被允许拥有的,所以有些系统调用(system calls)会由于权限不足而失败。值得一提的是,使用truss(1)命令可以掌握这些失败的系统调用的情况;而使用ppriv(1)命令可以修改特权设置。其次,某些特定的命名空间也受到一些限制。第三,不是所有设备都可以在虚拟区内使用,这一点前面关于设备的一段也说到了。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-5 13:51 | 显示全部楼层
23。受限制的特权
有一个表格,列出了受限制的特权(privileges)。在Solaris的48个privileges中,有19个在虚拟区受到了限制,它们是: cpc_cpu, dtrace_kernel, dtrace_proc, dtrace_user, gart_access, gart_map, net_rawaccess, proc_clock_highres, proc_lock_memory, proc_priocntl, proc_zone, sys_config, sys_devices, sys_ipc_config, sys_linkdir, sys_net_config, sys_res_config, sys_suser_compat, sys_time。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-5 13:52 | 显示全部楼层
24。其它限制
就像前面回答zat网友问题的时候已经说过的一样,一些软件需要在/usr目录内进行写操作,这个时候可以用lofs(7FS)方式mount文件系统到虚拟区内,而且不会有安全问题产生。

如果想要更多了解Solaris文件系统的结构,可以参看Solaris中filesystem(5)的man page.
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-5 14:09 | 显示全部楼层
25。虚拟区的状态模型
创建一个虚拟区,可以使用命令行方式,也可以使用图形用户界面,还可以使用配置文件来创建。常用的命令有zonecfg, zoneadm, zlogin。图形用户界面是Solaris Container Manager程序。配置文件则是xml格式的。

虚拟区主要有设置(Configured), 安装(Installed),准备(Ready)和运行(running)几个状态。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-5 16:01 | 显示全部楼层
26。文件类型和虚拟区安装
缺省情况下,所有在大区里打包的文件都会被安装到虚拟区。打包过的文件会被直接从大区的根目录复制到虚拟区,例外的情况是那些可修改文件 (editable,例如 configuration file)和变化文件(volatile, 例如log file或lock file), 详细信息可以在Solaris中查看pkgmap(4)的man page。

可修改文件和变化文件是从稀疏档案(sparse package archive)"stash"里复制过来的,因为"stash"里专门存放了这类文件的原始备份。

一个“节省类型的虚拟区”(sparse root zone)大约用掉70MB的空间,并且随着安装包的增多而增大。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2005-9-5 16:01 | 显示全部楼层
27。虚拟区其它安装细节
在设置虚拟区的时候,可以自己确定,哪些目录将会以只读方式mount到虚拟区,使用的参数是inherit-pkg-dir,像是从小区从大区继承了这些包一样。对于这些目录里的文件,只有他们的包的元数据(package metadata)被复制,程序文本(scripts)被执行。

安装虚拟区所需的时间和空间,取决于大区中包的数量,以及哪些包被“继承(inherited)”。

如果一个虚拟区没有从大区“继承”任何包,这种虚拟区被定义为"whole root zone",而那些继承了至少一个子目录的虚拟区被称为"sparse root zone"。

一个whole root zone的应用例子是:在虚拟区里安装和运行JES(Java Enterprise System)的话,需要whole root zone。
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:01 , Processed in 0.061497 second(s), 13 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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