JavaScript is required to for searching.
跳过导航链接
退出打印视图
手册页第 1M 部分:系统管理命令     Oracle Solaris 11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

简介

系统管理命令-第 1 单元

系统管理命令-第 2 单元

系统管理命令-第 3 单元

update_drv(1M)

useradd(1M)

userdel(1M)

usermod(1M)

utmp2wtmp(1M)

utmpd(1M)

uucheck(1M)

uucico(1M)

uucleanup(1M)

uucpd(1M)

uusched(1M)

Uutry(1M)

uutry(1M)

uuxqt(1M)

vbiosd(1M)

vdiskadm(1M)

virt-convert(1M)

virtinfo(1M)

vmstat(1M)

vntsd(1M)

volcopy(1M)

volcopy_ufs(1M)

vrrpadm(1M)

vrrpd(1M)

vscanadm(1M)

vscand(1M)

vtdaemon(1M)

wall(1M)

wanboot_keygen(1M)

wanboot_keymgmt(1M)

wanboot_p12split(1M)

wanbootutil(1M)

wbemadmin(1M)

wbemconfig(1M)

wbemlogviewer(1M)

wcadmin(1M)

whodo(1M)

wpad(1M)

wracct(1M)

wtmpfix(1M)

wusbadm(1M)

ypbind(1M)

ypinit(1M)

ypmake(1M)

ypmap2src(1M)

yppasswdd(1M)

yppoll(1M)

yppush(1M)

ypserv(1M)

ypserv_resolv(1M)

ypset(1M)

ypstart(1M)

ypstop(1M)

ypupdated(1M)

ypxfr(1M)

ypxfr_1perday(1M)

ypxfr_1perhour(1M)

ypxfr_2perday(1M)

ypxfrd(1M)

zdb(1M)

zdump(1M)

zfs(1M)

zfs_allow(1M)

zfs_encrypt(1M)

zfs_share(1M)

zic(1M)

zoneadm(1M)

zoneadmd(1M)

zonecfg(1M)

zonep2vchk(1M)

zonestatd(1M)

zpool(1M)

zstreamdump(1M)

zonecfg

- 设置区域配置

用法概要

zonecfg -z zonename
zonecfg -z zonename subcommand
zonecfg -z zonename -f command_file
zonecfg help

描述

zonecfg 实用程序可以创建、修改和列出区域的配置。创建和修改功能只可供授权的用户使用,并且要求使用 root 的有效用户 ID 来执行该进程。否则,它将以只读模式运行。

区域的配置由若干个资源和属性组成。

为了简化用户界面,zonecfg 采用了范围的概念。缺省范围为全局。

zonecfg 命令的以下用法概要适用于交互式使用模式:

zonecfg -z zonename subcommand

通过 zonecfg 更改的参数不会影响正在运行的区域。必须重新引导区域才能使更改生效。

除了创建和修改区域,zonecfg 实用程序还可以用来持久性地指定全局区域的资源管理设置。

在下面的文本中,rctl 表示 resource control(资源控制)的缩写。请参见 resource_controls(5)

每个区域都配有一个关联标记。该标记决定了在区域中使用的用户级环境,以及在安装、引导或关闭区域时区域的各种行为。在安装区域后,无法更改该标记。缺省标记由全局区域中安装的分发软件决定。有些标记不能支持某些 zonecfg 属性和资源。有关每个标记的更多详细信息,请参见特定于标记的手册页。有关标记的概述,请参见 brands(5) 手册页。

资源

支持下列资源类型:

attr

通用属性。

capped-cpu

CPU 的使用限制。

capped-memory

物理内存、交换内存和锁定内存的限制。

dataset

ZFS 数据集。

dedicated-cpu

当此区域运行时,专用于此区域的系统处理器的子集。

device

设备.

fs

文件系统。

net

网络接口。

anet

自动网络接口。

admin

受委托的管理员。

rctl

资源控制。

稀疏根和完全根非全局区域

以前版本的 Solaris 提供了稀疏根区域概念。该功能与 SVr4 包管理系统密切相关,旨在节省磁盘空间并减少管理工作。

在选择要在区域中安装哪些包方面,新的包管理系统 IPS 提供了更大的灵活性。这种灵活性以及文件系统技术方面的优势(其中值得一提的是 ZFS 重复数据删除)意味着删除稀疏根区域最为明智。通过组合利用 IPS 包管理和文件系统的优点,可以使所有区域都具备稀疏根区域的优点。

属性

每种资源类型有一个或多个属性。另外还有一些全局属性,即整个配置的属性,而不是某个特定资源的属性。

支持下列属性:

(全局)

zonename

(全局)

zonepath

(全局)

autoboot

(全局)

bootargs

(全局)

pool

(全局)

limitpriv

(全局)

brand

(全局)

cpu-shares

(全局)

hostid

(全局)

max-lwps

(全局)

max-msg-ids

(全局)

max-processes

(全局)

max-sem-ids

(全局)

max-shm-ids

(全局)

max-shm-memory

(全局)

scheduling-class

(全局)

fs-allowed

(全局)

file-mac-profile

fs

dirspecialrawtypeoptions

net

addressallowed-addressconfigure-allowed-addressphysicaldefrouter

anet

linknamelower-linkallowed-addressconfigure-allowed-addressdefroutermac-addressmac-slotmac-prefixmtumaxbwpriorityvlan-idrxfanoutrxringstxringslink-protectionallowed-dhcp-cids

device

match

rctl

namevalue

attr

nametypevalue

dataset

namealias

dedicated-cpu

ncpusimportance

capped-memory

physicalswaplocked

capped-cpu

ncpus

admin

user、auths

对于与这些名称配对的属性值,它们可能是简单值、复杂值,也可能是列表。允许的类型是特定于属性的。简单值是字符串,可根据需要用引号引起来。复杂值具有语法:

(<name>=<value>,<name>=<value>,...)

其中每个 <value> 都是简单值,<name> 字符串在给定的属性中是唯一的。列表具有语法:

[<value>,...]

其中每个 <value> 可以是简单值或复杂值。只包含单个值(简单值或复杂值)的列表等效于在不使用列表语法的情况下指定该值。例如,"foo" 等效于 "[foo]"。列表可以为空(用 "[]" 表示)。

在解释属性值时,zonecfg 接受如 fnmatch(5) 中所指定的正则表达式。请参见“示例”部分。

属性类型如下所述:

全局:zonename

区域的名称。

全局:zonepath

区域的文件系统的路径。

全局:autoboot

布尔值,指示在系统引导时是否应自动引导某个区域。请注意,如果禁用了区域服务,则无论此属性的设置如何,都不会自动引导区域。可以使用 svcadm 命令启用区域服务,例如:

# svcadm enable svc:/system/zones:default

enable(启用)替换为 disable(禁用)可禁用区域服务。请参见 svcadm(1M)

全局:bootargs

要传递到区域引导的参数(选项);但如果向 "zoneadm boot" 命令提供了选项,则将优先采用提供给该命令的选项。有效的参数在 zoneadm(1M) 中进行了描述。

全局:pool

此区域在引导时必须绑定到的资源池的名称。此属性与 dedicated-cpu 资源不兼容。

全局:limitpriv

此区域中的任何进程可以获取的最大特权集。此属性应包含以逗号分隔的特权集指定,如 priv_str_to_set(3C) 中所述。可以从结果集中排除特权集,方法是在其名称前加上连字符 (-) 或叹号 (!)。在此上下文中,不支持特殊特权字符串 "zone"。如果特殊字符串 "default" 作为第一个标记出现在该属性中,它将扩展为一个安全的特权集,其中保留了 zones(5) 中所述的资源和安全隔离。缺少该属性或该属性为空等效于该安全特权集。

系统管理员在为区域配置特权时必须特别注意。无法通过此机制排除某些特权,因为它们是引导区域时所必需的。此外,不能将某些特权授予给区域,因为如果授予这些特权可能会导致一个区域中的进程不当地影响其他区域中的进程。在尝试“引导”或“准备”区域时,zoneadm(1M) 指示何时已在区域的特权集中添加或删除了某个无效的特权。

有关特权的描述,请参见 privileges(5)。命令 ppriv -l(请参见 ppriv(1))可以生成所有 Solaris 特权的列表。您可以按 ppriv 显示的格式指定特权。在 privileges(5) 中,特权以 PRIV_privilege_name 格式列出。例如,在此属性中指定的特权 sys_timeprivileges(5) 中将显示为 PRIV_SYS_TIME

全局:brand

区域的标记类型。

全局:ip-type

区域既可以拥有自己的独占 IP 实例(缺省),也可以与全局区域共享 IP 实例。在缺省区域模板 SYSdefault 中,ip-type 设置为 exclusive。在提供的另外一个 SYSdefault-shared-ip 模板中,ip-type 设置为 shared。

此属性可以接受的值为 exclusiveshared

全局:hostid

区域可以模仿 32 位主机标识符以简化系统整合。缺省情况下,区域的 hostid 属性是空的,这意味着区域不模拟主机标识符。区域主机标识符必须是 0 到 FFFFFFFE 之间的十六进制值。0x0X 前缀是可选的。大写和小写十六进制数字都可以接受。

全局:fs-allowed

可以在区域中挂载的其他文件系统的逗号分隔列表;例如,ufs,pcfs。缺省情况下,只能挂载 hsfs(7FS) 和网络文件系统。

此属性不适用于通过 add fsadd dataset 挂载到区域中的文件系统。


注意

注意 - 如果允许挂载非缺省文件系统,将使得区域管理员能够使用伪造的文件系统映像来危害系统安全,因此不支持此类挂载。


全局:file-mac-profile

定义文件系统的哪些部分不使用只读策略,即,允许区域写入文件系统的哪些部分。

该属性当前支持 4 个值:nonestrictfixed-configurationflexible-configuration

none 使该区域与常规读取/写入区域完全相同。strict 禁止使用只读策略以外的策略。fixed-configuration 允许区域写入 /var 中及其子目录下的文件,但包含配置文件的目录除外:

/var/ld
/var/lib/postrun
/var/pkg
/var/spool/cron,
/var/spool/postrun
/var/svc/manifest
/var/svc/profiles

flexible-configurationfixed-configuration 相当,但还允许写入 /etc 中的文件。

fs:dir、special、raw、type、options

确定文件系统的挂载方式、挂载位置等信息时所需的值。请参见 mount(1M)mount(2)fsck(1M)vfstab(4)

net:address、allowed-address、configure-allowed-address、physical、defrouter

net 资源表示为一个区域分配的物理网络资源。在分配之前,该资源必须在全局区域中存在。

网络接口的网络地址和物理接口名称。网络地址为以下地址之一:

  • 有效的 IPv4 地址,后面可以跟有可选的 / 和前缀长度;

  • 有效的 IPv6 地址,必须后接 / 和前缀长度;

  • 可解析为 IPv4 地址的主机名。

请注意,不支持解析为 IPv6 地址的主机名称。

物理接口名称即网络接口名称。

用来指定可选的缺省路由器值的方式与指定网络地址的方式类似,但它不能后跟 /(斜杠)和网络前缀长度。要正确地使用 defrouter 功能,使用该属性的区域所在的子网必须不同于全局区域所在的子网。此外,使用不同的 defrouter 设置的每个区域(或区域集)必须位于不同的子网上。

可将区域配置为专用 IP 区域或共享 IP 区域。对于共享 IP 区域,必须同时设置 physical 和 address 属性;是否设置缺省路由器是可选的。在引导非全局区域之前,必须在全局区域中激活在 physical 属性中指定的接口。不过,如果全局区域不使用该接口,应在全局区域中将其配置为 down,并应在此处为该接口指定缺省路由器。不能为共享 IP 区域设置 allowed-address 属性。

对于独占 IP 区域,必须设置 physical 属性,不能设置address 属性。此外,还可以通过指定 allowed-address 属性来限制独占 IP 区域可以使用的 IP 地址集。如果未指定 allowed-address,则独占 IP 区域可以使用 net 资源的关联 physical 接口上的任何 IP 地址。而当指定了 allowed-address 时,独占 IP 区域将无法使用不在 physical 地址的 allowed-address 列表中的 IP 地址。如果 configure-allowed-address 设置为 true,在安装后初始引导时总是对接口配置 allowed-address。如果它设置为 false,在区域引导时将不会配置 allowed-address。缺省情况下,当指定 allowed-address 时,configure-allowed-address 将设置为 true。此外,如果填充了 allowed-address 列表,还可以选择指定 defrouter 属性。但是,如果指定了 defrouter 值且 configure-allowed-address 设置为 false,则将忽略 defrouter 值,并显示相应的警告消息。为 physical 属性指定的接口必须没有在全局区域中使用。如果通过 zonecfg 指定了 allowed-address 和缺省路由器,则这些属性将在通过 ipadm(1M) 在非全局独占 IP 区域中启用接口时(通常是在区域引导期间)应用于接口。非全局独占 IP 区域将无法向该接口应用任何其他地址,也无法传输具有指定 IP 版本的不同源地址的数据包。通过 zonecfg 设置的缺省路由器无法使用 -p 标志与 route(1M) 从非全局独占 IP 区域内永久删除。

请注意,不能在多个独占 IP 区域间共享单个数据链路。

anet:linkname、lower-link、allowed-address、configure-allowed-address、defrouter、mac-address、mac-slot、mac-prefix、mtu、maxbw、priority、vlan-id、rxfanout、rxrings、txrings、link-protection、allowed-dhcp-cids

anet 资源表示为独占 IP 区域自动创建的网络资源。zonecfg 使用缺省 SYSdefault 模板创建区域时,将在区域配置中自动包括具有以下属性的 anet 资源:

linkname=net0
lower-link=auto
mac-address=random
link-protection=mac-nospoof

当此类区域引导时,将自动确定 lower-link(请参见下文)并通过该链路为区域自动创建临时 VNIC。当区域停止时,将删除 lower-link 和 VNIC。

下面介绍了支持的属性。所有这些属性都是可选的。只允许全局区域修改自动创建的 VNIC 或其属性。如果 zonecfg 中设置的属性不能在创建 VNIC 时分配给 VNIC,则该区域将无法引导。

linkname

为自动创建的 VNIC 指定名称。缺省情况下,该属性将自动设置为 netN 格式(其中 N 为非负整数)的第一个可用名称(对于区域)。例如:net0net1 等。info 子命令会显示自动选择的 linkname

多个区域(包括全局区域)可同时使用同名链路。

lower-link

指定用来创建 VNIC 的链路。该属性的缺省值为 auto。在添加 anet 资源时,管理员可以显式指定一个值。链路可以是接受为 dladm create-vnic-l 选项的参数的任何链路(请参见 dladm(1M))。如果该属性设置为 linkname(而非 auto)且该链路不存在,则区域将无法引导。如果设置为 auto,每次区域引导时,zoneadmd(1M) 守护进程都会自动选择用来创建 VNIC 的链路。将会使用以下试探性操作选择链路:

  1. 第一个物理数据链路的链路状态是否为 up

  2. 如果不存在 up 状态,则使用名为 net0 的数据链路。

如果以上两点都不满足,区域将无法引导。

allowed-address

请参见 net 资源中对独占 IP 区域 allowed-address 属性的描述。

configure-allowed-address

请参见 net 资源中对独占 IP 区域 configure-allowed-address 属性的描述。

defrouter

请参见 net 资源中对独占 IP 区域 defrouter 属性的描述。

mac-address

根据指定值或关键字设置 VNIC 的 MAC 地址。如果该值不是关键字,则将其解释为单点传送 MAC 地址。支持的关键字包括:

  • factory:为 VNIC 分配出厂 MAC 地址。当请求出厂 MAC 地址时,可以使用 mac-slot 属性指定 MAC 地址插槽标识符。否则,将使用下一个可用的出厂 MAC 地址。

  • random:为 VNIC 分配随机 MAC 地址。使用 mac-prefix 属性指定一个前缀。否则,将使用缺省前缀,该前缀包含有效 IEEE OUI,并设置了本地位。这是缺省值。

  • auto:首先尝试使用出厂 MAC 地址。如果该地址不可用,则分配随机 MAC 地址。

如果选择了随机 MAC 地址,则将在区域引导和区域分离/连接后保留生成的地址。这将允许区域通过维护稳定的客户机 ID 来保留它们的 DHCP 租用,还会充分利用具有稳定 MAC 地址的其他优势。

mac-prefix

指定 MAC 地址前缀(如果请求随机 MAC 地址)。否则,将忽略该属性。

mac-slot

指定 MAC 地址插槽标识符(如果请求出厂 MAC 地址)。否则,将忽略该属性。

mtu

VNIC 的最大传输单元(以字节为单位)。请参见 dladm(1M) 中的 mtu 属性。

maxbw

指定 VNIC 的全双工带宽。请参见 dladm(1M) 中的 maxbw 属性。缺省情况下,VNIC 将使用在 lower-link 上设置的 maxbw,如果未进行设置,则不存在任何带宽限制。

priority

指定 VNIC 的相对优先级。有关支持的值和缺省值,请参见 dladm(1M) 中的 priority 属性。

vlan-id

对该 VNIC 启用 VLAN 标记并指定 VLAN 标记的 id。没有指定缺省值,这意味着如果未设置该属性,VNIC 将不会参与任何 VLAN。

rxfanout

指定接收端扇出线程数。请参见 dladm(1M) 中的描述。

rxrings

指定 VNIC 的接收环。有关支持的值和缺省值,请参见 dladm(1M) 中的 rxrings 属性。

txrings

指定 VNIC 的传送环。有关支持的值和缺省值,请参见 dladm(1M) 中的 txrings 属性。

link-protection

启用一个或多个链路保护类型(使用逗号分隔值)。有关支持的值,请参见 dladm(1M) 中的 protection 属性。它的缺省值为 mac-nospoof

请注意,向该属性添加 ip-nospoof 不会有任何效果,除非同时设置了 allowed-address。设置 allowed-address 会将 ip-nospoof 隐式添加到 link-protection 集,而清除 allowed-address 会将其删除。

allowed-dhcp-cids

设置该属性将对 VNIC 启用 dhcp-nospoof。有关详细信息,请参见 dladm(1M)

device:match

要匹配的设备名称。这可以是要匹配的模式,也可以是绝对路径名。请注意,设备资源和别名数据集可能会在 /dev/zvol 中存在名称空间冲突。请参见 dev(7FS)


注 - 一般情况下,向区域中添加设备可能会危害系统的安全性;请参见“附注”部分。


rctl:name、value

资源控制的名称和 priv/limit/action 三要素。请参见 prctl(1)rctladm(1M)。设置 rctl 值的首选方式是使用与特定 rctl 关联的全局属性名称。

attr:name、type、value

通用属性的名称、类型和值。type 必须是 intuintbooleanstring 中的一个,value 必须属于该类型。uint 的意思是不带符号的整数,即非负整数。

dataset:name、alias

要从区域内访问的 ZFS 数据集的名称。请参见 zfs(1M)。为每个数据集设置了别名,以便它在区域中显示为虚拟 ZFS 池。alias 是该虚拟池的名称。有关应用于 ZFS 池名称,并进而还应用于数据集别名值的名称限制,请参见 zpool(1M)。别名 rpool 是从区域的 rpool 数据集中保留的。请注意,别名数据集和设备资源可能会在 /dev/zvol 中存在名称空间冲突。请参见 dev(7FS)

全局:cpu-shares

要分配给此区域的公平份额调度器 (Fair Share Scheduler, FSS) 份额的数量。此属性与 dedicated-cpu 资源不兼容。此属性是设置 zone.cpu-shares rctl 的首选方式。

全局:max-lwps

此区域可同时使用的最大 LWP 数。此属性是设置 zone.max-lwps rctl 的首选方式。

全局:max-msg-ids

此区域允许的最大消息队列 ID 数。此属性是设置 zone.max-msg-ids rctl 的首选方式。

全局:max-processes

此区域可同时使用的最大进程表槽数。此属性是设置 zone.max-processes rctl 的首选方式。除非已显式设置了 max-lwps 属性,否则设置此属性会隐式地将 max-lwps 属性的值设置为进程槽数的 10 倍。

全局:max-sem-ids

此区域允许的最大信号量 ID 数。此属性是设置 zone.max-sem-ids rctl 的首选方式。

全局:max-shm-ids

此区域允许的最大共享内存 ID 数。此属性是设置 zone.max-shm-ids rctl 的首选方式。

全局:max-shm-memory

此区域允许的最大共享内存数量。此属性是设置 zone.max-shm-memory rctl 的首选方式。可以向此数量值应用一个比例(K、M、G、T),例如,1M 代表 100 万字节。

全局:scheduling-class

指定用于在某个区域中运行的进程的调度类。未指定此属性时,将按如下方式建立调度类:

  • 如果设置了 cpu-shares 属性或等效的 rctl,将使用调度类 FSS。

  • 如果既未设置 cpu-shares 也未设置等效的 rctl,且区域的 pool 属性引用了一个具有缺省调度类的池,则将使用该类。

  • 在任何其他情况下,将使用系统缺省调度类。

dedicated-cpu:ncpus、importance

应分配给该区域供其独占使用的 CPU 数量。该区域在引导时将创建一个池和处理器集。有关资源池的更多信息,请参见 pooladm(1M)poolcfg(1M)ncpu 属性可以指定单个值,也可以指定一个处理器数量范围(例如 1-4)。importance 属性是可选的;如果设置了该属性,则它指定 pset.importance 值供 poold(1M) 使用。如果使用了此资源,则在该区域引导时必须有足够的空闲处理器分配给该区域,否则该区域将不会引导。分配给该区域的处理器将不可供全局区域或其他区域使用。此资源与 poolcpu-shares 属性都不兼容。只能将此资源的单个实例添加到区域中。

capped-memory:physical、swap、locked

该区域可以使用的内存量上限。可以向其中的每个数量值应用一个比例(K、M、G、T),例如,1M 代表 100 万字节。其中每个属性都是可选的,但在添加此资源时必须至少设置一个属性。只能将此资源的单个实例添加到区域中。physical 属性设置该区域的 max-rss。这将由在全局区域中运行的 rcapd(1M) 强制实施。swap 属性是设置 zone.max-swap rctl 的首选方式。locked 属性是设置 zone.max-locked-memory rctl 的首选方式。

capped-cpu:ncpus

设置可供某个区域使用的 CPU 时间量的限制。使用的单元将换算为可供区域中的所有用户线程使用的对单个 CPU 的百分比,以小数表示(例如,.75),或以混合数字表示(整数和小数,例如,1.25)。ncpu 值为 1 表示一个 CPU 的 100%,值为 1.25 表示 125%,.75 表示 75%,依此类推。当设置有上限的区域中的项目有其自己的上限时,优先采用最小值。

capped-cpu 属性是 zone.cpu-cap 资源控制的别名,与 zone.cpu-cap 资源控制相关。请参见 resource_controls(5)

admin:user、auths

将区域管理授权委托给指定的用户或角色。该用户必须对应于一个有效的本地帐户。auths 的允许值包括:

login

允许在经过验证的情况下 zlogin(1) 到该区域。

manage

允许对所配置的区域进行正常管理。

copyfrom

允许将指定的区域作为用来克隆新区域的来源。

下表汇总了资源、属性名称和类型:

resource          property-name   type
(global)          zonename        simple
(global)          zonepath        simple
(global)          autoboot        simple
(global)          bootargs        simple
(global)          pool            simple
(global)          limitpriv       simple
(global)          brand           simple
(global)          ip-type         simple
(global)          hostid          simple
(global)          cpu-shares      simple
(global)          max-lwps        simple
(global)          max-msg-ids     simple
(global)          max-sem-ids     simple
(global)          max-shm-ids     simple
(global)          max-shm-memory  simple
(global)          scheduling-class simple
(global)          fs-allowed      list of simple
fs                dir             simple
                  special         simple
                  raw             simple
                  type            simple
                  options         list of simple
net               address         simple
                  allowed-address list of simple
                  configure-allowed-address simple
                  defrouter       list of simple
                  physical        simple
anet              linkname        simple
                  lower-link      simple
                  allowed-address list of simple
                  configure-allowed-address simple
                  defrouter       list of simple
                  mac-address     simple
                  mac-slot        simple
                  mac-prefix      simple
                  mtu             simple
                  maxbw           simple
                  priority        simple
                  vlan-id         simple
                  rxfanout        simple
                  rxrings         simple
                  txrings         simple
                  link-protection list of simple
                  allowed-dhcp-cids list of simple
device            match           simple
rctl              name            simple
                  value           list of complex
attr              name            simple
                  type            simple
                  value           simple
dataset           name            simple
                  alias           simple
dedicated-cpu     ncpus           simple or range
                  importance      simple

capped-memory     physical        simple with scale
                  swap            simple with scale
                  locked          simple with scale

capped-cpu        ncpus           simple

admin             user            simple
                  auths           list of simple

为进一步指定各个事项("rctl" 资源类型的复杂属性 "“value" 的细目),它包含了三个名称/值对,名称为 priv、limit 和 action,其中每个名称都接受一个简单值。"attr" 资源的 "name" 属性在语法方面的限制类似于区域名称,但不完全相同:它必须以字母数字开头,可以包含字母数字以及连字符 (-)、下划线 (_) 和点 (.) 字符。以 "zone" 开头的属性名称保留供系统使用。最后,"autoboot" 全局属性的值必须为 true 或 false。

使用内核统计信息来监视 CPU 上限

系统使用内核统计信息 (kstat(3KSTAT)) 模块 caps 为所有设有上限的项目和区域维护该信息。您可以通过读取内核统计信息 (kstat(3KSTAT))(指定 caps 作为 kstat 模块名称)来访问该信息。以下命令显示所有活动 CPU 上限的内核统计信息:

# kstat caps::'/cpucaps/'

在某个区域中运行的 kstat(1M) 命令只显示与该区域以及该区域中的项目相关的 CUP 上限。请参见“示例”。

下面是可与 kstat(1M) 一起使用的与上限相关的参数:

caps

kstat 模块。

project_capszone_caps

kstat 类,可与 kstat -c 选项一起使用。

cpucaps_project_idcpucaps_zone_id

kstat 名称,可与 kstat -n 选项一起使用。id 是项目或区域的标识符。

响应请求所有 CPU 上限统计信息的 kstat(1M) 命令时将显示以下字段。

module

kstat 的此使用情况中,此字段的值将是 caps

name

如上所述,cpucaps_project_idcpucaps_zone_id

above_sec

在上限之上度过的总时间(以秒为单位)。

below_sec

在上限之下度过的总时间(以秒为单位)。

maxusage

观察到的最大 CPU 使用量。

nwait

在上限等待队列中的线程数。

usage

属于某个设有上限的项目或区域的所有线程当前使用的 CPU 总量,换算为对单个 CPU 的百分比。

value

上限值,换算为对单个 CPU 的百分比。

zonename

为其显示统计信息的区域的名称。

kstat 命令的输出的样例,请参见“示例”部分。

选项

所支持的选项如下:

-f command_file

指定 zonecfg 命令文件的名称。command_file 是包含 zonecfg 子命令的文本文件,每个子命令占一行。

-z zonename

指定区域的名称。区域名称区分大小写。区域名称必须以字母数字字符开头,并可包含字母数字字符、下划线 (_)、连字符 (-) 和点 (.)。名称 global 和所有以 SYS 开头的名称均保留,不能使用。

子命令

可以使用 addselect 子命令来选择特定的资源,此时作用域将更改为该资源。endcancel 子命令用于结束资源指定,此时作用域将恢复为全局。某些子命令(例如 addremoveset)在每个作用域中有不同的语义。

zonecfg 支持以分号分隔的子命令列表。例如:

# zonecfg -z myzone "add net; set physical=myvnic; end"

可导致破坏性操作或导致工作丢失的子命令具有一个强制执行操作的 -F 选项。当输入来自终端设备时,如果在给定此类命令时未指定 -F 选项,系统会在适当的时候提示用户;其他情况下,如果在给定此类命令时未指定 -F 选项,将不允许操作,并会向标准错误写入一条诊断消息。

支持以下子命令:

add resource-type(全局范围)
add property-name property-value(资源范围)

在全局范围中,开始给定资源类型的指定。将范围更改为此资源类型。

在资源范围中,添加具有给定名称和给定值的属性。用于属性值的语法随属性类型不同而不同。一般情况下,它是一个简单值或者是用方括号括起来并以逗号分隔的简单值列表 ([foo,bar,baz])。请参见“属性”部分。

cancel

结束资源指定并将作用域重置为全局。放弃任何部分指定的资源。cancel 仅在资源范围内适用。

clear property-name

清除属性的值。

commit

将当前配置从内存提交到稳定存储器。必须提交配置以供 zoneadm 使用。在提交内存中的配置之前,可以使用 revert 子命令删除更改。在 zonecfg 会话完成时,会自动尝试 commit 操作。因为配置必须是正确的才能提交,因此该操作将自动执行验证。

create [-F] [ -a path |-b | -t template]

为指定的区域创建内存中配置。可以使用 create 开始配置一个新区域。有关将此保存到稳定存储器的信息,请参见 commit

如果要覆盖现有的配置,请指定 -F 选项以强制执行操作。指定 -t template 选项可创建一个与 template 完全相同的配置,其中 template 是所配置的某个区域的名称。

create 使用缺省模板 SYSdefault。可以使用 svc:/system/zones:default 服务的 default_template SMF 属性在系统范围内更改缺省模板。管理员可以使用 -t(使用特定模板)或 -b(使用空白模板)覆盖该区域的缺省值。

使用 -a path 选项可方便地在新主机上匹配一个分离区域。path 参数是已经移动到此新主机上的分离区域的 zonepath 位置。配置了分离区域后,应使用 zoneadm attach 命令安装它(请参见 zoneadm(1M))。对新区域的所有验证都发生在 attach 进程期间,而不是在区域配置期间。

使用 -b 选项可以创建一个空白配置。如果未指定参数,create 将应用 Oracle Sun 缺省设置。

delete [-F]

从内存和稳定存储器中删除指定的配置。此操作是即时的,不需要提交。删除的配置无法恢复。

使用 -F 选项强制执行操作:

end

结束资源指定。此子命令仅在资源范围内适用。zonecfg 进行检查以确保完整地指定了当前资源。如果完整地指定了当前资源,则会将其添加到内存中配置(有关将此配置保存到稳定存储器的信息,请参见 commit),作用域将恢复为全局。如果指定不完整,它将发出相应的错误消息。

export [-f output-file]

将配置输出至标准输出。使用 -f 选项可将配置输出到 output-file。此选项以适合在命令文件中使用的格式生成输出。

help [usage] [subcommand] [syntax] [command-name]

输出常规帮助或有关给定主题的帮助。

info zonename | zonepath | autoboot | brand | pool | limitpriv
info [resource-type [property-name=property-value ]*]

显示有关当前配置的信息。如果指定了 resource-type,将仅显示关于相关类型的资源的信息。如果指定了任何 property-name 值对,将仅显示符合指定条件的资源的相关信息。在资源范围中,所有参数都将被忽略,info 将仅显示当前正在添加或修改的资源的相关信息。

remove resource-type{property-name=property-value}(全局范围)

在全局范围中,删除指定的资源。[] 语法表示在方括号内有 0 项或多项内容。如果您希望仅删除资源的单个实例,必须为要唯一标识的资源指定足够的属性名称-值对。如果没有指定属性名称-值对,则会删除所有实例。如果指定了多个名称-值对,除非使用了 -F 选项,否则将需要确认。

select resource-type {property-name=property-value}

选择与给定的 property-name property-value 名称/值对条件匹配的给定类型的资源进行修改。此子命令仅在全局范围内适用。将范围更改为此资源类型。{} 语法表示在花括号内有 1 项或多项内容。必须为要唯一标识的资源指定足够的 property-name property-value 对。

set property-name=property-value

将给定属性名称设置为给定值。某些属性(例如,zonenamezonepath)是全局的,另外一些属性是特定于资源的。此子命令同时适用于全局范围和资源范围。

verify [-v]

检验当前配置是否正确:

  • 所有资源都指定了其所有必需属性。

  • 指定了 zonepath

如果指定了 -v 选项,当设备资源中指定的设备可能存在冲突并隐藏别名数据集内创建的 ZFS 卷时,将会发出警告。请参见 dev(7FS)

revert [-F]

将配置恢复到上次提交时的状态。可使用 -F 选项强制执行操作。

exit [-F]

退出 zonecfg 会话。如果需要,会自动尝试 commit。还可以使用 EOF 字符来退出 zonecfg。可使用 -F 选项强制执行操作。

示例

示例 1 创建新区域的环境

在下面的示例中,zonecfg 创建新区域的环境。/usr/local 从全局区域回送挂载到 /opt/local/opt/sfw 从全局区域回送挂载,nxge0 上的 VNIC 添加到具有三个 IP 地址的区域,使用 rctl 资源类型设置对区域的公平份额调度程序 (fair-share scheduler, FSS) CPU 份额数的限制。该示例还说明了如何选择用于进行修改的给定资源,本例中的方法是选择由 zonecfg 自动创建的 anet 资源。

example# zonecfg -z myzone3
my-zone3: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:myzone3> create
zonecfg:myzone3> set zonepath=/export/home/my-zone3
zonecfg:myzone3> set autoboot=true
zonecfg:myzone3> add fs
zonecfg:myzone3:fs> set dir=/usr/local
zonecfg:myzone3:fs> set special=/opt/local
zonecfg:myzone3:fs> set type=lofs
zonecfg:myzone3:fs> add options [ro,nodevices]
zonecfg:myzone3:fs> end
zonecfg:myzone3> add fs
zonecfg:myzone3:fs> set dir=/mnt
zonecfg:myzone3:fs> set special=/dev/dsk/c0t0d0s7
zonecfg:myzone3:fs> set raw=/dev/rdsk/c0t0d0s7
zonecfg:myzone3:fs> set type=ufs
zonecfg:myzone3:fs> end
zonecfg:myzone3> add fs
zonecfg:myzone3:fs> set dir=/opt/sfw
zonecfg:myzone3:fs> set special=/opt/sfw
zonecfg:myzone3:fs> set type=lofs
zonecfg:myzone3:fs> add options [ro,nodevices]
zonecfg:myzone3:fs> end
zonecfg:myzone3> select anet linkname=net0
zonecfg:myzone3:anet> set lower-link=nxge0
zonecfg:myzone3:anet> set allowed-address="192.168.0.1/24,192.168.1.2/\
           24,192.168.2.3/24"
zonecfg:myzone3:anet> end
zonecfg:my-zone3> set cpu-shares=5
zonecfg:my-zone3> add capped-memory
zonecfg:my-zone3:capped-memory> set physical=50m
zonecfg:my-zone3:capped-memory> set swap=100m
zonecfg:my-zone3:capped-memory> end
zonecfg:myzone3> exit

示例 2 创建独占 IP 区域

以下示例将创建一个分配了名为 net0 的 VNIC 的区域。用来创建 VNIC 的链路是自动确定的。IP 地址和路由是在新区域内部使用 ipadm(1M) 配置的。

example# zonecfg -z excl
zonecfg:excl> create
zonecfg:excl> set zonepath=/export/zones/excl
zonecfg:excl> exit

示例 3 创建共享 IP 区域

以下示例创建的区域将与全局区域共享 IP 栈,并被分配一个 IP 地址和缺省路由器。

example# zonecfg -b -z shared
zonecfg:shared> create
zonecfg:shared> set zonepath=/export/zones/shared
zonecfg:shared> set ip-type=shared
zonecfg:shared> add net
zonecfg:shared:net> set physical=nge0
zonecfg:shared:net> set address=192.168.0.3/24
zonecfg:shared:net> set defrouter=192.168.0.1
zonecfg:shared:net> end
zonecfg:shared> exit

示例 4 将区域与资源池相关联

以下示例展示了如何将现有区域与现有的资源池相关联:

example# zonecfg -z myzone
zonecfg:myzone> set pool=mypool
zonecfg:myzone> exit

有关资源池的更多信息,请参见 pooladm(1M)poolcfg(1M)

示例 5 更改区域的名称

以下示例展示了如何更改现有区域的名称:

example# zonecfg -z myzone
zonecfg:myzone> set zonename=myzone2
zonecfg:myzone2> exit

示例 6 更改区域的特权集

以下示例展示了如何更改现有区域的特权集,该区域的进程在区域下次引导时将受限于该特权集。在这个特定的案例中,特权集将是区域正常情况下拥有的标准安全特权集,加上更改系统日期和时间的特权。

example# zonecfg -z myzone
zonecfg:myzone> set limitpriv="default,sys_time"
zonecfg:myzone2> exit

示例 7 设置全局区域的 zone.cpu-shares 属性

以下命令可设置全局区域的 zone.cpu-shares 属性:

example# zonecfg -z global
zonecfg:global> set cpu-shares=5
zonecfg:global> exit

示例 8 使用模式匹配

以下命令展示了 zonecfg 对模式匹配的支持。在区域 flexlm 中,输入:

zonecfg:flexlm> add device
zonecfg:flexlm:device> set match="/dev/cua/a00[2-5]"
zonecfg:flexlm:device> end

在全局区域中,输入:

global# ls /dev/cua
a     a000  a001  a002  a003  a004  a005  a006  a007  b

在区域 flexlm 中,输入:

flexlm# ls /dev/cua
a002  a003  a004  a005

示例 9 将区域的上限设置为三个 CPU

以下序列使用 zonecfg 命令将区域的 CPU 上限设置为三个 CPU。

zonecfg:myzone> add capped-cpu
zonecfg:myzone>capped-cpu> set ncpus=3
zonecfg:myzone>capped-cpu>capped-cpu> end

上面的序列使用了 capped-cpu 属性,它等效于使用了 zone.cpu-cap 资源控制的以下序列。

zonecfg:myzone> add rctl
zonecfg:myzone:rctl> set name=zone.cpu-cap
zonecfg:myzone:rctl> add value (priv=privileged,limit=300,action=none)
zonecfg:myzone:rctl> end

示例 10 使用 kstat 监视 CPU 上限

以下命令显示有关所有 CPU 上限的信息。

# kstat -n /cpucaps/
module: caps                            instance: 0     
name:   cpucaps_project_0               class:    project_caps
        above_sec                       0
        below_sec                       2157
        crtime                          821.048183159
        maxusage                        2
        nwait                           0
        snaptime                        235885.637253027
        usage                           0
        value                           18446743151372347932
        zonename                        global

module: caps                            instance: 0     
name:   cpucaps_project_1               class:    project_caps
        above_sec                       0
        below_sec                       0
        crtime                          225339.192787265
        maxusage                        5
        nwait                           0
        snaptime                        235885.637591677
        usage                           5
        value                           18446743151372347932
        zonename                        global

module: caps                            instance: 0     
name:   cpucaps_project_201             class:    project_caps
        above_sec                       0
        below_sec                       235105
        crtime                          780.37961782
        maxusage                        100
        nwait                           0
        snaptime                        235885.637789687
        usage                           43
        value                           100
        zonename                        global

module: caps                            instance: 0     
name:   cpucaps_project_202             class:    project_caps
        above_sec                       0
        below_sec                       235094
        crtime                          791.72983782
        maxusage                        100
        nwait                           0
        snaptime                        235885.637967512
        usage                           48
        value                           100
        zonename                        global

module: caps                            instance: 0     
name:   cpucaps_project_203             class:    project_caps
        above_sec                       0
        below_sec                       235034
        crtime                          852.104401481
        maxusage                        75
        nwait                           0
        snaptime                        235885.638144304
        usage                           47
        value                           100
        zonename                        global

module: caps                            instance: 0     
name:   cpucaps_project_86710           class:    project_caps
        above_sec                       22
        below_sec                       235166
        crtime                          698.441717859
        maxusage                        101
        nwait                           0
        snaptime                        235885.638319871
        usage                           54
        value                           100
        zonename                        global

module: caps                            instance: 0     
name:   cpucaps_zone_0                  class:    zone_caps
        above_sec                       100733
        below_sec                       134332
        crtime                          821.048177123
        maxusage                        207
        nwait                           2
        snaptime                        235885.638497731
        usage                           199
        value                           200
        zonename                        global

module: caps                            instance: 1     
name:   cpucaps_project_0               class:    project_caps
        above_sec                       0
        below_sec                       0
        crtime                          225360.256448422
        maxusage                        7
        nwait                           0
        snaptime                        235885.638714404
        usage                           7
        value                           18446743151372347932
        zonename                        test_001

module: caps                            instance: 1     
name:   cpucaps_zone_1                  class:    zone_caps
        above_sec                       2
        below_sec                       10524
        crtime                          225360.256440278
        maxusage                        106
        nwait                           0
        snaptime                        235885.638896443
        usage                           7
        value                           100
        zonename                        test_001

示例 11 显示特定区域或项目的 CPU 上限

使用 kstat -c-i 选项,可以显示特定区域或项目的 CPU 上限,如下所示。第一个命令生成针对某个特定项目的显示,第二个命令生成针对区域 1 中同一个项目的显示。

# kstat -c project_caps

# kstat -c project_caps -i 1

示例 12 委托区域管理权限

以下示例展示了如何将当前区域的管理权限分配给某个角色。

example# zonecfg -z myzone
zonecfg:myzone> add admin
zonecfg:myzone:admin> set user=zadmin
zonecfg:myzone:admin> set auths=login,manage
zonecfg:myzone:admin> end
zonecfg:myzone> commit

这些命令的执行结果将是 RBAC user_attr(4) 数据库中的更新条目,类似于以下条目:

zadmin::::type=role;\
auths=solaris.zone.login/myzone,solaris.zone.manage/myzone;profiles=\
Zone Management

示例 13 创建具有非缺省属性的独占 IP 区域

以下示例创建的区域具有通过 mylink0 自动创建的 VNIC,并指定了给定的 MAC 地址、100 Mbps 的最大带宽、高优先级、RX 端的专用硬件环、TX 端的非专用硬件环(即,基于软件)以及 VLAN id 2。

example# zonecfg -b -z excl
excl: No such zone configured
Use 'create' to begin configuring a new zone
zonecfg:excl> create
zonecfg:excl> set zonepath=/export/zones/excl
zonecfg:excl> add anet
zonecfg:excl:anet> set linkname=mynic0
zonecfg:excl:anet> set lower-link=mylink0
zonecfg:excl:anet> set mac-address=8:0:20:fe:4e:b8
zonecfg:excl:anet> set maxbw=100M
zonecfg:excl:anet> set priority=high
zonecfg:excl:anet> set vlan-id=2
zonecfg:excl:anet> set rxrings=hw
zonecfg:excl:anet> set txrings=sw
zonecfg:excl:anet> end
zonecfg:excl> exit

示例 14 创建只读区域

以下示例将创建一个可防止区域对其根文件系统进行修改的新区域。由于应用了 fixed-configuration 配置文件,/var 中的文件是可写的。

example# zonecfg -z rozone
rozone: No such zone configured
Use 'create' to begin configuring a new zone
zonecfg:rozone> create
zonecfg:rozone> set brand=solaris
zonecfg:rozone> set zonepath=/export/zones/rozone
zonecfg:rozone> set autoboot=true
zonecfg:rozone> set file-mac-profile=fixed-configuration
zonecfg:rozone> set ip-type=exclusive
zonecfg:rozone> add net
zonecfg:rozone:net> set physical=vnic0
zonecfg:rozone:net> end
zonecfg:rozone> exit

退出状态

将返回以下退出值:

0

成功完成。

1

出现错误。

2

用法无效。

属性

有关以下属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/zones
接口稳定性
Volatile(可变)

另请参见

ppriv(1)prctl(1)zlogin(1)dladm(1M)ipadm(1M)kstat(1M)mount(1M)pooladm(1M)poolcfg(1M)poold(1M)rcapd(1M)rctladm(1M)route(1M)svcadm(1M)zfs(1M)zoneadm(1M)zpool(1M)priv_str_to_set(3C)kstat(3KSTAT)user_attr(4)vfstab(4)attributes(5)brands(5)fnmatch(5)mwac(5)privileges(5)rbac(5)resource_controls(5)zones(5)dev(7FS)hsfs(7FS)uscsi(7I)

《Oracle Solaris 管理:Oracle Solaris Zones、Oracle Solaris 10 Zones 和资源管理》

附注

zonecfg 使用的所有字符都必须采用 US-ASCII 编码。

一般情况下,向区域中添加设备可能会使区域对系统的安全性和稳定性产生不利影响,因为不是所有设备都已经过审核并确认可以在区域内安全地使用。

可以将使用 sdssd 目标驱动程序的存储设备(例如,这可以使用 prtconf -D /dev/dsk/c2t40d3 来检查)安全地委托给区域。这将使得区域管理员可以为此类设备设置标签和分区。

只委托一个分片(例如,match=/dev/dsk/c2t40d3s0)也将使得区域管理员能够为包含该分片的整个磁盘设置标签和分区。要阻止这种情况发生,请通过以下方式取消从区域运行 format 的功能:

set limitpriv=default,-storage_config

通过将 raw_storage 特权添加到区域的 limitpriv 中,可以启用对存储设备的原始访问。这是不安全的,因为它会允许区域进程执行原始 SCSI 命令(请参见 uscsi(7I))。