跳过导航链接 | |
退出打印视图 | |
系统管理指南:Oracle Solaris Containers-资源管理和 Oracle Solaris Zones Oracle Solaris 10 1/13 Information Library (简体中文) |
15. Solaris Management Console 中的资源控制功能
24. Oracle Solaris 10 9/10:将物理 Oracle Solaris 系统迁移到区域中(任务)
25. 关于安装了区域的 Oracle Solaris 系统上的软件包和修补程序(概述)
26. 在安装了区域的 Oracle Solaris 系统上添加和删除软件包和修补程序(任务)
27. Oracle Solaris Zones 管理(概述)
28. Oracle Solaris Zones 管理(任务)
29. 升级安装了非全局区域的 Oracle Solaris 10 系统
30. 各种 Oracle Solaris Zones 问题的故障排除
34. 关于安装、引导、停止、克隆和卸载 lx 标记区域(概述)
使用 zonecfg(1M) 手册页中所述的 zonecfg 命令可执行以下操作。
创建区域配置
检验是否具备所需的全部信息
提交非全局区域配置
提示 - 如果您知道将要使用 CD 或 DVD 在 lx 标记区域中安装应用程序,请在最初配置标记区域时,使用 add fs 在全局区域内添加对 CD 或 DVD 介质的只读访问权限。然后可以使用 CD 或 DVD 在标记区域中安装产品。
当使用 zonecfg 实用程序配置区域时,您可以使用 revert 子命令来撤消资源设置。请参见如何恢复区域配置。
配置多个 lx 标记区域的脚本中提供了用于在系统中配置多个区域的脚本。
要显示非全局区域配置,请参见如何显示标记区域的配置。
提示 - 配置完标记区域之后,最好复制该区域的配置。将来您可以使用此备份来恢复区域。以超级用户或主管理员的身份,将区域 lx-zone 的配置输出到文件。以下示例使用名为 lx-zone.config 的文件。
global# zonecfg -z lx-zone export > lx-zone.config
有关更多信息,请参见如何恢复单个非全局区域。
请注意,不能在启用标签的 Trusted Oracle Solaris 系统中使用 lx 标记区域。zoneadm 命令将不检验配置。
要执行此过程,您必须是全局区域中的全局管理员。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的"使用 RBAC 和 Solaris 管理工具(任务列表)"。
此示例过程中使用名称 lx-zone。
global# zonecfg -z lx-zone
如果是第一次配置该区域,则可以看到以下系统消息:
lx-zone: No such zone configured Use 'create' to begin configuring a new zone.
zonecfg:lx-zone> create -t SUNWlx
或者,也可以创建空区域并显式设置标记:
zonecfg:lx-zone> create -b zonecfg:lx-zone> set brand=lx
zonecfg:lx-zone> set zonepath=/export/home/lx-zone
如果设置为 true,则在引导全局区域时将自动引导该区域。请注意,要自动引导区域,还必须启用区域服务 svc:/system/zones:default。缺省值为 false。
zonecfg:lx-zone> set autoboot=true
zonecfg:lx-zone> set bootargs="-i=altinit"
此示例使用名为 pool_default 的缺省池。
zonecfg:lx-zone> set pool=pool_default
因为资源池允许进行一次可选的调度类分配,所以可以使用池功能来设置一个缺省的调度程序,而不是非全局区域的系统缺省值。有关说明,请参见如何将池与调度类关联和创建配置。
zonecfg:lx-zone> set limitpriv="default,proc_priocntl"
proc_priocntl 权限用于在实时类中运行进程。
zonecfg:lx-zone> set cpu-shares=5
zonecfg:lx-zone> add capped-memory
zonecfg:lx-zone:capped-memory> set physical=50m
zonecfg:lx-zone:capped-memory> set swap=100m
zonecfg:lx-zone:capped-memory> set locked=30m
zonecfg:lx-zone:capped-memory> end
zonecfg:lx-zone> add fs
zonecfg:lx-zone:fs> set dir=/export/linux/local
zonecfg:lx-zone:fs> set special=/opt/local
在非全局区域中,/export/linux/local 文件系统是可读写的。
zonecfg:lx-zone:fs> set type=lofs
此类型指明了内核与文件系统的交互方式。
zonecfg:lx-zone:fs> end
可多次执行此步骤来添加多个文件系统。
zonecfg:lx-zone> add net
zonecfg:lx-zone:net> set address=10.6.10.233/24
zonecfg:lx-zone:net> set physical=bge0
zonecfg:lx-zone:net> end
可多次执行此步骤来添加多个网络接口。
zonecfg:lx-zone> add attr
zonecfg:lx-zone> verify
zonecfg:lx-zone> commit
zonecfg:lx-zone> exit
请注意,即使您没有在提示符下明确键入 commit,也会在键入 exit 或出现 EOF 时自动执行 commit。
提示 - zonecfg 命令还支持通过同一个 shell 调用多条子命令,这些子命令放在引号中并用分号进行分隔。
global# zonecfg -z lx-zone "create -t SUNWlx; set zonepath=/export/home/lx-zone"
请参见安装和引导 lx 标记区域来安装已提交的区域配置。
可以使用此脚本在系统中配置和引导多个区域。此脚本采用以下参数:
要创建的区域个数
zonename 前缀
可用作基目录的目录
要执行此脚本,您必须是全局区域中的全局管理员。全局管理员在全局区域中拥有超级用户权限或承担主管理员角色。
#!/bin/ksh # # Copyright 2006 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # #ident "%Z%%M% %I% %E% SMI" if [[ -z "$1" || -z "$2" || -z "$3" || -z "$4" ]]; then echo "usage: $0 <#-of-zones> <zonename-prefix> <basedir> <template zone>" exit 2 fi if [[ ! -d $3 ]]; then echo "$3 is not a directory" exit 1 fi state=`zoneadm -z $4 list -p 2>/dev/null | cut -f 3 -d ":"` if [[ -z "$state" || $state != "installed" ]]; then echo "$4 must be an installed, halted zone" exit 1 fi template_zone=$4 nprocs=`psrinfo | wc -l` nzones=$1 prefix=$2 dir=$3 ip_addrs_per_if=`ndd /dev/ip ip_addrs_per_if` if [ $ip_addrs_per_if -lt $nzones ]; then echo "ndd parameter ip_addrs_per_if is too low ($ip_addrs_per_if)" echo "set it higher with 'ndd -set /dev/ip ip_addrs_per_if <num>" exit 1 fi i=1 while [ $i -le $nzones ]; do zoneadm -z $prefix$i clone $template_zone > /dev/null 2>&1 if [ $? != 0 ]; then echo configuring $prefix$i F=$dir/$prefix$i.config rm -f $F echo "create -t SUNWlx" > $F echo "set zonepath=$dir/$prefix$i" >> $F zonecfg -z $prefix$i -f $dir/$prefix$i.config 2>&1 | \ sed 's/^/ /g' else echo "skipping $prefix$i, already configured" fi i=`expr $i + 1` done i=1 while [ $i -le $nzones ]; do j=1 while [ $j -le $nprocs ]; do if [ $i -le $nzones ]; then if [ `zoneadm -z $prefix$i list -p | \ cut -d':' -f 3` != "configured" ]; then echo "skipping $prefix$i, already installed" else echo installing $prefix$i mkdir -pm 0700 $dir/$prefix$i chmod 700 $dir/$prefix$i zoneadm -z $prefix$i install -s -d /path/to/ISOs > /dev/null 2>&1 & sleep 1 # spread things out just a tad fi fi i=`expr $i + 1` j=`expr $j + 1` done wait done i=1 para=`expr $nprocs \* 2` while [ $i -le $nzones ]; do date j=1 while [ $j -le $para ]; do if [ $i -le $nzones ]; then echo booting $prefix$i zoneadm -z $prefix$i boot & fi j=`expr $j + 1` i=`expr $i + 1` done wait done
要执行此过程,您必须是全局区域中的全局管理员。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的"使用 RBAC 和 Solaris 管理工具(任务列表)"。
global# zonecfg -z zonename info