手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

zonecfg(1M)

名称

zonecfg - 设置区域配置

用法概要

zonecfg -z zonename [-r]
zonecfg -z zonename [-r] subcommand
zonecfg -z zonename [-r]  
-f command_file
zonecfg help

描述

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

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

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

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


zonecfg –z zonename subcommand

zonecfg 实用程序可在两种编辑模式下运行:

缺省

允许创建、修改和列出在稳定存储器上存储的永久区域配置。在缺省模式下通过 zonecfg 更改的参数不会影响正在运行的区域。必须使用 zoneadm(1M) apply 子命令重新配置区域,否则要重新引导以使更改生效。

要更改永久配置,需要 solaris.zone.config/zonename 授权。

实时

允许检索、修改和列出正在运行的区域的配置。在实时模式下通过 zonecfg 更改的参数会在提交后立即生效,并在下一次区域重新引导之前处于有效状态。实时模式仅可用于正在运行的区域,并且需要 solaris.zone.liveconfig/zonename 授权。

有关实时区域重新配置支持的资源的详细信息,请参见相应的标记手册页。

除了创建和修改区域,zonecfg 实用程序还可以用来持久性地指定全局区域的资源管理设置或者通过指定 file-mac-profile 与 fs-allowed、数据集和设备的设置来将全局区域配置为不可变全局区域。

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

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

资源

支持下列资源类型:

attr

通用属性。

capped-cpu

CPU 的使用限制。

capped-memory

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

dataset

ZFS 数据集。

dedicated-cpu

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

device

设备.

fs

文件系统。

keysource

加密密钥

net

网络接口。

anet

自动网络接口。

mac

为区域配置的额外 MAC 地址。mac 资源仅在 anet 资源内有效。

admin

受委托的管理员。

rctl

资源控制。

suspend

暂停映像

rootzpool

用于区域安装的专用 ZFS zpool。

virtual-cpu

为区域配置的虚拟 CPU。

zpool

委托给区域的 ZFS zpool。

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

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

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

属性

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

支持下列属性:

(全局)

zonename

(全局)

zonepath

(全局)

autoboot

(全局)

autoshutdown

(全局)

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

(全局)

tenant

fs

dirspecialrawtypeoptions

net

addressallowed-addressconfigure-allowed-addressphysicaldefrouterid

anet

linknamelower-linkallowed-addressauto-mac-addressconfigure-allowed-addressdefroutermac-addressmac-slotmac-prefixmtumaxbwpriorityvlan-idvsi-typeidvsi-versvsi-mgridrxfanoutrxringstxringslink-protectionallowed-dhcp-cidspkeylinkmodeetsbw-lclcosidevsvport

anet

auto-mac-addressmac-addressmac-prefixid

device

matchallow-partitionallow-raw-ioidstorage

rctl

namevalue

attr

nametypevalue

dataset

namealias

dedicated-cpu

ncpusimportance

cpuscoressockets

virtual-cpu

ncpus

capped-memory

physicalswaplocked

capped-cpu

ncpus

admin

user、auths

rootzpool

storage

zpool

storage、name

hostkey

raw

suspend

path、storage

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

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

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


[<value>,...]

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

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

属性类型如下所述:

全局:zonename

区域的名称。

全局:zonepath

区域的文件系统的路径。zonepath 的缺省值为 /system/zones/%{zonename}

全局:autoboot

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

# svcadm enable svc:/system/zones:default

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

全局:autoshutdown

在正常关闭全局区域时对此区域执行的操作。操作可以是 "shutdown"(正常关闭区域,缺省值);"halt";或 "suspend"。

全局: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 挂载到区域中的文件系统。


Caution

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


全局: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 中的文件。

全局:tenant

注 -  要使用此属性以及 anet 资源的 evsvport 属性,请安装弹性虚拟交换机 (Elastic Virtual Switch, EVS) IPS 软件包,并按 evsadm(1M) 手册页和在 Oracle Solaris 11.2 中管理网络虚拟化和网络资源 中所述配置 EVS 控制器。

定义 VNIC anet 要连接到的 EVS 所属的 tenant 的名称。请参见evsadm(1M)

fs:dir、special、raw、type、options

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

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

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

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

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

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

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

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

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

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

id 值是用于标识网络接口的正整数;请参见 solaris-kz(5)

可将区域配置为独占 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、auto-mac-address、configure-allowed-address、defrouter、mac-address、mac-slot、mac-prefix、mtu、maxbw、priority、vlan-id、vsi-typeid、vsi-vers、vsi-mgrid、rxfanout、rxrings、txrings、link-protection、allowed-dhcp-cids、pkey、linkmode、etsbw-lcl、cos、id、evs、vport、mac

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

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

当此类区域引导时,将自动为该区域创建一个临时的 VNIC 或 IPoIB 数据链路。当区域停止时,将删除该 VNIC 或 IPoIB 数据链路。


注 -  要使用 EVS 和 VPort,请安装弹性虚拟交换机 (EVS) IPS 软件包,然后按 evsadm(1M) 手册页和在 Oracle Solaris 11.2 中管理网络虚拟化和网络资源 所述配置 EVS 控制器。

EVS 是跨越一台或多台服务器(物理计算机)的虚拟交换机。它代表一个隔离的 L2 网段,并为 VNIC anet 与该网段连接的区域提供网络连接。VPort 通过 3 元组 <tenant, evs, vport> 唯一标识,因此,如果需要将 VNIC anet 连接到 EVS,区域的配置应包括此信息。


注 -  对于连接到 EVS 的 VNIC anet,唯一允许的 anet 属性是 linkname,因为它会从 VPort 获取其他属性。

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

linkname

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

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

evs
vport

如果指定了 EVS 并根据需要指定了 VPort,则将通过在该 VPort 上连接到该 EVS 创建 VNIC anet。如果指定了全局 tenant 属性,则将在该 tenant 的名称空间中搜索 EVS。

如果指定了 VPort,则 VNIC 将继承该 VPort 的 SLA 属性(maxbwcospriority)、IP 地址以及缺省的路由器 MAC 地址。如果未指定 VPort,则 EVS 控制器会生成一个系统 VPort(该端口具有 EVS 的 IP 地址、MAC 地址以及缺省 SLA 属性),然后将 VNIC 连接到此系统 VPort。

通过将 allowed-ips VNIC 属性设置为 VPort 的 IP 地址的该属性,将在 VNIC 上启用 IP 地址防欺骗。每次引导区域时,都会在该接口上自动配置 VPort 的 IP 地址。与 VPort 关联的缺省路由器 IP 地址也会在区域中自动配置。

有关 EVS 和 VPort 的更多信息,请参见 evsadm(1M) 手册页。

lower-link

指定将用来创建 VNIC 或 IPoIB 的链路。对于以太网链路,此属性的缺省值为 auto。如果指定了 pkey,则必须为 lower-link 指定一个有效的 IPoIB phys 类数据链路。在添加 anet 资源时,管理员可以显式指定一个值。链路可以是接受为 dladm create-vnic–l 选项或 dladm create-part–l 选项的参数的任何链路(请参见 dladm(1M))。如果该属性设置为 linkname(而非 auto)且该链路不存在,则区域将无法引导。如果设置为 auto,每次区域引导时,zoneadmd(1M) 守护进程都会自动选择用来创建 VNIC 的链路。选择用于在引导期间自动创建 VNIC 的缺省 lower-link 时,将跳过所有 IPoIB 数据链路。将会使用以下试探性操作选择链路:

  1. 链路状态为 up 的链路聚合。

  2. 在链路状态为 up 的物理以太网链路中,其名称按字母顺序为最小的链路。

  3. 如果没有状态为 up 的链路,则会使用名为 net0 的数据链路(如果存在)。

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

allowed-address

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

auto-mac-address

mac-address 属性(请参见下文)设置为 randomauto 时,保存随机生成的 MAC 地址列表,以便区域能够持久性地反复获取相同地址。要重置随机生成的地址,需要由管理员清除此属性。

configure-allowed-address

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

cos

与数据链路关联的 802.1p 优先级。有关此属性的详细信息,请参见 dladm(1M)

defrouter

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

etsbw-lcl

指示 TX 端的 ETS 带宽。有关此属性的详细信息,请参见 dladm(1M)

mac-address

根据指定值或关键字设置 VNIC 的 MAC 地址列表。如果该列表的元素不是关键字,则将其解释为单点传送 MAC 地址。IPoIB 数据链路不支持此属性。支持的关键字包括:

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

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

  • auto:如果可能(如果 NIC 支持),首先尝试分配随机 mac-address,否则尝试分配出厂 mac-address。这是缺省值。

  • default:使用特定于平台的分配策略。在大多数情况下,此方式尝试分配随机地址(请参见上文中的 'random')。如果当前平台是 Oracle Solaris 内核区域,将分配出厂 MAC 地址(请参见上文中的 'factory')。

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

mac-prefix

如果请求了随机 MAC 地址分配,指定 MAC 地址前缀列表。否则,将忽略该属性。此属性对 IPoIB 数据链路无效。

mac-slot

如果请求了出厂 MAC 地址,指定使用的 MAC 地址插槽标识符列表。否则,将忽略该属性。此属性对 IPoIB 数据链路无效。

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。IPoIB 数据链路不支持此属性。

vsi-typeid

指定与 VNIC 关联的 VSI 类型 ID。请参见 dladm(1M) 中的描述。

vsi-vers

指定与 VNIC 关联的 VSI 版本。请参见 dladm(1M) 中的描述。

vsi-mgrid

指定与 VNIC 关联的 VSI 管理器 ID。请参见 dladm(1M) 中的描述。

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)

pkey

指定十六进制的 InfiniBand 分区密钥值。pkey 始终被视为十六进制的,不管它是否具有 0x 前缀。此属性仅对 IPoIB 数据链路有效。

linkmode

在 IB 分区数据链路上设置链路传输服务类型。缺省值为 cm。此属性仅对 IPoIB 数据链路有效。有效值包括:

cm

连接模式。此模式使用缺省 MTU 65520,并且支持的最大 MTU 为 65535 字节。如果远程节点无法使用连接模式,则会自动改用不可靠的数据报模式。

ud

不可靠的数据报模式。此模式使用缺省 MTU 2044,并且支持的最大 MTU 为 4092 字节。

id 值是用于标识网络接口的正整数;请参见 solaris-kz(5)

mac:auto-mac-address、mac-address、mac-prefix、id

MAC 资源用于向 anet 资源添加额外的 mac-address,主 MAC 地址是通过 anet:mac-address 属性指定的。

auto-mac-address

存放 mac-address 属性(请参见下文)设置为 random 或 auto 时随机生成的 MAC 地址列表,以便区域持久地反复获取相同地址。要重置随机生成的地址,需要由管理员清除此属性。

mac-address

根据指定值或关键字设置 VNIC 的 MAC 地址列表。如果该列表的元素不是关键字,则将其解释为单点传送 MAC 地址。IPoIB 数据链路不支持此属性。支持的关键字包括:

factory

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

random

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

auto

在 NIC 支持的情况下分配随机 mac-address,否则尝试分配一个 factory mac-address。这是缺省值。

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

mac-prefix

如果请求了随机 MAC 地址分配,则指定要使用的 MAC 地址前缀列表。否则,忽略该属性。此属性对 IPoIB 数据链路无效。

id 值是一个正整数,用于唯一标识资源。

device:match、allow-partition、allow-raw-io、id

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

此外,存储属性也可以设置为存储 URI(请参见 suri(5))。在这种情况下,区域引导时将映射 SURI,匹配的设备节点在区域内可用。区域停止时,取消 SURI 映射。在这种情况下,allow-partition 自动设置为 true。

allow-partitionallow-raw-io 均可以设置为 truefalse,缺省值为 false。请参见“附注”部分。


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

id 值是用于标识虚拟块设备的正整数;请参见 solaris-kz(5)

rctl:name、value

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

virtual-cpus:ncpus

指定为 solaris-kz 标记区域配置的虚拟 CPU 数量。请参见 solaris-kz(5)

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:cpus、cores、sockets ncpus、importance

此资源将创建池和处理器集供区域引导时由其专用。在区域运行时,这些处理器不可供其他区域或全局区域使用。有关池的更多信息,请参见 poolcfg(1M)pooladm(1M) 手册页。

可以明确地选择也可以自动选择要专用的 cpu:

选择特定 cpu 资源

cpuscoressockets 之一设置为 cpu、核心或套接字 id 的列表。使用 psrinfo -tpooladm 查看哪些 cpu、核心和/或套接字可用。

如果指定的任何资源分配给其他区域或池,则该区域将无法引导。这包括所分配资源的子集。例如,如果分配的套接字在别处分配了核心。

如果指定的任何 cpu 资源不存在或者出现故障或脱机,则在区域引导时将显示警告。区域将接收处于联机状态的所有指定 cpu 资源。

如果 cpu 资源部分联机(例如核心中的某些 cpu 出现故障),则区域将接收核心中的其余联机 cpu,并将显示警告。

如果指定的 cpu 资源都不处于联机状态,则区域将无法引导。

自动选择 cpu 资源

这可能会随区域的每次引导或实时区域重新配置而异。

ncpus 设置为整数范围或标量值。使用 - 表示范围,例如 1-4 表示一到四个处理器。如果指定范围,则专用于区域的 cpu 数量可能会在区域运行时发生变化。

根据需要设置 "importance" 以配置与专用 cpu 关联的资源池的 pool.importance 值。"importance" 值是整数值。使用范围时,cpu 分配有益于重要性较高的池。有关基于重要性的分配的说明,请参见 libpool(3LIB) 手册页。

如果没有足够用的联机 cpu 来满足最低或整数值集,则区域将无法进行引导或实时重新配置。

配置了自动 cpu 时,专用于区域的特定 cpu 可能会在区域运行时发生变化。例如,如果在别处分配了供自动运行的区域使用的 cpu 资源,则该 cpu 资源将替换为其他可用 cpu 资源。专用于运行的自动 cpu 区域的 cpu 资源的数量也可能在区域指定的约束内发生变化。

solaris-kz 标记区域在运行时不能更改 cpu。这些区域不支持 ncpus 的范围值。运行的 solaris-kz 标记区域使用的 cpu 资源不能在别处分配,即使这些资源是自动选择的也是如此。由于此原因,建议使用特定 cpu 的区域应当在使用自动 cpu 的 solaris-kz 标记区域之前进行引导。

此资源与 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

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

config

允许修改区域的持久配置。

liveconfig

允许检测并修改正在运行的区域的实时配置。

rootzpool:storage

定义一个或多个专用于包含区域安装的专用 zpool 的存储资源。在 suri(5)中定义了允许的 storage 值。

zpool:storage、name

定义一个或多个专用于已委托给区域的 zpool 的存储资源。在 suri(5)中定义了允许的 storage 值。在 zpool(1M)中定义了允许的 name 值。不允许使用名称 rpool

keysource: raw

提供对用于内核区域暂停映像和主机数据的加密密钥的管理访问权限,如 solaris-kz(5)中所述。不能直接设置 raw 的值,除非在 command_file 模式下。

suspend:path、storage

配置内核区域的暂停映像的位置。仅允许一个 suspend 资源。如果没有任何 suspend 资源,则内核区域不支持暂停和恢复。suspend 资源允许指定 pathstorage,不允许同时指定两者。如果指定 path,那么这是将写入暂停文件的完全路径,并且其父目录必须存在。如果指定 storage,那么,这必须是存储 URI 引用的设备,如 suri(5)中所述。

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


resource          property-name   type
(global)          zonename        simple
(global)          zonepath        simple
(global)          autoboot        simple
(global)          autoshutdown    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
(global)          tenant          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
                  cos             simple
                  defrouter       list of simple
                  etsbw_lcl       simple
                  physical        simple
                  id              simple
anet              linkname        simple
                  lower-link      simple
                  allowed-address list of simple
                  auto-mac-address 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
                  vsi-typeid      simple
                  vsi-vers        simple
                  vsi-mgrid       simple
                  rxfanout        simple
                  rxrings         simple
                  txrings         simple
                  link-protection list of simple
                  allowed-dhcp-cids list of simple
                  pkey            simple
                  linkmode        simple
                  FIXME someone needs to update
                  id              simple
                  evs             simple
                  vport           simple
anet:mac          auto-mac-address simple
                  mac-address     simple
                  mac-prefix      simple
                  id              simple
device            match           simple
                  storage         simple
                  allow-partition simple
                  allow-raw-io    simple
                  id              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
                  cpus            list of simple
                  cores           list of simple
                  sockets         list of simple
                  importance      simple
virtual-cpu       ncpus           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
rootzpool         storage         simple

zpool             storage         simple
                  name            simple
hostkey           raw             simple
suspend           path            simple
                  storage         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 命令的输出的样例,请参见“示例”部分。

通过统一归档文件配置

统一归档文件(使用 archiveadm(1M) 创建)提供了一种将 Solaris 实例归档的方式。每个统一归档文件都可以包含对应一个或多个全局区域和/或非全局区域的数据和元数据。缺省情况下,archiveadm(1M) 生成适合系统或区域克隆的归档文件。archiveadm(1M) 也可以创建适合系统恢复的归档文件(可选)。

如果使用 zonecfg create -a archive [options] 子命令通过统一归档文件配置区域,归档文件创建选项会影响归档配置的保留程度:通过克隆归档文件配置时,可能会造成问题的属性值(用于多个主机而值相同)将使用缺省值。这些属性包括:

-

host id

anet

allowed-address

anet

mac-address

net

allowed-address

此外,如果归档区域的名称与正在安装的区域的名称不匹配,某些属性将自动更新以反映新区域的名称:

zonepath

如果 zonepath 的最后一个元素与归档区域的名称匹配,zonepath 中的最后一个元素将替换为新区域的名称。

dataset/alias

对于数据集资源,如果 alias 与归档区域的名称匹配,alias 将替换为新区域的名称。

dataset/name

对于数据集资源,如果 name 属性的最后一个元素与归档区域的名称匹配,name 属性中的最后一个元素将替换为新区域的名称。

通过统一归档文件配置不会阻碍使用后续命令根据需要修改资源和属性值。

选项

支持以下选项:

–f command_file

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

–r

启用实时编辑模式。指示 zonecfg 编辑正在运行的区域的实时配置,而不是稳定存储器中的永久配置。在使用时,zonecfg 会检索当前的实时区域配置的快照。在此模式下,支持完整的 zonecfg 子命令集。实时配置会在提交后立即生效,并在下一次区域重新引导之前处于有效状态。实时模式仅可用于正在运行的区域,并且需要 solaris.zone.liveconfig/zonename 授权。

–z zonename

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

标记

标记

支持在特定属性中使用以下标记:

%{zonename}

求值结果为区域的名称

%{id}

求值结果为特定资源的 id 属性。此标记在支持 id 属性的资源范围内使用。

%%

求值结果为 %

子命令

子命令

可以使用 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 [–n] [–q]
缺省模式

将当前配置从内存提交到稳定存储器。必须提交配置以供 zoneadm 使用。在缺省模式下,不允许使用 –n–q

实时模式

重新配置正在运行的区域,以便匹配当前的内存中实时配置并输出执行的操作。应用的更改会立即生效,并在下一次区域重新引导之前处于有效状态。如果在调用 commit 子命令之前在外部更改了实时配置,则在调用时将返回错误。在这种情况下,需要重新装入实时配置,然后重新应用所需的更改,这样才能成功提交。

支持以下选项:

–n

在预运行模式下运行重新配置,这不会更改正在运行的区域的配置。预运行模式的行为与真实的重新配置相同,但会让正在运行的区域保持现状。使用预运行可以检查真实重新配置将执行的操作。

–q

静默模式。禁止与区域重新配置有关的所有消息。

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

create [–F] [ –a directory |–b | –t template]
create [–F] –a archive [–z archived_zone]
[–<cert|ca-cert|key>=path] ...

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

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

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

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

使用 –a 归档选项可以方便地通过 archiveadm(1M) 创建的统一归档文件配置区域。归档文件可以采用绝对路径或文件名、http 或 https URI 形式。如果统一归档文件包含多个区域,必须使用 –z archived_zone 选项指定使用归档文件中的哪个区域执行配置操作。如果通过 https URI 访问归档文件,可以使用 –x 选项指定证书、CA 证书和/或密钥文件的位置。如果指定 certcacertkey,必须以 PEM 格式指定。有关更多详细信息,请参见上文中的“通过统一归档文件配置”。

使用 –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 | autshutdown | brand | pool | limitpriv
info[ resource-type [property-name =property-value]*]

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

zonecfg 交互模式下请求特定的属性或资源类型(如 property-name.template: template-value)时,可能会显示标记。此模板值的求值结果输出由 property-name: propperty-value 提供。请参见“示例”部分。

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

在全局范围中,删除指定的资源。[] 语法表示在方括号内有 0 项或多项内容。如果您希望仅删除资源的单个实例,必须为要唯一标识的资源指定足够的 property-name 对和 property-value 对。如果没有指定属性名称-值对,则会删除所有实例。如果指定了多个对,需要进行确认(除非使用了 –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 选项强制执行操作。

reload [–F ]

放弃所有未提交的更改并从稳定存储器重新装入配置(缺省模式),或者检索正在运行的区域的最新配置(实时模式)。可使用 –F 选项强制执行操作。

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> info zonepath
zonepath.template: /system/zones/%{zonename}
zonepath: /system/zones/myzone3
zonecfg:myzone3> set autoboot=true
zonecfg:myzone3> add fs
zonecfg:myzone3:fs> set dir=/opt/local
zonecfg:myzone3:fs> set special=/usr/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 -z shared
zonecfg:shared> create -b
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 更改区域的名称

仅允许对处于已配置状态的区域更改 zonename 属性。对于处于已安装状态的区域,请使用 zoneadm(1M) rename 子命令。以下示例展示了如何更改现有区域的名称:

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 -z excl
excl: No such zone configured
Use 'create' to begin configuring a new zone
zonecfg:excl> create -b
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
示例 15 创建包含 IB 分区的独占 IP 区域

以下示例创建具有缺省属性的区域。该区域在引导时将自动创建一个 IPoIB 数据链路,在停止时将删除该数据链路。

example# zonecfg -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> set ip-type=exclusive
zonecfg:excl> add anet
zonecfg:excl> set linkname=part0
zonecfg:excl> set lower-link=net4
zonecfg:excl> set pkey=ffff
zonecfg:excl:anet> end
zonecfg:excl> exit
示例 16 创建一个安装到专用存储资源和 zpool 中的区域

以下示例创建新的区域,其中,zpool 资源由包含整个区域安装的一个存储资源组成。将自动创建 zpool 或在区域安装期间导入预先创建的 zpool。名称将为 zoss_rpool

example# zonecfg -z zoss
zoss: No such zone configured
Use 'create' to begin configuring a new zone
zonecfg:zoss> create
zonecfg:zoss> set zonepath=/zoss
zonecfg:zoss> add rootzpool
zonecfg:zoss:rootzpool> add storage iscsi://127.0.0.1/luname.naa.6001\
44f03d70c80000004ea57da10001
zonecfg:zoss:rootzpool> end
zonecfg:zoss> exit
示例 17 创建具有委托的 zpool 资源的区域

以下示例创建新的区域,其中,zpool 资源被委托给含有两个存储资源的区域。将自动创建 zpool 或在区域安装期间导入预先创建的 zpool。名称将为 zoss_mypool

example# zonecfg -z zoss
zoss: No such zone configured
Use 'create' to begin configuring a new zone
zonecfg:zoss> create
zonecfg:zoss> set zonepath=/zoss
zonecfg:zoss> add zpool
zonecfg:zoss:zpool> set name=mypool
zonecfg:zoss:zpool> add storage dev:/dev/dsk/c0t1d0
zonecfg:zoss:zpool> add storage dev:/dev/dsk/c1t1d0
zonecfg:zoss:zpool> end
zonecfg:zoss> exit
示例 18 检查正在运行的区域的实时配置

以下示例检查正在运行的区域的实时配置。

example# zonecfg -z myzone -r
zonecfg:myzone> info
示例 19 在不重新引导区域的情况下临时向正在运行的区域添加新的 anet

以下示例在不重新引导区域的情况下临时向正在运行的区域添加新的 anet

example# zonecfg -z myzone -r
zonecfg:myzone> add anet
zonecfg:myzone> set linkname=anet1
zonecfg:myzone> set lower-link=net1
zonecfg:myzone> end
zonecfg:myzone> commit
示例 20 通过统一归档文件创建区域配置

以下示例通过存储在 /export/archvies 中的统一归档文件新建区域配置。该归档文件只包含一个名为 web、zonepath 为 /zones/web 的区域。如 info 子命令所示,zonepath 按上文中的“通过统一归档文件配置”一节所述进行了调整。


example# zonecfg -z ex17
ex17: No such zone configured
Use 'create' to begin configuring a new zone
zonecfg:ex17> create -a /export/archives/web.uar
zonecfg:ex17> info zonepath
zonepath: /zones/web
zonecfg:ex17> set zonepath=/zones/ex17
zonecfg:ex17> exit

这同样也可以通过非交互模式完成:

example# zonecfg -z ex17 "create -a /export/archives/web.uar; set zonepath=/zones/web"
示例 21 通过安全的 Web 服务器上的统一归档文件创建区域配置

此示例显示了使用非交互式命令通过安全的 Web 服务器上的归档文件配置区域。使用 –z 选项指定用作配置源的特定归档区域。首先将证书、CA 证书和密钥传送到此计算机。


example# zonecfg -z ex19 create \
    -a https://install.example.com/archives/combo.uar \
    -z database \
    -x cert=/root/install.pem \
    -x cacert=/root/example.com.pem \
    -x key=/root/sslkey.pem \; \
    set zonepath=/zones/ex19
示例 22 为全局区域的 p2v 创建区域配置

此示例显示了通过统一归档文件使用归档的全局区域作为源来创建区域配置。请注意,归档文件中的区域配置是使用 zonep2vchk(1M) 生成的,因而可能包含进一步定制建议的说明。


example# zonecfg -z ex20
ex20: No such zone configured
Use 'create' to begin configuring a new zone
set zonepath=/zones/ex20
zonecfg:ex20> create -a /export/p2v.uar -z global
zonecfg:ex20> info attr
attr:
                name: zonep2vchk-info
                type: string
                value: "p2v of host m4k"
attr:
                name: zonep2vchk-net-blue0
                type: string
                value: "original system had NIC blue0 with MAC
                       address 0:8:20:9e:eb:8c and IP address
                       10.147.23.12: consider anet
                       (linkname=blue0
                       mac-address=0:8:20:9e:eb:8c
                       allowed-address=10.147.23.12)"
attr:
                name: zonep2vchk-num-cpus
                type: string
                value: "original system had 4 CPUs: consider
                       capped-cpu (ncpus=4.0) or dedicated-cpu
                       (ncpus=4)"
attr:
                name: zonep2vchk-physmem
                type: string
                value: "original system had 32 GB: consider
                       capped-memory (physical=32G)"
attr:
                name: zonep2vchk-swap
                type: string
                value: "original system had 48 GB: consider
                       capped-memory (swap=48G)"
zonecfg:ex20> select anet linkname=blue0
zonecfg:ex20:anet> set allowed-address=10.147.23.12
zonecfg:ex20:anet> set configure-allowed-address=true
zonecfg:ex20:anet> end
zonecfg:ex20> add capped-memory
zonecfg:ex20:capped-memory> set swap=48G
zonecfg:ex20:capped-memory> end
zonecfg:ex20> exit
示例 23 创建具有连接到弹性虚拟交换机的 anet 资源的区域。

以下示例创建了一个具有 VNIC anet 资源的区域;该资源连接到 tenant tenantA 的 EVS evsa 以及 VPort vport0

example# zonecfg -z evszone
evszone: No such zone configured
Use 'create' to begin configuring a new zone
zonecfg:evszone> create
zonecfg:evszone> set zonepath=/export/zones/evszone
zonecfg:evszone> set tenant=tenantA
zonecfg:evszone> add anet
zonecfg:evszone:net> set evs=EVSA
zonecfg:evszone:net> set vport=vport0
zonecfg:rozone:net> end
zonecfg:rozone> exit
example# zoneadm -z evszone install
example# zoneadm -z evszone boot
example# dladm show-vnic -c

LINK           TENANT   EVS   VPORT   OVER  MACADDRESS        VIDS
evszone/net0   tenantA  EVSA  vport0  net2  2:8:20:1a:c1:e4   0

在引导区域时,evszone/net0 VNIC anet 将具有 vport EVSA/vport0 的 MAC 地址、IP 地址和 SLA 属性。

示例 24 将区域配置复制到其他系统进行区域迁移

在将某个区域从一个全局区域迁移到另一个全局区域时,需要先迁移区域配置。export 子命令可导出所有区域配置,以便将其与 zonecfg –f 选项一起使用,从而在新全局区域上完全保留这些配置。如果不使用此示例中所示的过程,则内核区域将无法访问任何暂停文件,或者无法正确地连接到新的全局区域。

global1# zonecfg -z ex22 export -f /net/scratch/export/ex22.cfg
global2# zonecfg -z ex22 -f /net/scratch/export/ex22.cfg

退出状态

将返回以下退出值:

0

成功完成。

1

出现错误。

2

用法无效。

属性

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

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

另请参见

ppriv(1)prctl(1)lgrpinfo(1)zlogin(1)archiveadm(1M)dladm(1M)format(1M)ipadm(1M)kstat(1M)mount(1M)pooladm(1M)poolcfg(1M)poold(1M)psrinfo(1M)rcapd(1M)rctladm(1M)route(1M)suriadm(1M)svcadm(1M)zfs(1M)zoneadm(1M)zonep2vchk(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)solaris-kz(5)suri(5)tpd(5)zones(5)dev(7FS)hsfs(7FS)zfs(7FS)uscsi(7I)evsadm(1M)

Resource Management and Oracle Solaris Zones Developer’s Guide

附注

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

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

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

要允许通过 format(1M) 来设置磁盘标签,应将整个磁盘/LUN 委托给区域,并设置 allow-partition 属性。例如:

zonecfg:myzone> add device
zonecfg:myzone> set match=/dev/*dsk/c2t40d3*
zonecfg:myzone> set allow-partition=true
zonecfg:myzone> end

也可以只委托磁盘的单个分片(例如 match=/dev/dsk/c2t40d3s0),但不建议这样做。为了确保该操作的安全性,allow-partition 属性不得为 true,且分片或分区不得与包含磁盘标签(这些标签位于分区或磁盘的前两个或后两个块中)的磁盘头重叠。

可以通过将 allow-raw-io 属性设置为 true 来启用对存储设备的原始访问权限。这是不安全的,因为它会允许区域进程执行原始 SCSI 命令(请参见 uscsi(7I))。

在区域内,“设备在使用中”检查不起作用,因为它所依赖的 /devices/ 树不存在。将来的项目可能会解决此限制。

"add fs" 资源指定的 lofs 文件系统挂载点不得位于区域挂载的任何文件系统内。特别是这类挂载点不得位于 /var/export 之下。