使用 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 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. |
使用 SUNWlx 模板创建新 lx 区域配置。
zonecfg:lx-zone> create -t SUNWlx |
或者,也可以创建空区域并显式设置标记:
zonecfg:lx-zone> create -b zonecfg:lx-zone> set brand=lx |
设置区域路径,在此过程中为 /export/home/lx-zone。
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 权限用于在实时类中运行进程。
将 CPU 份额值设置为 5。
zonecfg:lx-zone> set cpu-shares=5 |
添加内存上限。
zonecfg:lx-zone> add capped-memory |
添加文件系统。
zonecfg:lx-zone> add fs |
设置文件系统的挂载点,在此过程中为 /export/linux/local。
zonecfg:lx-zone:fs> set dir=/export/linux/local |
指定全局区域中的 /opt/local 将要在所配置的区域中挂载为 /export/linux/local。
zonecfg:lx-zone:fs> set special=/opt/local |
在非全局区域中,/export/linux/local 文件系统是可读写的。
指定文件系统类型,在此过程中为 lofs。
zonecfg:lx-zone:fs> set type=lofs |
此类型指明了内核与文件系统的交互方式。
结束文件系统指定。
zonecfg:lx-zone:fs> end |
可多次执行此步骤来添加多个文件系统。
添加网络虚拟接口。
zonecfg:lx-zone> add net |
以下面格式设置 IP 地址:区域的 IP 地址/网络掩码。在此过程中使用了 10.6.10.233/24。
zonecfg:lx-zone:net> set address=10.6.10.233/24 |
设置网络接口的物理设备类型,在此过程中为 bge 设备。
zonecfg:lx-zone:net> set physical=bge0 |
结束指定。
zonecfg:lx-zone:net> end |
可多次执行此步骤来添加多个网络接口。
通过使用 attr 资源类型在此区域中启用全局区域中存在的音频设备。
zonecfg:lx-zone> add attr |
检验区域的配置。
zonecfg:lx-zone> verify |
提交区域的配置。
zonecfg:lx-zone> commit |
退出 zonecfg 命令。
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 |