Go to main content

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

退出打印视图

更新时间: 2018年8月8日 星期三
 
 

zonecfg(8)

名称

zonecfg - 设置区域配置

用法概要

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

描述

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

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

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

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

zonecfg –z [–r] zonename subcommand

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

缺省

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

如果未提供任何 –z zonename 选项,则在没有任何区域的情况下启动配置会话。这可用于创建可导出、但不能保存或应用的配置。

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

实时

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

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

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

在下面的文本中,rctl 表示 resource control(资源控制)的缩写。请参见 resource-controls(7) 手册页。

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

资源

支持下列资源类型:

attr

通用属性。

capped-cpu

CPU 的使用限制。

capped-memory

物理内存、交换内存和锁定内存的限制。(可选)为 solaris-kz 标记区域的物理内存指定 pagesize-policy

dataset

ZFS 数据集。

dedicated-cpu

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

device

设备.

fs

文件系统。

ib-vhca

虚拟 InfiniBand 设备。

port

虚拟 InfiniBand 设备的端口。端口资源仅在 ib-vhca 资源范围中有效。

keysource

加密密钥

net

网络接口。

anet

自动网络接口。

mac

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

vlan

为区域配置的额外 VLAN ID。VLAN 资源仅在 anet 资源内有效。

smf-dependency

区域 SMF 实例的 SMF 依赖项。

admin

受委托的管理员。

rctl

资源控制。

suspend

暂停映像

rootzpool

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

virtual-cpu

为区域配置的虚拟 CPU。

zpool

委托给区域的 ZFS zpool。

npiv

光纤通道 NPIV 端口。

verified-boot

区域的已验证引导设置。

多实例资源具有唯一标识资源的每个实例的标识符。标识符是 info 子命令的输出中显示在所有多实例资源的每个实例旁的一个编号。标识符是自动生成的,并且用户不可修改,它们在整个 zonecfg 会话中保持一致。

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

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

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

属性

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

支持下列属性:

(全局)

zonename

(全局)

zonepath

(全局)

autoboot

(全局)

autoshutdown

(全局)

global-time

(全局)

bootargs

(全局)

boot-priority

(全局)

pool

(全局)

limitpriv

(全局)

brand

(全局)

cpu-shares

(全局)

hostid

(全局)

max-adi-metadata-memory

(全局)

max-lwps

(全局)

max-msg-ids

(全局)

max-processes

(全局)

max-sem-ids

(全局)

max-shm-ids

(全局)

max-shm-memory

(全局)

scheduling-class

(全局)

fs-allowed

(全局)

file-mac-profile

(全局)

tenant

(全局)

cpu-arch

(全局)

host-compatible

(全局)

boot-disk-protection

fs

dirspecialrawtypeoptions

net

addressallowed-addressconfigure-allowed-addressphysicaldefrouterid

anet

linknamelower-linkallowed-addressauto-mac-addressconfigure-allowed-addressdefroutermac-addressmac-slotmac-prefixmtumaxbwbwsharepriorityvlan-idvsi-typeidvsi-versvsi-mgridrxfanoutrxringstxringslink-protectionallowed-dhcp-cidspkeylinkmodeetsbw-lclcosidevsvportiovvlanring-groupautopush

mac

auto-mac-addressmac-addressmac-prefixallowed-mac-addressid

vlan

vlan-iddynamic-vlan-id

device

matchstoragecreate-sizeallow-partitionallow-raw-ioallow-mhdidbootpri

ib-vhca

over-hcasmi-enabledid

port

pkeyid

rctl

namevalue

attr

nametypevalue

dataset

namealias

dedicated-cpu

ncpusimportance

cpuscoressockets

virtual-cpu

ncpus

capped-memory

physicalswaplockedpagesize-policy

capped-cpu

ncpus

admin

userauths

rootzpool

storage

zpool

storagename

npiv

virtual-port-wwnover-hba

verified-boot

policycert

hostkey

raw

suspend

pathstorage

像与这些名称配对的属性值一样,它们是一个字符串或字符串列表。允许的类型特定于属性。单个值也可以用引号引起来。

列表具有语法:

[<value>,...]

其中,每个 <value> 都是一个字符串属性。仅包含单个值的列表等效于在不使用 list 语法的情况下指定该值。例如,"foo" 等效于 "[foo]"。列表可以为空(用 "[]" 表示)。

属性类型如下所述:

全局:zonename

区域的名称。

全局:zonepath

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

全局:global-time

布尔值,指示区域可以更改全局/系统范围的时间(如果为 True)或可以更改区域特定的时间(如果为 False)。

全局:autoboot

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

# svcadm enable svc:/system/zones:default

enable(启用)替换为 disable(禁用)可禁用区域服务。有关更多信息,请参见 svcadm(8) 手册页。

全局:autoshutdown

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

全局:bootargs

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

全局:pool

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

全局:limitpriv

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

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

有关特权的说明,请参见 privileges(7) 手册页。命令 "ppriv -l"(请参见 ppriv(1) 手册页)可以生成所有 Oracle Solaris 特权的列表。您可以按 ppriv 显示的格式指定特权。在 privileges(7) 手册页中,特权以 PRIV_privilege_name 格式列出。例如,在此属性中指定的特权 sys_timeprivileges(7) 手册页中列为 PRIV_SYS_TIME

全局:brand

区域的标记类型

全局:ip-type

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

此属性可以接受的值为 exclusiveshared

在将来的发行版中可能删除共享 IP 功能。我们强烈建议使用独占 IP。删除此功能后,将不再引导配置为使用此功能的区域。

要继续使用您的区域,请将 IP 类型设置为 shared 的任何区域转换为 IP 类型设置为 exclusive。在大多数情况下,这涉及将 zonecfg (8) "net" 资源替换为 "anet" 资源。如果您具有共享 IP 区域,该区域使用作为全局区域 IPMP 组的一部分的接口,则您应该切换为使用 DLMP 聚合。在全局区域中,在旧的 IPMP 接口上创建 DLMP 聚合,然后创建 zonecfg (8) "anet" 资源,其中 lower-link 指向该 DLMP 聚合。将为某些多级别服务器 Trusted Extensions 配置保留有限共享 IP 支持。

全局:hostid

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

全局:fs-allowed

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

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


Caution

注意  -  如果允许挂载非缺省文件系统,将使得区域管理员能够使用伪造的文件系统映像来危害系统安全。 非缺省文件系统未经审计,无法供非全局区域安全使用。使用此选项可能会破坏区域安全。这可能包括导致整个系统故障或其他问题,因此使用此选项时务必要小心谨慎。


全局:file-mac-profile

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

该属性当前支持五个值:nonestrictdynamic-zonesfixed-configurationflexible-configuration

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

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

dynamic-zones 等效于 fixed-configuration,但允许创建和销毁非全局区域和内核区域。此配置文件仅对全局区域有效,包括内核区域的全局区域。

flexible-configuration 等效于 dynamic-zones,但还允许写入到 /etc 中的文件。

全局:tenant

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

定义 VNIC anet 要连接到的 EVS 所属的 tenant 的名称。请参见 evsadm(8) 手册页。

全局:cpu-arch

指定为 solaris-kz 标记区域配置的迁移类。

迁移类用于启用源主机与目标主机之间兼容的硬件功能,从而在两者之间启用实时迁移或热迁移。

有关此属性的可能值的信息,请参见 solaris-kz(7) 手册页。

全局:host-compatible

指定为 solaris-kz 标记区域配置的主机兼容性级别。

兼容性级别用于启用在全局区域中运行的 Oracle Solaris 版本支持的、在源主机与目标主机之间兼容的功能,从而在两者之间启用实时迁移或热迁移。

只有同时通过迁移类和主机兼容性级别启用的功能才对内核区域可见。

通过指定兼容性级别修饰符,可以扩展兼容性级别中包含的功能。每个修饰符只能与其后列出的指定兼容性级别一起使用。目前,此属性仅适用于 SPARC 平台,在 x86 平台上不受支持。

可能的主机兼容性级别为:

native

当前 Oracle Solaris 版本中支持的所有功能均已启用,这样可以防止将其迁移到其他运行不同 Oracle Solaris 版本的主机。

level1

level1 级别包括 ADI、DAX 和 VA 屏蔽功能。

如果未设置值,则缺省内核区域的主机兼容性级别仅包含 Oracle Solaris 11.2 中支持的功能。

以下 virtinfo 命令可用于找出当前 Solaris 版本支持的主机兼容性级别(前提是支持内核区域):

# virtinfo -c supported get host-compatible-levels kernel-zone

可能的兼容性级别修饰符为:

adi

启用 ADI 功能,只能与缺省兼容性级别一起使用。

此属性的一般语法为:

host-compatible=<compatible-level-name>[,modifier-name]...

指定缺省兼容性级别的修饰符时,语法为:

host-compatible=<modifier-name>[,modifier-name]...

请注意,修饰符无法用于启用迁移类不支持的功能。

全局:boot-disk-protection

启用或禁用 solaris-kz 标记区域的引导磁盘保护功能。可设置为 onoff。缺省值为 off(关闭)。

设置为 on 时,将通过 PGR 预留功能预留引导磁盘,其中主机 ID 作为密钥,SCSI3_RESV_WRITEEXCLUSIVEREGISTRANTSONLY 作为预留类型。分离或卸载区域后,将删除预留。

由于簇软件也在其管理的磁盘上使用 PGR 预留,因此,不能在同时还由任何其他簇软件管理的磁盘上使用此功能。在这种情况下,需要将 boot-disk-protection 设置为 off。还可以将在全局区域中运行的簇软件重新配置为不管理引导磁盘。

请注意,此功能要求所有引导磁盘位于支持 SCSI-3 PGR 预留的存储 LUN 上。如果任何引导磁盘不满足此要求,将无法连接或安装区域。

fsdirspecialrawtypeoptions

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

netaddressallowed-addressconfigure-allowed-addressphysicaldefrouterid

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

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

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

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

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

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

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

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

id 值是一个用于标识网络接口的正整数,请参见 solaris-kz(7) 手册页。

可将区域配置为独占 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(8) 在非全局独占 IP 区域中启用接口时(通常是在区域引导期间)应用于接口。非全局独占 IP 区域将无法向该接口应用任何其他地址,也无法传输具有指定 IP 版本的不同源地址的数据包。通过 zonecfg 设置的缺省路由器无法使用 –p 标志与 route(8) 从非全局独占 IP 区域内永久删除。

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

当前不支持将 IPoIB VNIC 分配到 solaris-kz 标记区域。

anetlinknamelower-linkallowed-addressauto-mac-addressconfigure-allowed-addressdefroutermac-addressmac-slotmac-prefixmtumaxbwbwsharepriorityvlan-idvsi-typeidvsi-versvsi-mgridrxfanoutrxringstxringslink-protectionallowed-dhcp-cidspkeylinkmodeetsbw-lclcosidevsvportmaciovvlanring-groupautopush

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

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

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

如果在区域中配置的给定 anet 资源具有 IP 接口,则在调用 LZR 之前必须先禁用或删除此接口,以便从区域中删除 anet 资源。否则,无法删除 anet 资源。


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

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(8) 手册页。

lower-link

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

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

  2. 在物理以太网链路中,选择符合以下条件的链路:

    1. 链路状态为 up

    2. 可用 VF 的数目最多(只有 iov=auto/on 时)

    3. 支持独占环组(只有 ring-group=exclusive 时)

    4. 空闲 mac-slots 的数目最多

    5. 从字母顺序角度而言名称最小的链路

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

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

allowed-address

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

auto-mac-address

当 mac-address 属性设置为 randomauto(仅当可以分配 mac-address 时)时,保存随机生成的 MAC 地址列表,以便区域能够持续地重新获取相同地址。要重置随机生成的地址,需要由管理员清除此属性。有关更多信息,请参见下面的 mac-address 属性。

bwshare

指定 VNIC 的带宽份额。请参见 dladm(8) 手册页中的 bwshare 属性。当前仅在某些 NIC 上支持此属性。

configure-allowed-address

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

cos

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

defrouter

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

etsbw-lcl

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

mac-address

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

  • factory:为 VNIC 分配出厂 MAC 地址。

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

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

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

mac-prefix

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

mac-slot

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

此设置已弃用,如果任何区域具有 mac-address=factorymac-address=auto 设置,则不应使用此设置,因为这些区域可能较早引导并最先获取插槽。如果需要特定的出厂 MAC 地址,请在 mac-address 中显式指定该地址,并确保任何可能使用插槽的其他区域不在此区域之前引导。

allowed-mac-address

指定 1 到 5 个八位字节长度的 MAC 前缀列表。进行此设置后,solaris-kz(7) 标记区域可以创建 VNIC,前提是 VNIC 的 MAC 地址以 allowed-mac-address 列表中的其中一个 MAC 地址前缀开头。

在特定情况下,用户将不会提前知道在 KZ 内部可能需要的 MAC 地址值。对于动态 MAC 地址配置,则需要提前知道此值。进行此设置后,来宾能够将其所需的 MAC 地址推送到主机,并能够在 MAC 地址以列表中的一个条目开头时在其内部成功创建一个 VNIC。

指定此属性后,就不能指定 anet mac 资源的其他任何属性。

allowed-mac-address 设置为一个特殊关键字 "any",将允许来宾创建带有任意有效单点传送 MAC 地址的 VNIC。

mtu

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

maxbw

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

priority

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

ring-group

设置此属性允许区域使用以太网链路的硬件环组功能。此属性的可能值为:

auto

OS 决定在特定 lower-link(缺省值)上使用 exclusive 还是 shared

shared

不使用专用硬件环组。

exclusive

使用独占硬件环组。如果独占硬件环组不可用,则 anet 创建会失败。

如果此属性为 exclusive 且未指定 lower-link,则除了其他条件之外,lower-link 选择逻辑还将考虑此项(有关详细信息,请参见 lower-link 属性)。

此属性具有以下限制:

  • 它与 anet iov 属性不兼容。

vlan-id

对该 VNIC 启用 VLAN 或 PVLAN 标记并指定 VLAN 标记的 ID。没有指定缺省值,这意味着如果未设置该属性,VNIC 将不会参与任何 VLAN。IPoIB 数据链路不支持此属性。有关支持的 VLAN ID 格式,请参见 dladm(8) 手册页。

vsi-typeid

指定与 VNIC 关联的 VSI 类型 ID。请参见 dladm(8) 手册页中的说明。

vsi-vers

指定与 VNIC 关联的 VSI 版本。请参见 dladm(8) 中的说明。

vsi-mgrid

指定与 VNIC 关联的 VSI 管理器 ID。请参见 dladm(8) 手册页中的说明。

rxfanout

指定接收端扇出线程数。请参见 dladm(8) 手册页中的说明。

rxrings

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

txrings

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

link-protection

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

要在 anet 上完全禁用 link-protection,请将 link-protection 的值设置为 none。此处假设不需要反欺骗(分区受信任或包装了高级网络服务),或者已在系统或网络中的其他位置对其进行了检查。

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

allowed-dhcp-cids

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

pkey

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

linkmode

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

cm

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

ud

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

iov

设置此属性允许 solaris-kz 标记区域对网络设备使用 SR-IOV VF。此属性的可能值为:

  • auto:使用 VF(如果一个可用),如果不可用,则回退到使用半虚拟化设备。

  • on:必须使用 VF。如果 VF 不可用,则创建 anet 将失败。

  • off:不使用 VF(缺省值)。

如果此属性为 auto/on 并未指定 lower-link,则除了其他条件之外,下游链路选择逻辑还将考虑此项(有关详细信息,请参见 lower-link 属性)。

下面是此属性的限制:

  • 它只能用于 solaris-kz 标记区域。

  • 除了 lower-linkidmac-addressmac-prefixmac-slotmaxbwbwsharepriority 之外,它与所有 anet 属性都不兼容。

  • 仅当 lower-link 是链路聚合时,iov 才能是 "off" 或 "auto"。

autopush

在打开链路的 DLPI 设备时推送到与该链路相关联的流的 STREAMS 模块集。此属性为模块名称的逗号分隔列表。只能在独占 IP 区域中使用。

id

一个用于标识网络接口的正整数,请参见 solaris-kz(7) 手册页。

vlanvlan-iddynamic-vlan-id

vlan 资源用于向 anet 资源添加额外的 VLAN ID。anet 的端口 VLAN ID 由 anet:vlan-id 属性提供。

vlan-id

指定针对其必须在外部网络和 solaris-kz 区域之间接收和发送帧的 VLAN ID。

dynamic-vlan-id

指定 VLAN ID 列表或 VLAN ID 范围。进行此设置后,只要 VLAN ID 属于 dynamic-vlan-id 列表,solaris-kz(7) 标记区域就会在特定 VLAN 上创建一个 VNIC。

在特定情况下,用户将不会提前知道在 KZ 内部可能需要的 VLAN ID 值。对于动态 VLAN ID 配置,则需要提前知道此值。进行此设置后,来宾能够将其所需的 VLAN ID 推送到主机,并能够在 VLAN ID 属于列表中的一个条目时在其内部成功创建一个 VNIC。

指定此属性后,就不能指定 anet mac 资源的其他任何属性。

dynamic-vlan-id 设置为一个特殊关键字 "any",将允许来宾使用任意有效的 VLAN ID。

通过指定其他 VLAN ID 集合,可以将在 solaris-kz 标记区域内部创建的区域和 VNIC 放置在它们自己的 VLAN 中。此资源能够使 solaris-kz 标记区域识别 VLAN。主机将用于这些未更改的 VLAN(未去掉 VLAN 标记)的包转发给 solaris-kz 区域。然后,solaris-kz 区域将该包转发给正确的客户机。

在传输端,这些 VLAN 上的包将由 solaris-kz 设置标记并传递到主机。主机会基于目标 MAC 转发包,但不会去掉标记。

macauto-mac-addressmac-addressmac-prefixid

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 值是一个正整数,用于唯一标识资源。

ib-vhcaover-hcaidport

ib-vhca 资源表示为内核区域自动创建的虚拟 Infiniband HCA 设备。此类区域引导时,将创建临时 VHCA。该区域停止时,该 VHCA 将销毁。

下面介绍了支持的属性。所有这些属性都是可选的。仅允许主机系统的全局区域修改自动 VHCA。如果 zonecfg 中设置的某个属性无法在创建 VHCA 时分配给该 VHCA,则该区域将无法引导。

over-hca

设置物理 InfiniBand 设备以用于虚拟 InfiniBand 设备的配置。设备名称如 ibadm 命令中所列出的那样。有关更多信息,请参见 ibadm(8) 手册页。

smi-enabled

指定虚拟 HCA 是否可以使用子网管理包 (Subnet Management Packets, SMP)。如果此属性的值为 "on",则允许此虚拟 HCA 使用 SMP。如果此属性为 "off",则此虚拟 HCA 不能使用 SMP。如果值为 "readonly",则此虚拟 HCA 只能使用查询 SMP 操作,而不能使用 "set" 操作。缺省值为 "off"。在不考虑可能会对光纤网络产生的安全影响的情况下,不建议使用值 "on"。使用 "on" 运行时,应该在光纤网络组件上设置 M_Keys

id

唯一地标识 ib-vhca 资源。

portpkeyid
pkey

指定 InfiniBand 分区密钥值。pkey 值可以是一个关键字,也可以是逗号分隔的十六进制值列表。0x 前缀不应用于指定十六进制值。pkey 允许的关键字如下:

auto

根据指定的 over-hca 值分配自动生成的 pkey 值。这是缺省值。

id

Id 用于唯一标识端口资源。每个 id 对应于该物理端口号。

可以通过检查运行区域的实时配置获得区域引导时分配给每个端口的 GUID。

devicematchstoragecreate-sizeallow-partitionallow-raw-ioallow-mhdidbootpri

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

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

请注意,只有 storage 属性才能用于内核区域。匹配属性不受支持。有关更多信息,请参见 solaris-kz(7) 手册页。

如果存储 URI 支持创建设备,则可设置 create-size 以描述要创建的设备的大小。如果存储 URI 存在且已设置 create-size,则会忽略 create-size

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


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

id 值是一个正整数,用于标识虚拟块设备。有关更多信息,请参见 solaris-kz(7) 手册页。

bootpri 属性指定引导磁盘的相对引导优先级。有关更多信息,请参见 solaris-kz(7) 手册页。

rctlnamevalue

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

可以采用以下形式指定多个 rctl 值:

(priv=<value>,limit=<value>,action=<value>)
virtual-cpus: ncpus

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

attrnametypevalue

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

attr 资源的 name 属性在语法方面的限制类似于区域名称,但不完全相同:它必须以字母数字开头,可以包含字母数字以及连字符 (-)、下划线 (_) 和点 (.) 字符。以 "zone" 开头的属性名称保留供系统使用。最后,autobootglobal-time 全局属性的值必须为 "true" 或 "false"。

datasetnamealias

要从区域内访问的 ZFS 数据集的名称。请参见 zfs(8) 手册页。为每个数据集设置了别名,以便它在区域中显示为虚拟 ZFS 池。


注 -  对于委托的数据集资源,唯一受支持的 ZFS 数据集类型是 filesystem。无法添加其他数据集类型,如卷和快照。

alias 是该虚拟池的名称。有关应用于 ZFS 池名称进而也应用于数据集别名值的名称限制,请参见 zpool(8) 手册页。别名 rpool 是从区域的 rpool 数据集中保留的。请注意,别名数据集和设备资源可能会在 /dev/zvol 中存在名称空间冲突。请参见 dev(4FS) 手册页。

全局:cpu-shares

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

全局:max-adi-metadata-memory

用于存储可能会写入后备存储的页面 ADI 元数据的内存总量。此属性是设置 zone.max-adi-metadata-memory 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(8)pooladm(8) 手册页。

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

选择特定 cpu 资源

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

可以按 resource-management(7) 所述将这些属性设置为 id 列表字符串。

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

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

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

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

自动选择 CPU 资源

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

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

可以选择设置 "importance" 以配置池。与专用 CPU 相关联的资源池的 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-memoryphysicalswaplockedpagesize-policy

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

pagesize-policy 属性用于指定 solaris-kz 标记的策略,以使用物理内存的大页面。有关更多信息,请参见 solaris-kz(7) 手册页。

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(7)

global: boot-priority

区域委托重启程序在执行区域自动引导时使用的优先级。优先级可以设置为 highnormallow。有关更多信息,请参见 svc.zones(8) 手册页。

smf-dependencyfmrigroupingname

定义区域 SMF 实例的 SMF 依赖项。区域的所有 SMF 依赖项均将 restart_on 设置为 none。每个 smf-dependency 资源均必须具有一个 FMRI 属性。如果忽略 grouping,则使用缺省值 require_all。name 是可选的,仅在需要对多个 FMRI 进行分组时才应使用(例如,在 require_any 依赖项中)。设置现有名称时会自动填充分组。带有 'SMF-DEP-' 前缀的名称是为系统保留的,无法设置。有关依赖性类型、分组和 restart_on 定义的更多信息,请参见 smf(7) 手册页。

adminuserauths

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

clonefrom

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

config

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

liveconfig

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

login

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

manage

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

migrate

允许在主机之间迁移区域。允许迁移已安装和正在运行的区域。

migrate.cold

允许在主机之间冷迁移区域。仅允许迁移已安装的区域。

rootzpool: storage

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

zpoolstoragename

定义一个或多个专用于已委托给区域的 zpool 的存储资源。允许的 storage 值是在 suri(7) 手册页中定义的。允许的 name 值是在 zpool(8) 手册页中定义的。不允许使用名称 rpool

npivvirtual-port-wwnover-hba

通过 virtual-port-wwn 为 npiv 设置一个唯一的 64 位端口全局名称,这是可选的并且将设置有自动生成的 wwn。用户仍然可以覆盖此生成的 wwn。

属性 over-hba 也是可选的,并且它可以是空字符串,这意味着将以循环方式选择物理 HBA 端口来将它们分布在可用的端口中。如果设置了此属性,则 over-hba 的值必须是以 'c' 开头的无符号整数(表示支持物理 NPIV 的 FC HBA 控制器),如 /dev/cfg/c* 下所示。有关更多详细信息,请参阅 cfgadm_fp(8) 手册页。

verified-bootpolicycert
policy

控制区域来宾中引导装载程序和内核模块的 ELF 签名验证。值可以设置为 "none"、"warning" 和 "enforce"。"None" 将跳过验证。"Warning" 在验证失败时记录消息。"Enforce" 将导致模块在失败时不装入。缺省情况下,policy 设置为 "warning"。

cert

为第三方和自签名软件添加客户安装的公钥证书。除缺省 Oracle 证书外,这些证书文件也用于 ELF 签名验证。可以使用 file:///http://https:// URL 添加证书路径。

keysource: raw

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

suspendpathstorage

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

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

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

# kstat caps::'/cpucaps/'

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

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

caps

kstat 模块。

project_capszone_caps

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

cpucaps_project_idcpucaps_zone_id

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

以下字段会显示,以响应请求所有 CPU 上限的统计信息的 kstat(8) 命令。

module

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

name

如上所述,cpucaps_project_ idcpucaps_zone_id

above_sec

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

below_sec

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

maxusage

观察到的最大 CPU 使用量。

nwait

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

usage

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

value

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

zonename

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

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

通过统一归档文件配置

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

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

-

host id

anet

allowed-address

anet

mac-address

anet:mac

mac-address

net

allowed-address

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

zonepath

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

dataset/alias

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

dataset/name

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

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

选项

支持以下选项:

–f command_file

指定 zonecfg 命令文件的名称。command_file 是包含 zonecfg 子命令的文本文件,一个子命令对应从 export 子命令的输出获取的一行。

–r

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

–z zonename

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

标记

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

%{zonename}

求值结果为区域的名称

%{id}

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

%{global-rootzpool}

求值结果为全局区域的 rootzpool 名称。

%%

求值结果为 %

-----------------------------------------------------------------
|Resource  | Property | Supported Tokens                        |
|---------------------------------------------------------------|
|global    | zonepath | %{zonename}                             |
|---------------------------------------------------------------|
|dataset   | name     | %{zonename}                             |
|---------------------------------------------------------------|   
|device    | match    | %{zonename}, %{id}, %{global-rootzpool} |
|          | storage  | %{zonename}, %{id}, %{global-rootzpool} |
|---------------------------------------------------------------|
|fs        | raw      | %{zonename}                             |
|          | special  | %{zonename}                             |
|---------------------------------------------------------------|
|net       | physical | %{id}                                   |
|---------------------------------------------------------------|
|anet      | linkname | %{id}                                   |
|---------------------------------------------------------------|
|suspend   | storage  | %{zonename}, %{global-rootzpool}        |
|          | path     | %{zonename}                             |
|---------------------------------------------------------------|
|rootzpool | storage  | %{zonename}, %{global-rootzpool}        |
|---------------------------------------------------------------|
|zpool     | storage  | %{zonename}, %{global-rootzpool}        |
-----------------------------------------------------------------

子命令

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

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

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

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

支持以下子命令:

add resource-type
add property-name property-value (resource scope)

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

在资源范围中,添加具有给定名称和给定值的属性。用于属性值的语法随属性类型不同而不同。一般情况下,它是一个简单值或者是用方括号括起来并以逗号分隔的简单值列表 ([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] [–x <cert|ca-cert|key>=path] ...

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

如果要覆盖现有的配置,请指定 –F 选项以强制执行操作。这可以用于将 zonecfg –f input.cfg 与此选项结合使用来重新导入整个区域配置。对于处于某些状态的区域,对其执行额外的验证检查。例如,已安装的区域无法更改其标记。

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

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

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

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

delete [–F]

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

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

end

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

export [–r] [–f output-file]

将配置列显到标准输出。仅包括用户显式设置的非缺省值。使用 –f 选项可将配置输出到 output-file。此选项以适合在命令文件中使用的格式生成输出。如果指定了 -r 选项,则当区域已存在时,输出可以用于进行重新导入。

help [subcommand]

列显常规帮助或有关给定主题的帮助。

info zonename | zonepath | autoboot | autoshutdown | brand | pool | limitpriv | global-time
info [–a] [–i | –I] [resource-type [identifier | [property-name=property-value]*]]

显示有关当前配置的信息。如果指定了 resource-type,将仅显示关于相关类型的资源的信息。如果指定了任何标识符或属性名称值对,则只会显示符合指定条件的资源的相关信息。在资源范围中,info 显示当前正在添加或修改的资源的相关信息。

此子命令只会显示具有非缺省值的属性。使用 –a 选项可输出所有属性,而不论它们是否具有缺省值。请参见“示例”部分。

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

支持以下选项:

–i

始终包括标识符

–I

从不包括标识符

–a

显示所有属性(具有和不具有缺省值)。

remove resource-type [identifier | {property-name=property-value}]

删除指定的资源。如果只需要删除资源的单个实例,必须指定资源的 identifier 或足够的 property name-value 对才能唯一地标识资源。如果未指定 identifierproperty name-value 对,则将删除所有实例。如果某个 resource-type 有多个实例,则需要进行确认,除非您使用了 –F 选项。

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

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

set property-name =property-value

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

verify [–v]

检验当前配置是否正确:

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

  • 指定了 zonepath

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

reload [–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 myzone
my-zone3: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:myzone> create
zonecfg:myzone> info zonepath
zonepath.template: /system/zones/%{zonename}
zonepath: /system/zones/myzone
zonecfg:myzone> set autoboot=true
zonecfg:myzone> add fs
zonecfg:myzone:fs> set dir=/opt/local
zonecfg:myzone:fs> set special=/usr/local
zonecfg:myzone:fs> set type=lofs
zonecfg:myzone:fs> add options [ro,nodevices]
zonecfg:myzone:fs> end
zonecfg:myzone> add fs
zonecfg:myzone:fs> set dir=/mnt
zonecfg:myzone:fs> set special=/dev/dsk/c0t0d0s7
zonecfg:myzone:fs> set raw=/dev/rdsk/c0t0d0s7
zonecfg:myzone:fs> set type=ufs
zonecfg:myzone:fs> end
zonecfg:myzone> add fs
zonecfg:myzone:fs> set dir=/opt/sfw
zonecfg:myzone:fs> set special=/opt/sfw
zonecfg:myzone:fs> set type=lofs
zonecfg:myzone:fs> add options [ro,nodevices]
zonecfg:myzone:fs> end
zonecfg:myzone> select anet linkname=net0
zonecfg:myzone:anet> set lower-link=nxge0
zonecfg:myzone:anet> set allowed-address="192.168.0.1/24, \
  192.168.1.2/24,192.168.2.3/24"
zonecfg:myzone: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:myzone> exit
示例 2 创建独占 IP 区域

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

example# zonecfg -z excl-ip
zonecfg:excl-ip> create
zonecfg:excl-ip> exit
示例 3 创建共享 IP 区域

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

example# zonecfg -z shared-ip
zonecfg:shared-ip> create -b
zonecfg:shared-ip> set ip-type=shared
zonecfg:shared-ip> add net
zonecfg:shared-ip:net> set physical=nge0
zonecfg:shared-ip:net> set address=192.168.0.3/24
zonecfg:shared-ip:net> set defrouter=192.168.0.1
zonecfg:shared-ip:net> end
zonecfg:shared-ip> exit
示例 4 将区域与资源池相关联

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

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

有关资源池的更多信息,请参见 pooladm(8)poolcfg(8) 手册页。

示例 5 更改区域的名称

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

example# zonecfg -z myzone
zonecfg:myzone> set zonename=myzone2
zonecfg:myzone2> exit
示例 6 更改区域的特权集

以下示例显示了如何更改特权集。现有区域的进程将限制为下次引导区域时。在这个特定的案例中,特权集将是区域正常情况下拥有的标准安全特权集,加上使用配置文件、dtrace 的 syscall 提供器和某些警告的特权:

example# zonecfg -z myzone
zonecfg:myzone> set limitpriv="default,dtrace_user"
zonecfg:myzone2> exit
示例 7 更改 global-time 属性以设置系统范围的时间
example# zonecfg -z myzone
zonecfg:myzone> set global-time="true"
zonecfg:myzone2> exit
示例 8 设置全局区域的 zone.cpu-shares 属性

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

example# zonecfg -z global
zonecfg:global> set cpu-shares=5
zonecfg:global> exit
示例 9 使用模式匹配

以下命令展示了 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
示例 10 将区域的上限设置为三个 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
示例 11 使用 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
示例 12 显示特定区域或项目的 CPU 上限

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

# kstat -c project_caps

# kstat -c project_caps -i 1
示例 13 委托区域管理权限

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

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(5) 数据库中的更新条目,类似于以下条目:

zadmin::::type=role; \
  auths=solaris.zone.login/myzone,solaris.zone.manage/myzone; \
  profiles=Zone Management
示例 14 创建具有非缺省属性的独占 IP 区域

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

example# zonecfg -z excl-ip
excl-ip: No such zone configured
Use 'create' to begin configuring a new zone
zonecfg:excl-ip> create -b
zonecfg:excl-ip> add anet
zonecfg:excl-ip:anet> set linkname=mynic0
zonecfg:excl-ip:anet> set lower-link=mylink0
zonecfg:excl-ip:anet> set mac-address=8:0:20:fe:4e:b8
zonecfg:excl-ip:anet> set maxbw=100M
zonecfg:excl-ip:anet> set priority=high
zonecfg:excl-ip:anet> set vlan-id=2
zonecfg:excl-ip:anet> set rxrings=hw
zonecfg:excl-ip:anet> set txrings=sw
zonecfg:excl-ip:anet> end
zonecfg:excl-ip> exit
示例 15 创建只读区域

以下示例将创建一个可防止区域对其根文件系统进行修改的新区域。由于应用了 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 autoboot=true
zonecfg:rozone> set file-mac-profile=fixed-configuration
zonecfg:rozone> add net
zonecfg:rozone:net> set physical=vnic0
zonecfg:rozone:net> end
zonecfg:rozone> exit
示例 16 创建包含 IB 分区的独占 IP 区域

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

example# zonecfg -z excl-ip
excl-ip: No such zone configured
Use 'create' to begin configuring a new zone
zonecfg:excl-ip> create
zonecfg:excl-ip> set ip-type=exclusive
zonecfg:excl-ip> add anet
zonecfg:excl-ip> set linkname=part0
zonecfg:excl-ip> set lower-link=net4
zonecfg:excl-ip> set pkey=ffff
zonecfg:excl-ip:anet> end
zonecfg:excl-ip> exit
示例 17 创建一个安装到专用存储资源和 rootzpool 中的区域

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

example# zonecfg -z zoss
zoss: No such zone configured
Use 'create' to begin configuring a new zone
zonecfg:zoss> create
zonecfg:zoss> add rootzpool
zonecfg:zoss:rootzpool> add storage \
  iscsi://127.0.0.1/luname.naa.600144f03d70c80000004ea57da10001
zonecfg:zoss:rootzpool> end
zonecfg:zoss> exit
示例 18 创建具有委托的 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
示例 19 创建具有 npiv 资源的区域

以下示例将创建一个新区域,并且为该区域委托了两个 npiv 资源。在安装区域期间将自动创建两个 npiv 端口。

example# zonecfg -z vzone
vzone: No such zone configured
Use 'create' to begin configuring a new zone
zonecfg:vzone> create
zonecfg:vzone> add npiv
zonecfg:vzone:npiv> set virtual-port-wwn=2100000000000001
zonecfg:vzone:npiv> set over-hba=c9
zonecfg:vzone:npiv> end
zonecfg:vzone> add npiv
zonecfg:vzone:npiv> end
zonecfg:vzone> exit
示例 20 检查正在运行的区域的实时配置

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

example# zonecfg -z myzone -r
zonecfg:myzone> info
示例 21 在不重新引导区域的情况下临时向正在运行的区域添加新的 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
示例 22 通过统一归档文件创建区域配置

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

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

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

example# zonecfg -z uar-zone \
  "create -a /export/archives/web.uar; set zonepath=/system/zones/uar-zone"

示例 23 通过安全的 Web 服务器上的统一归档文件创建区域配置

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

example# zonecfg -z uar-zone 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=/system/zones/uar-zone"
示例 24 为全局区域的 p2v 创建区域配置

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

example# zonecfg -z uar-gz
uar-gz: No such zone configured
Use 'create' to begin configuring a new zone
zonecfg:uar-gz> create -a /export/p2v.uar -z global
zonecfg:uar-gz> 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:uar-gz> select anet linkname=blue0
zonecfg:uar-gz:anet> set allowed-address=10.147.23.12
zonecfg:uar-gz:anet> set configure-allowed-address=true
zonecfg:uar-gz:anet> end
zonecfg:uar-gz> add capped-memory
zonecfg:uar-gz:capped-memory> set swap=48G
zonecfg:uar-gz:capped-memory> end
zonecfg:uar-gz> exit
示例 25 创建具有连接到弹性虚拟交换机的 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 tenant=tenantA
zonecfg:evszone> add anet
zonecfg:evszone:anet> set evs=EVSA
zonecfg:evszone:anet> 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 属性。

示例 26 更改已验证的引导设置
# zonecfg -z vbzone1 
zonecfg:vbzone1> add verified-boot
zonecfg:vbzone1:verified-boot> set policy=enforce
zonecfg:vbzone1:verified-boot> add cert \
  file:///etc/certs/elfsign/mycert.pem
zonecfg:vbzone1:verified-boot> add cert \
  http://keyserv.hang10software.com/keydist/hang10se.pem
zonecfg:vbzone1:verified-boot> end
示例 27 将区域配置复制到其他系统进行区域迁移

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

global-1# zonecfg -z myzone export -f /net/scratch/export/myzone.cfg

global-2# zonecfg -z myzone -f /net/scratch/export/myzone.cfg
示例 28 anet iov 属性用于内核区域

在此示例中,iov-kz 是具有单个 anet 的内核区域。

global# zonecfg -z iov-kz
zonecfg:iov-kz> select anet id=0
zonecfg:iov-kz:anet> set iov=auto
zonecfg:iov-kz:anet> end
zonecfg:iov-kz> exit

如果 lower-link 不是 auto,用户必须确保在引导内核区域之前 lower-link 已打开 iov。如果 lower-link 为 auto,用户必须确保全局区域至少具有一个打开 iov 的链路。

如果 iov 未打开,可以通过以下方式将其打开:

# dladm set-linkprop -p iov=on net1

如果 VF 可用,在引导内核区域后,VF 应显示为内核区域内的物理 NIC 设备:

iov-kz# dladm show-phys
LINK      MEDIA        STATE      SPEED    DUPLEX    DEVICE
net0      Ethernet     up         10000    full      ixgbevf0
示例 29 在内核区域中将 NFS SURI 用于设备属性
# zonecfg -z nfs-kz 
zonecfg:nfs-kz> add device
zonecfg:nfs-kz> set \
  storage=nfs://user1:staff@testsys1/export/test/nfs-kz-dev1
zonecfg:nfs-kz> set create-size=8g
zonecfg:nfs-kz> end
zonecfg:nfs-kz> exit
示例 30 使用已指定多个 VLAN ID 的 anet 资源创建区域
# zonecfg -z vlan-kz
zonecfg:vlan-kz> create -t SYSsolaris-kz
zonecfg:vlan-kz> select anet id=0
zonecfg:vlan-kz> set mac-address=0:1:2:3:4:5
zonecfg:vlan-kz:anet> set vlan-id=11
zonecfg:vlan-kz:anet> add vlan
zonecfg:vlan-kz:anet:vlan> set vlan-id=45
zonecfg:vlan-kz:anet:vlan> end
zonecfg:vlan-kz:anet> add vlan
zonecfg:vlan-kz:anet:vlan> set vlan-id=46
zonecfg:vlan-kz:anet:vlan> end
zonecfg:vlan-kz:anet> info vlan
	vlan 0:
		vlan-id: 45
	vlan 1:
		vlan-id: 46
zonecfg:vlan-kz:anet> end
zonecfg:vlan-kz> commit
zonecfg:vlan-kz> exit

这表示主机上的虚拟交换机现已配置为处理带有以下 <mac-address, vlan-id> 元组的帧:

-- <0:1:2:3:4:5, 11>
-- <0:1:2:3:4:5, 45>
-- <0:1:2:3:4:5, 46>

带有 <0:1:2:3:4:5, 11> 元组的帧将去掉其 VID 并传递到 solaris-kz。来宾将永远不会看到标记有 VID 11 的包。带有 <0:1:2:3:4:5, 45> 和 <0:1:2:3:4:5, 46> 的帧就像传递到 solaris-kz 一样进行传递。

vlan-kz 内部,如果存在一个 VID 为 45 的 VLAN 数据链路,来宾中的虚拟交换机会从帧中去掉 VID 45 并将此帧传递到 vlan45。所有源自来宾内部 vlan45 数据链路的帧都将由该来宾中的虚拟交换机设置标记并传递到主机中的 anet。主机 anet 将帧直接传递到 NIC 以进行发送。

示例 31 设置区域的 boot-priority 和 SMF 依赖项

设置区域的高引导优先级及其 SMF 实例依赖项,需要

svc:/application/frobnicate:default

以及任一

svc:/system/zones/zone:appfirewall
svc:/3rdparty/my-firewall:default

并排除区域

svc:/system/zones/zone:dataload
example# zonecfg -z foo 
zonecfg:foo> set boot-priority=high 
zonecfg:foo> add smf-dependency 
zonecfg:foo:smf-dependency> set
  fmri=svc:/application/frobnicate:default 
zonecfg:foo:smf-dependency> end 
zonecfg:foo> add smf-dependency 
zonecfg:foo:smf-dependency> set name=firewall 
zonecfg:foo:smf-dependency> set fmri=svc:/system/zones/zone:appfirewall 
zonecfg:foo:smf-dependency> set grouping=require_any 
zonecfg:foo:smf-dependency> end 
zonecfg:foo> add smf-dependency 
zonecfg:foo:smf-dependency> set name=firewall 
zonecfg:foo:smf-dependency> set fmri=svc:/3rdparty/my-firewall:default 
zonecfg:foo:smf-dependency> end 
zonecfg:foo> add smf-dependency 
zonecfg:foo:smf-dependency> set fmri=svc:/system/zones/zone:dataload 
zonecfg:foo:smf-dependency> set grouping=exclude_all 
zonecfg:foo:smf-dependency> end 
zonecfg:foo> exit
示例 32 设置 solaris-kz 标记区域以动态配置 MAC 地址和 VLAN ID
# zonecfg -z dyn-vlan-kz
zonecfg:dyn-vlan-kz> create -t SYSsolaris-kz
zonecfg:dyn-vlan-kz> select anet id=0
zonecfg:dyn-vlan-kz> set mac-address=0:1:2:3:4:5
zonecfg:dyn-vlan-kz:anet> add mac
zonecfg:dyn-vlan-kz:anet:mac> add allowed-mac-address fa:16:3f
zonecfg:dyn-vlan-kz:anet:mac> add allowed-mac-address fa:80:20:21:22
zonecfg:dyn-vlan-kz:anet:mac> end
zonecfg:dyn-vlan-kz:anet> end
zonecfg:dyn-vlan-kz:anet> info mac
	mac 0:
		mac-address not specified
		auto-mac-address not specified
		mac-prefix not specified
		allowed-mac-address: fa:16:3f
		allowed-mac-address: fa:80:20:21:22
		id: 0
zonecfg:dyn-vlan-kz:anet> add vlan
zonecfg:dyn-vlan-kz:anet:vlan> add dynamic-vlan-id 100-199
zonecfg:dyn-vlan-kz:anet:vlan> add dynamic-vlan-id 400-498
zonecfg:dyn-vlan-kz:anet:vlan> end
zonecfg:dyn-vlan-kz:anet> info vlan
	vlan 0:
		vlan-id: not specified
		dynamic-vlan-id: 100-199
		dynamic-vlan-id: 400-498
		dynamic-vlan-id: 500
zonecfg:dyn-vlan-kz:anet> end
zonecfg:dyn-vlan-kz> commit
zonecfg:dyn-vlan-kz> exit

因此,运行 solaris-kz 标记区域可创建其任意 MAC 地址介于 fa:80:20:21:22:00fa:80:20:21:22:ff 之间(或 fa:16:3f:00:00:00fa:16:3f:ff:ff:ff 之间)和/或带有 200 个 VLAN ID(100-199、400-498 和 500)中的任意一个 VLAN ID 的 VNIC。

示例 33 使用 info -a 显示区域的所有属性

在下面的示例中,zonecfg 创建新区域的环境。将 zonepath 设置为 /system/zones/%{zonename}。这与缺省值匹配。使用 info 子命令(不含任何选项)时,此属性以及与自身缺省值匹配的任何其他属性会一起从输出中排除。

example# zonecfg -z zone1	
zonecfg:zone1> info 
zonename: zone1 
brand: solaris 
anet 0: 
linkname: net0 
configure-allowed-address: true

在这里,–a 选项可用来显示所有属性,而不论它们是否与缺省值匹配。

zonecfg:zone1> info -a 
zonename: zone1 
zonepath.template: /system/zones/%{zonename}
zonepath: /system/zones/zone1 
brand: solaris 
autoboot: false 
autoshutdown: shutdown 
bootargs: 
file-mac-profile: 
pool: 
limitpriv: 
scheduling-class: 
ip-type: exclusive 
hostid: 
tenant: 
fs-allowed: 
anet 0: 
linkname: net0 
lower-link: auto 
allowed-address: 
configure-allowed-address: true 
defrouter: 
allowed-dhcp-cids: 
link-protection: mac-nospoof 
mac-address: auto 
auto-mac-address: 
mac-prefix: 
mac-slot: 
vlan-id: 
priority: 
rxrings: 
txrings: 
mtu: 
maxbw: 
bwshare: 
rxfanout: 
vsi-typeid: 
vsi-vers: 
vsi-mgrid: 
etsbw-lcl: 
cos: 
pkey: 
linkmode: 
evs: 
vport: 
示例 34 solaris-kz 标记区域上设置 anets 以实现高可用性
# dladm set-linkprop -p iov=on net0
# dladm set-linkprop -p iov=on net2
# dladm create-aggr -l net0 -l net2 -m dlmp halink0

# zonecfg -z ha-kz
zonecfg:ha-kz> create -t SYSsolaris-kz
zonecfg:ha-kz> add anet
zonecfg:ha-kz:anet> set lower-link=halink0
zonecfg:ha-kz:anet> set iov=off
zonecfg:ha-kz:anet> set maxbw=500
zonecfg:ha-kz:anet> set id=0
zonecfg:ha-kz:anet> end
zonecfg:ha-kz> add anet
zonecfg:ha-kz:anet> set lower-link=halink0
zonecfg:ha-kz:anet> set iov=auto
zonecfg:ha-kz:anet> set bwshare=60
zonecfg:ha-kz:anet> set id=1
zonecfg:ha-kz:anet> end
zonecfg:ha-kz> commit
zonecfg:ha-kz> exit

因此,在 solaris-kz 标记区域上运行的两个 anet 数据链路将由 DLMP 聚合进行可靠地保护,以免受到网络故障的影响。

示例 35 创建导出配置
# zonecfg
Use 'create' to begin configuring a new zone.
zonecfg> create -t SYSsolaris
zonecfg> set autoboot=true
zonecfg> export -r
create -Fb
set brand=solaris
set autoboot=true
add anet
set linkname=net0
set configure-allowed-address=true
end
示例 36 重新导入区域配置
# zonecfg -z myzone info autoboot
autoboot: false
# zonecfg -z myzone <<EOF
> create -Fb
> set brand=solaris
> add anet
> set linkname=net0
> end
> set autoboot=true
> EOF
Zone myzone already exists; overwriting.
# zonecfg -z myzone info autoboot
autoboot: true

退出状态

将返回以下退出值:

0

成功完成。

1

出现错误。

2

用法无效。

属性

有关以下属性的说明,请参见 attributes(7) 手册页:

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

另请参见

lgrpinfo(1)ppriv(1)prctl(1)zlogin(1)priv_str_to_set(3C)kstat(3KSTAT)dev(4FS)hsfs(4FS)zfs(4FS)uscsi(4I)user_attr(5)vfstab(5)mwac(7)、attributes(7)brands(7)fnmatch(7)privileges(7)rbac(7)resource-controls(7)resource-management(7)、solaris(7)solaris-kz(7)suri(7)tpd(7)、zones(7)archiveadm(8)dladm(8)evsadm(8)format(8)ipadm(8)kstat(8)mount(8)pooladm(8)poolcfg(8)poold(8)psrinfo(8)rcapd(8)rctladm(8)route(8)suriadm(8)svcadm(8)zfs(8)zoneadm(8)zonep2vchk(8)zpool(8)

Resource Management and Oracle Solaris Zones Developer's Guide

附注

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

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

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

要允许通过 format(8) 来设置磁盘标签,应将整个磁盘/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(4I) 手册页)。

allow-mhd 属性允许应用程序在设备上使用 mhd(4I) ioctl。

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

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