跳过导航链接 | |
退出打印视图 | |
系统管理指南:Oracle Solaris Containers-资源管理和 Oracle Solaris Zones Oracle Solaris 10 1/13 Information Library (简体中文) |
15. Solaris Management Console 中的资源控制功能
Solaris 10 8/07:如何清除区域配置中的属性类型
Solaris 10 3/05 至 Solaris 10 11/06:如何修改区域配置中的属性类型
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 命令可执行以下操作。
创建区域配置
检验是否具备所需的全部信息
提交非全局区域配置
也可以使用 zonecfg 命令永久指定全局区域的资源管理设置。
当使用 zonecfg 实用程序配置区域时,您可以使用 revert 子命令来撤消资源设置。请参见如何恢复区域配置。
在系统上配置多个区域的脚本在配置多个区域的脚本中提供。
有关如何显示非全局区域配置,请参见如何显示非全局区域的配置。
请注意,创建本地非全局区域的必需元素只有 zonename 和 zonepath 属性。其他资源和属性都是可选的。有些可选的资源还需要在备选项之间进行选择,例如决定使用 dedicated-cpu 资源还是 capped-cpu 资源。有关可用的 zonecfg 属性和资源的信息,请参见区域配置数据。
要执行此过程,您必须是全局区域中的全局管理员。
有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的"使用 RBAC 和 Solaris 管理工具(任务列表)"。
此示例过程中使用名称 my-zone。
global# zonecfg -z my-zone
如果是第一次配置该区域,则可以看到以下系统消息:
my-zone: No such zone configured Use 'create' to begin configuring a new zone.
此过程使用缺省设置。
zonecfg:my-zone> create
zonecfg:my-zone> set zonepath=/export/home/my-zone
对于 Solaris 10 10/08 发行版之前的发行版,不要为 ZFS 设置 zonepath。
如果设置为 true,则在引导全局区域时将自动引导该区域。请注意,要自动引导区域,还必须启用区域服务 svc:/system/zones:default。缺省值为 false。
zonecfg:my-zone> set autoboot=true
zonecfg:my-zone> set bootargs="-m verbose"
zonecfg:my-zone> add dedicated-cpu
zonecfg:my-zone:dedicated-cpu> set ncpus=1-2
zonecfg:my-zone:dedicated-cpu> set importance=10
缺省设置为 1。
zonecfg:my-zone:dedicated-cpu> end
zonecfg:my-zone> set limitpriv="default,sys_time"
该行添加了将系统时钟设置为缺省特权集的功能。
zonecfg:my-zone> set scheduling-class=FSS
zonecfg:my-zone> add capped-memory
zonecfg:my-zone:capped-memory> set physical=50m
zonecfg:my-zone:capped-memory> set swap=100m
zonecfg:my-zone:capped-memory> set locked=30m
zonecfg:my-zone:capped-memory> end
zonecfg:my-zone> add fs
zonecfg:my-zone:fs> set dir=/usr/local
zonecfg:my-zone:fs> set special=/opt/zones/my-zone/local
在非全局区域中,/usr/local 文件系统是可读写的。
zonecfg:my-zone:fs> set type=lofs
此类型指明了内核与文件系统的交互方式。
zonecfg:my-zone:fs> end
可多次执行此步骤来添加多个文件系统。
zonecfg:my-zone> set hostid=80f0c086
zonecfg:my-zone> add dataset
zonecfg:my-zone> set name=tank/sales
zonecfg:my-zone> end
不要执行此步骤来创建一个没有任何共享文件系统的完全根区域。请参见磁盘空间需求中对完全根区域的讨论。
zonecfg:my-zone> add inherit-pkg-dir
zonecfg:my-zone:inherit-pkg-dir> set dir=/opt/sfw
注 - 区域的打包数据库将更新,以反映软件包。使用 zoneadm 安装区域之后,便不能修改或删除这些资源。
zonecfg:my-zone:inherit-pkg-dir> end
可多次执行此步骤来添加多个共享文件系统。
注 - 如果要创建一个完全根区域,并且已经使用 inherit-pkg-dir 添加了缺省的共享文件系统资源,则必须使用 zonecfg 删除这些缺省的 inherit-pkg-dir 资源,才能安装区域:
zonecfg:my-zone> remove inherit-pkg-dir dir=/lib
zonecfg:my-zone> remove inherit-pkg-dir dir=/platform
zonecfg:my-zone> remove inherit-pkg-dir dir=/sbin
zonecfg:my-zone> remove inherit-pkg-dir dir=/usr
zonecfg:my-zone> set ip-type=exclusive
注 - 在 add net 步骤中只会指定物理设备类型。
zonecfg:my-zone> add net
zonecfg:my-zone:net> set address=192.168.0.1
zonecfg:my-zone:net> set physical=hme0
zonecfg:my-zone:net> set defrouter=10.0.0.1
zonecfg:my-zone:net> end
可多次执行此步骤来添加多个网络接口。
zonecfg:my-zone> add device
zonecfg:my-zone:device> set match=/dev/sound/*
zonecfg:my-zone:device> end
可多次执行此步骤来添加多个设备。
zonecfg:my-zone> set max-sem-ids=10485200
可多次执行此步骤来添加多个资源控制。
zonecfg:my-zone> add attr
zonecfg:my-zone> verify
zonecfg:my-zone> commit
zonecfg:my-zone> exit
请注意,即使您没有在提示符下明确键入 commit,也会在键入 exit 或出现 EOF 时自动执行 commit。
提示 - zonecfg 命令还支持通过同一个 shell 调用多条子命令,这些子命令放在引号中并用分号进行分隔。
global# zonecfg -z my-zone "create ; set zonepath=/export/home/my-zone"
请参见安装和引导区域来安装已提交的区域配置。
可以使用此脚本在系统中配置和引导多个区域。此脚本采用以下参数:
要创建的区域个数
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" ]]; then echo "usage: $0 <#-of-zones> <zonename-prefix> <basedir>" exit 2 fi if [[ ! -d $3 ]]; then echo "$3 is not a directory" exit 1 fi 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 list > /dev/null 2>&1 if [ $? != 0 ]; then echo configuring $prefix$i F=$dir/$prefix$i.config rm -f $F echo "create" > $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 > /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 while [ $i -le $nzones ]; do echo setting up sysid for $prefix$i cfg=$dir/$prefix$i/root/etc/sysidcfg rm -f $cfg echo "network_interface=NONE {hostname=$prefix$i}" > $cfg echo "system_locale=C" >> $cfg echo "terminal=xterms" >> $cfg echo "security_policy=NONE" >> $cfg echo "name_service=NONE" >> $cfg echo "timezone=US/Pacific" >> $cfg echo "root_password=Qexr7Y/wzkSbc" >> $cfg # 'l1a' i=`expr $i + 1` 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