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) 手册页。
支持下列资源类型:
通用属性。
CPU 的使用限制。
物理内存、交换内存和锁定内存的限制。(可选)为 solaris-kz 标记区域的物理内存指定 pagesize-policy。
ZFS 数据集。
当此区域运行时,专用于此区域的系统处理器的子集。
设备.
文件系统。
虚拟 InfiniBand 设备。
虚拟 InfiniBand 设备的端口。端口资源仅在 ib-vhca 资源范围中有效。
加密密钥
网络接口。
自动网络接口。
为区域配置的额外 MAC 地址。mac 资源仅在 anet 资源内有效。
为区域配置的额外 VLAN ID。VLAN 资源仅在 anet 资源内有效。
区域 SMF 实例的 SMF 依赖项。
受委托的管理员。
资源控制。
暂停映像
用于区域安装的专用 ZFS zpool。
为区域配置的虚拟 CPU。
委托给区域的 ZFS zpool。
光纤通道 NPIV 端口。
区域的已验证引导设置。
多实例资源具有唯一标识资源的每个实例的标识符。标识符是 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
dir、special、raw、type、options
address、allowed-address、configure-allowed-address、physical、defrouter、id
linkname、lower-link、allowed-address、auto-mac-address、configure-allowed-address、defrouter、mac-address、mac-slot、mac-prefix、mtu、maxbw、bwshare、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、iov、vlan、ring-group、autopush
auto-mac-address、mac-address、mac-prefix、allowed-mac-address、id
vlan-id、dynamic-vlan-id
match、storage、create-size、allow-partition、allow-raw-io、allow-mhd、id、bootpri
over-hca、smi-enabled、id
pkey、id
name、value
name、type、value
name、alias
ncpus、importance
cpus、cores、sockets
ncpus
physical、swap、locked、pagesize-policy
ncpus
user、auths
storage
storage、name
virtual-port-wwn、over-hba
policy、cert
raw
path、storage
像与这些名称配对的属性值一样,它们是一个字符串或字符串列表。允许的类型特定于属性。单个值也可以用引号引起来。
列表具有语法:
[<value>,...]
其中,每个 <value> 都是一个字符串属性。仅包含单个值的列表等效于在不使用 list 语法的情况下指定该值。例如,"foo" 等效于 "[foo]"。列表可以为空(用 "[]" 表示)。
属性类型如下所述:
区域的名称。
区域的文件系统的路径。zonepath 的缺省值为 /system/zones/%{zonename}。
布尔值,指示区域可以更改全局/系统范围的时间(如果为 True)或可以更改区域特定的时间(如果为 False)。
布尔值,指示在系统引导时是否应自动引导某个区域。请注意,如果禁用了区域服务,则无论此属性的设置如何,都不会自动引导区域。可以使用 svcadm 命令启用区域服务,例如:
# svcadm enable svc:/system/zones:default
将 enable(启用)替换为 disable(禁用)可禁用区域服务。有关更多信息,请参见 svcadm(8) 手册页。
在正常关闭全局区域时对此区域执行的操作。操作可以是 "shutdown"(正常关闭区域,缺省值);"halt";或 "suspend"。
要传递到区域引导的参数(选项);但如果向 "zoneadm boot" 命令提供了选项,则将优先采用提供给该命令的选项。有效的参数在 zoneadm(8) 手册页中进行了介绍。
此区域在引导时必须绑定到的资源池的名称。此属性与 dedicated-cpu 资源不兼容。
此区域中的任何进程可以获取的最大特权集。此属性应包含以逗号分隔的特权集规范,如 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_time 在 privileges(7) 手册页中列为 PRIV_SYS_TIME。
区域的标记类型
区域既可以拥有自己的独占 IP 实例(缺省),也可以与全局区域共享 IP 实例。在缺省区域模板 SYSdefault 中,ip-type 设置为 exclusive。在提供的另外一个 SYSdefault-shared-ip 模板中,ip-type 设置为 shared。
此属性可以接受的值为 exclusive 和 shared。
在将来的发行版中可能删除共享 IP 功能。我们强烈建议使用独占 IP。删除此功能后,将不再引导配置为使用此功能的区域。
要继续使用您的区域,请将 IP 类型设置为 shared 的任何区域转换为 IP 类型设置为 exclusive。在大多数情况下,这涉及将 zonecfg (8) "net" 资源替换为 "anet" 资源。如果您具有共享 IP 区域,该区域使用作为全局区域 IPMP 组的一部分的接口,则您应该切换为使用 DLMP 聚合。在全局区域中,在旧的 IPMP 接口上创建 DLMP 聚合,然后创建 zonecfg (8) "anet" 资源,其中 lower-link 指向该 DLMP 聚合。将为某些多级别服务器 Trusted Extensions 配置保留有限共享 IP 支持。
区域可以模仿 32 位主机标识符以简化系统整合。缺省情况下,区域的 hostid 属性是空的,这意味着区域不模拟主机标识符。区域主机标识符必须是 0 到 FFFFFFFE 之间的十六进制值。0x 或 0X 前缀是可选的。大写和小写十六进制数字都可以接受。
可以在区域中挂载的其他文件系统的逗号分隔列表;例如,ufs, pcfs。缺省情况下,只能挂载 hsfs(4FS) 和网络文件系统。
此属性不适用于通过 add fs 或 add dataset 挂载到区域中的文件系统。
![]() | 注意 - 如果允许挂载非缺省文件系统,将使得区域管理员能够使用伪造的文件系统映像来危害系统安全。 非缺省文件系统未经审计,无法供非全局区域安全使用。使用此选项可能会破坏区域安全。这可能包括导致整个系统故障或其他问题,因此使用此选项时务必要小心谨慎。 |
定义文件系统的哪些部分不使用只读策略,即,允许区域写入文件系统的哪些部分。
该属性当前支持五个值:none、strict、dynamic-zones、fixed-configuration 和 flexible-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 中的文件。
定义 VNIC anet 要连接到的 EVS 所属的 tenant 的名称。请参见 evsadm(8) 手册页。
指定为 solaris-kz 标记区域配置的迁移类。
迁移类用于启用源主机与目标主机之间兼容的硬件功能,从而在两者之间启用实时迁移或热迁移。
有关此属性的可能值的信息,请参见 solaris-kz(7) 手册页。
指定为 solaris-kz 标记区域配置的主机兼容性级别。
兼容性级别用于启用在全局区域中运行的 Oracle Solaris 版本支持的、在源主机与目标主机之间兼容的功能,从而在两者之间启用实时迁移或热迁移。
只有同时通过迁移类和主机兼容性级别启用的功能才对内核区域可见。
通过指定兼容性级别修饰符,可以扩展兼容性级别中包含的功能。每个修饰符只能与其后列出的指定兼容性级别一起使用。目前,此属性仅适用于 SPARC 平台,在 x86 平台上不受支持。
可能的主机兼容性级别为:
当前 Oracle Solaris 版本中支持的所有功能均已启用,这样可以防止将其迁移到其他运行不同 Oracle Solaris 版本的主机。
level1 级别包括 ADI、DAX 和 VA 屏蔽功能。
如果未设置值,则缺省内核区域的主机兼容性级别仅包含 Oracle Solaris 11.2 中支持的功能。
以下 virtinfo 命令可用于找出当前 Solaris 版本支持的主机兼容性级别(前提是支持内核区域):
# virtinfo -c supported get host-compatible-levels kernel-zone
可能的兼容性级别修饰符为:
启用 ADI 功能,只能与缺省兼容性级别一起使用。
此属性的一般语法为:
host-compatible=<compatible-level-name>[,modifier-name]...
指定缺省兼容性级别的修饰符时,语法为:
host-compatible=<modifier-name>[,modifier-name]...
请注意,修饰符无法用于启用迁移类不支持的功能。
启用或禁用 solaris-kz 标记区域的引导磁盘保护功能。可设置为 on 或 off。缺省值为 off(关闭)。
设置为 on 时,将通过 PGR 预留功能预留引导磁盘,其中主机 ID 作为密钥,SCSI3_RESV_WRITEEXCLUSIVEREGISTRANTSONLY 作为预留类型。分离或卸载区域后,将删除预留。
由于簇软件也在其管理的磁盘上使用 PGR 预留,因此,不能在同时还由任何其他簇软件管理的磁盘上使用此功能。在这种情况下,需要将 boot-disk-protection 设置为 off。还可以将在全局区域中运行的簇软件重新配置为不管理引导磁盘。
请注意,此功能要求所有引导磁盘位于支持 SCSI-3 PGR 预留的存储 LUN 上。如果任何引导磁盘不满足此要求,将无法连接或安装区域。
确定文件系统的挂载方式、挂载位置等信息时所需的值。请参见 mount(8)、mount(2)、fsck(8) 和 vfstab(5)。
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 标记区域。
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 是跨越一台或多台服务器(物理计算机)的虚拟交换机。它代表一个隔离的 L2 网段,并为 VNIC anet 与该网段连接的区域提供网络连接。VPort 通过 3 元组 <tenant, evs, vport> 唯一标识,因此,如果需要将 VNIC anet 连接到 EVS,区域的配置应包括此信息。
下面介绍了支持的属性。所有这些属性都是可选的。只允许全局区域修改自动创建的 VNIC 或 IPoIB 数据链路或其属性。如果 zonecfg 中设置的某个属性无法在创建 VNIC 或 IPoIB 数据链路时分配给该链路,则该区域将无法引导。
为自动创建的 VNIC 或 IPoIB 数据链路指定一个名称。缺省情况下,该属性将自动设置为 netN 格式(其中 N 为非负整数)的第一个可用名称(对于区域)。例如: net0、net1 等。info 子命令会显示自动选择的 linkname。
多个区域(包括全局区域)可同时使用同名链路。
如果指定了 EVS 并根据需要指定了 VPort,则将通过在该 VPort 上连接到该 EVS 创建 VNIC anet。如果指定了全局 tenant 属性,则将在该 tenant 的名称空间中搜索 EVS。
如果指定了 VPort,则 VNIC 将继承该 VPort 的 SLA 属性(maxbw、cos 和 priority)、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) 手册页。
指定将用来创建 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 数据链路。将会使用以下试探性操作选择链路:
链路状态为 up 的链路聚合。
在物理以太网链路中,选择符合以下条件的链路:
链路状态为 up
可用 VF 的数目最多(只有 iov=auto/on 时)
支持独占环组(只有 ring-group=exclusive 时)
空闲 mac-slots 的数目最多
从字母顺序角度而言名称最小的链路
如果没有状态为 up 的链路,则会使用名为 net0 的数据链路(如果存在)。
如果以上两点都不满足,区域将无法引导。
请参见 net 资源中对独占 IP 区域 allowed-address 属性的说明。
当 mac-address 属性设置为 random 或 auto(仅当可以分配 mac-address 时)时,保存随机生成的 MAC 地址列表,以便区域能够持续地重新获取相同地址。要重置随机生成的地址,需要由管理员清除此属性。有关更多信息,请参见下面的 mac-address 属性。
指定 VNIC 的带宽份额。请参见 dladm(8) 手册页中的 bwshare 属性。当前仅在某些 NIC 上支持此属性。
请参见 net 资源中对独占 IP 区域 configure-allowed-address 属性的说明。
与数据链路关联的 802.1p 优先级。有关此属性的详细信息,请参见 dladm(8) 手册页。
请参见 net 资源中对独占 IP 区域 defrouter 属性的说明。
指示 TX 端的 ETS 带宽。有关此属性的详细信息,请参见 dladm(8) 手册页。
根据指定值或关键字设置 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 地址分配,指定 MAC 地址前缀列表。否则,将忽略该属性。此属性对 IPoIB 数据链路无效。
如果请求了出厂 MAC 地址,指定使用的 MAC 地址插槽标识符列表。否则,将忽略该属性。此属性对 IPoIB 数据链路无效。
此设置已弃用,如果任何区域具有 mac-address=factory 或 mac-address=auto 设置,则不应使用此设置,因为这些区域可能较早引导并最先获取插槽。如果需要特定的出厂 MAC 地址,请在 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。
VNIC 的最大传输单元(以字节为单位)。请参见 dladm(8) 手册页中的 mtu 属性。
指定 VNIC 的全双工带宽。请参见 dladm(8) 手册页中的 maxbw 属性。缺省情况下,VNIC 将使用在 lower-link 上设置的 maxbw,如果未进行设置,则不存在任何带宽限制。
指定 VNIC 的相对优先级。有关支持的值和缺省值,请参见 dladm(8) 手册页中的 priority 属性。
设置此属性允许区域使用以太网链路的硬件环组功能。此属性的可能值为:
OS 决定在特定 lower-link(缺省值)上使用 exclusive 还是 shared。
不使用专用硬件环组。
使用独占硬件环组。如果独占硬件环组不可用,则 anet 创建会失败。
如果此属性为 exclusive 且未指定 lower-link,则除了其他条件之外,lower-link 选择逻辑还将考虑此项(有关详细信息,请参见 lower-link 属性)。
此属性具有以下限制:
它与 anet iov 属性不兼容。
对该 VNIC 启用 VLAN 或 PVLAN 标记并指定 VLAN 标记的 ID。没有指定缺省值,这意味着如果未设置该属性,VNIC 将不会参与任何 VLAN。IPoIB 数据链路不支持此属性。有关支持的 VLAN ID 格式,请参见 dladm(8) 手册页。
指定与 VNIC 关联的 VSI 类型 ID。请参见 dladm(8) 手册页中的说明。
指定与 VNIC 关联的 VSI 版本。请参见 dladm(8) 中的说明。
指定与 VNIC 关联的 VSI 管理器 ID。请参见 dladm(8) 手册页中的说明。
指定接收端扇出线程数。请参见 dladm(8) 手册页中的说明。
指定 VNIC 的接收环。有关支持的值和缺省值,请参见 dladm(8) 手册页中的 rxrings 属性。
指定 VNIC 的传送环。有关支持的值和缺省值,请参见 dladm(8) 手册页中的 txrings 属性。
启用一个或多个链路保护类型(使用逗号分隔值)。有关支持的值,请参见 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 会将其删除。
设置该属性将对 VNIC 启用 dhcp-nospoof。有关详细信息,请参见 dladm(8) 手册页。
指定十六进制的 InfiniBand 分区密钥值。pkey 始终被视为十六进制的,不管它是否具有 0x 前缀。此属性仅对 IPoIB 数据链路有效。
在 IB 分区数据链路上设置链路传输服务类型。缺省值为 cm。此属性仅对 IPoIB 数据链路有效。有效值包括:
连接模式。此模式使用缺省 MTU 65520,并且支持的最大 MTU 为 65535 字节。如果远程节点无法使用连接模式,则会自动改用不可靠的数据报模式。
不可靠的数据报模式。此模式使用缺省 MTU 2044,并且支持的最大 MTU 为 4092 字节。
设置此属性允许 solaris-kz 标记区域对网络设备使用 SR-IOV VF。此属性的可能值为:
auto:使用 VF(如果一个可用),如果不可用,则回退到使用半虚拟化设备。
on:必须使用 VF。如果 VF 不可用,则创建 anet 将失败。
off:不使用 VF(缺省值)。
如果此属性为 auto/on 并未指定 lower-link,则除了其他条件之外,下游链路选择逻辑还将考虑此项(有关详细信息,请参见 lower-link 属性)。
下面是此属性的限制:
它只能用于 solaris-kz 标记区域。
除了 lower-link、id、mac-address、mac-prefix、mac-slot、maxbw、bwshare 和 priority 之外,它与所有 anet 属性都不兼容。
仅当 lower-link 是链路聚合时,iov 才能是 "off" 或 "auto"。
在打开链路的 DLPI 设备时推送到与该链路相关联的流的 STREAMS 模块集。此属性为模块名称的逗号分隔列表。只能在独占 IP 区域中使用。
一个用于标识网络接口的正整数,请参见 solaris-kz(7) 手册页。
vlan 资源用于向 anet 资源添加额外的 VLAN ID。anet 的端口 VLAN ID 由 anet:vlan-id 属性提供。
指定针对其必须在外部网络和 solaris-kz 区域之间接收和发送帧的 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 转发包,但不会去掉标记。
MAC 资源用于向 anet 资源添加额外的 mac-address,主 MAC 地址是通过 anet:mac-address 属性指定的。
存放 mac-address 属性(请参见下文)设置为 random 或 auto 时随机生成的 MAC 地址列表,以便区域持久地反复获取相同地址。要重置随机生成的地址,需要由管理员清除此属性。
根据指定值或关键字设置 VNIC 的 MAC 地址列表。如果该列表的元素不是关键字,则将其解释为单点传送 MAC 地址。IPoIB 数据链路不支持此属性。支持的关键字包括:
为 VNIC 分配出厂 MAC 地址。当请求出厂 MAC 地址时,可以使用 mac-slot 属性指定 MAC 地址插槽标识符。否则,将使用下一个可用的出厂 MAC 地址。
为 VNIC 分配随机 MAC 地址。使用 mac-prefix 属性指定一个前缀。否则,将使用缺省前缀,该前缀包含有效 IEEE OUI,并设置了本地位。
在 NIC 支持的情况下分配随机 mac-address,否则尝试分配一个 factory mac-address。这是缺省值。
如果选择了随机 MAC 地址,则将在区域引导和区域分离/连接后保留生成的地址。这将允许区域通过维护稳定的客户机 ID 来保留它们的 DHCP 租用,还会充分利用具有稳定 MAC 地址的其他优势。
如果请求了随机 MAC 地址分配,则指定要使用的 MAC 地址前缀列表。否则,忽略该属性。此属性对 IPoIB 数据链路无效。
id 值是一个正整数,用于唯一标识资源。
ib-vhca 资源表示为内核区域自动创建的虚拟 Infiniband HCA 设备。此类区域引导时,将创建临时 VHCA。该区域停止时,该 VHCA 将销毁。
下面介绍了支持的属性。所有这些属性都是可选的。仅允许主机系统的全局区域修改自动 VHCA。如果 zonecfg 中设置的某个属性无法在创建 VHCA 时分配给该 VHCA,则该区域将无法引导。
设置物理 InfiniBand 设备以用于虚拟 InfiniBand 设备的配置。设备名称如 ibadm 命令中所列出的那样。有关更多信息,请参见 ibadm(8) 手册页。
指定虚拟 HCA 是否可以使用子网管理包 (Subnet Management Packets, SMP)。如果此属性的值为 "on",则允许此虚拟 HCA 使用 SMP。如果此属性为 "off",则此虚拟 HCA 不能使用 SMP。如果值为 "readonly",则此虚拟 HCA 只能使用查询 SMP 操作,而不能使用 "set" 操作。缺省值为 "off"。在不考虑可能会对光纤网络产生的安全影响的情况下,不建议使用值 "on"。使用 "on" 运行时,应该在光纤网络组件上设置 M_Keys。
唯一地标识 ib-vhca 资源。
指定 InfiniBand 分区密钥值。pkey 值可以是一个关键字,也可以是逗号分隔的十六进制值列表。0x 前缀不应用于指定十六进制值。pkey 允许的关键字如下:
根据指定的 over-hca 值分配自动生成的 pkey 值。这是缺省值。
Id 用于唯一标识端口资源。每个 id 对应于该物理端口号。
可以通过检查运行区域的实时配置获得区域引导时分配给每个端口的 GUID。
要匹配的设备名称。这可以是要匹配的 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-partition、allow-raw-io 和 allow-mhd 均可以设置为 true 或 false,缺省值为 false。请参见“附注”部分。
id 值是一个正整数,用于标识虚拟块设备。有关更多信息,请参见 solaris-kz(7) 手册页。
bootpri 属性指定引导磁盘的相对引导优先级。有关更多信息,请参见 solaris-kz(7) 手册页。
资源控制的名称和 priv/limit/action 三要素。请参见 prctl(1) 和 rctladm(8) 手册页。设置 rctl 值的首选方式是使用与特定 rctl 关联的全局属性名称。
可以采用以下形式指定多个 rctl 值:
(priv=<value>,limit=<value>,action=<value>)
指定为 solaris-kz 标记区域配置的虚拟 CPU 数量。请参见 solaris-kz(7) 手册页。
通用属性的名称、类型和值。type 必须是 int、uint、boolean 或 string 中的一个,value 必须属于该类型。uint 的意思是不带符号的整数,即非负整数。
attr 资源的 name 属性在语法方面的限制类似于区域名称,但不完全相同:它必须以字母数字开头,可以包含字母数字以及连字符 (-)、下划线 (_) 和点 (.) 字符。以 "zone" 开头的属性名称保留供系统使用。最后,autoboot 和 global-time 全局属性的值必须为 "true" 或 "false"。
要从区域内访问的 ZFS 数据集的名称。请参见 zfs(8) 手册页。为每个数据集设置了别名,以便它在区域中显示为虚拟 ZFS 池。
alias 是该虚拟池的名称。有关应用于 ZFS 池名称进而也应用于数据集别名值的名称限制,请参见 zpool(8) 手册页。别名 rpool 是从区域的 rpool 数据集中保留的。请注意,别名数据集和设备资源可能会在 /dev/zvol 中存在名称空间冲突。请参见 dev(4FS) 手册页。
要分配给此区域的公平份额调度器 (Fair Share Scheduler, FSS) 份额的数量。此属性与 dedicated-cpu 资源不兼容。此属性是设置 zone.cpu-shares rctl 的首选方式。
用于存储可能会写入后备存储的页面 ADI 元数据的内存总量。此属性是设置 zone.max-adi-metadata-memory rctl 的首选方式。
此区域可同时使用的最大 LWP 数。此属性是设置 zone.max-lwps rctl 的首选方式。
此区域允许的最大消息队列 ID 数。此属性是设置 zone.max-msg-ids rctl 的首选方式。
此区域可同时使用的最大进程表槽数。此属性是设置 zone.max-processes rctl 的首选方式。除非已显式设置了 max-lwps 属性,否则设置此属性会隐式地将 max-lwps 属性的值设置为进程槽数的 10 倍。
此区域允许的最大信号量 ID 数。此属性是设置 zone.max-sem-ids rctl 的首选方式。
此区域允许的最大共享内存 ID 数。此属性是设置 zone.max-shm-ids rctl 的首选方式。
此区域允许的最大共享内存数量。此属性是设置 zone.max-shm-memory rctl 的首选方式。可以向此数量值应用一个比例(K、M、G、T),例如,1M 代表 100 万字节。
指定用于在某个区域中运行的进程的调度类。未指定此属性时,将按如下方式建立调度类:
如果设置了 cpu-shares 属性或等效的 rctl,将使用调度类 FSS。
如果既未设置 cpu-shares 也未设置等效的 rctl,且区域的 pool 属性引用了一个具有缺省调度类的池,则将使用该类。
在任何其他情况下,将使用系统缺省调度类。
此资源将创建池和处理器集供区域引导时由其专用。在区域运行时,这些处理器不可供其他区域或全局区域使用。有关池的更多信息,请参见 poolcfg(8) 和 pooladm(8) 手册页。
可以明确地选择也可以自动选择要专用的 cpu:
将 cpus、cores 或 sockets 之一设置为 cpu、核心或套接字 id 的列表。使用 psrinfo -t 和 pooladm 查看哪些 cpu、核心和/或套接字可用。
可以按 resource-management(7) 所述将这些属性设置为 id 列表字符串。
如果指定的任何资源分配给其他区域或池,则该区域将无法引导。这包括所分配资源的子集。例如,如果分配的套接字在别处分配了核心。
如果指定的任何 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 标记区域之前进行引导。
此资源与 pool 和 cpu-shares 属性都不兼容。只能将此资源的单个实例添加到区域中。
physical、swap、locked 对此区域可用的内存设置上限。可以向其中的每个数量值应用一个比例(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) 手册页。
设置可供某个区域使用的 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)。
区域委托重启程序在执行区域自动引导时使用的优先级。优先级可以设置为 high、normal 和 low。有关更多信息,请参见 svc.zones(8) 手册页。
定义区域 SMF 实例的 SMF 依赖项。区域的所有 SMF 依赖项均将 restart_on 设置为 none。每个 smf-dependency 资源均必须具有一个 FMRI 属性。如果忽略 grouping,则使用缺省值 require_all。name 是可选的,仅在需要对多个 FMRI 进行分组时才应使用(例如,在 require_any 依赖项中)。设置现有名称时会自动填充分组。带有 'SMF-DEP-' 前缀的名称是为系统保留的,无法设置。有关依赖性类型、分组和 restart_on 定义的更多信息,请参见 smf(7) 手册页。
将区域管理授权委托给指定的用户或角色。该用户必须对应于一个有效的本地帐户。auths 的允许值包括:
允许将指定的区域作为用来克隆新区域的来源。
允许修改区域的持久配置。
允许检测并修改正在运行的区域的实时配置。
允许在经过验证的情况下 zlogin(1) 到该区域。
允许对所配置的区域进行正常管理。
允许在主机之间迁移区域。允许迁移已安装和正在运行的区域。
允许在主机之间冷迁移区域。仅允许迁移已安装的区域。
定义一个或多个专用于包含区域安装的专用 ZFS 池的存储资源。允许的 storage 值是在 suri(7) 中定义的。
定义一个或多个专用于已委托给区域的 zpool 的存储资源。允许的 storage 值是在 suri(7) 手册页中定义的。允许的 name 值是在 zpool(8) 手册页中定义的。不允许使用名称 rpool。
通过 virtual-port-wwn 为 npiv 设置一个唯一的 64 位端口全局名称,这是可选的并且将设置有自动生成的 wwn。用户仍然可以覆盖此生成的 wwn。
属性 over-hba 也是可选的,并且它可以是空字符串,这意味着将以循环方式选择物理 HBA 端口来将它们分布在可用的端口中。如果设置了此属性,则 over-hba 的值必须是以 'c' 开头的无符号整数(表示支持物理 NPIV 的 FC HBA 控制器),如 /dev/cfg/c* 下所示。有关更多详细信息,请参阅 cfgadm_fp(8) 手册页。
控制区域来宾中引导装载程序和内核模块的 ELF 签名验证。值可以设置为 "none"、"warning" 和 "enforce"。"None" 将跳过验证。"Warning" 在验证失败时记录消息。"Enforce" 将导致模块在失败时不装入。缺省情况下,policy 设置为 "warning"。
为第三方和自签名软件添加客户安装的公钥证书。除缺省 Oracle 证书外,这些证书文件也用于 ELF 签名验证。可以使用 file:///、http:// 或 https:// URL 添加证书路径。
提供对用于内核区域暂停映像和主机数据的加密密钥的管理访问权限,如 solaris-kz(7) 手册页中所述。不能直接设置 raw 的值,除非在 command_file 模式下。
配置内核区域的暂停映像的位置。仅允许一个 suspend 资源。如果没有任何 suspend 资源,则内核区域不支持暂停和恢复。suspend 资源允许指定 path 或 storage,不允许同时指定两者。如果指定 path,那么这是将写入暂停文件的完全路径,并且其父目录必须存在。如果指定了 storage,则它必须是存储 URI 引用的设备,如 suri(7) 手册页中所述。目前尚未支持 NFS 类型的 URI。
系统使用内核统计信息 (kstat(3KSTAT)) 模块 caps 为所有设有上限的项目和区域维护该信息。您可以通过读取内核统计信息 (kstat(3KSTAT))(指定 caps 作为 kstat 模块名称)来访问该信息。以下命令显示所有活动 CPU 上限的内核统计信息:
# kstat caps::'/cpucaps/'
在某个区域中运行的 kstat(8) 命令只显示与该区域以及该区域中的项目相关的 CUP 上限。请参见“示例”部分。
下面是可与 kstat(8) 一起使用的与上限相关的参数:
kstat 模块。
kstat 类,可与 kstat –c 选项一起使用。
kstat 名称,可与 kstat –n 选项一起使用。id 是项目或区域的标识符。
以下字段会显示,以响应请求所有 CPU 上限的统计信息的 kstat(8) 命令。
在 kstat 的此使用情况中,此字段的值将是 caps。
如上所述,cpucaps_project_ id 或 cpucaps_zone_id
在上限之上度过的总时间(以秒为单位)。
在上限之下度过的总时间(以秒为单位)。
观察到的最大 CPU 使用量。
在上限等待队列中的线程数。
属于某个设有上限的项目或区域的所有线程当前使用的 CPU 总量,换算为对单个 CPU 的百分比。
上限值,换算为对单个 CPU 的百分比。
为其显示统计信息的区域的名称。
有 kstat 命令的输出的样例,请参见“示例”部分。
统一归档文件(使用 archiveadm(8) 创建)提供了一种将 Oracle Solaris 实例归档的方式。每个统一归档文件都可以包含对应一个或多个全局区域和/或非全局区域的数据和元数据。缺省情况下,archiveadm(8) 生成适合系统或区域克隆的归档文件。archiveadm(8) 也可以创建适合系统恢复的归档文件(可选)。
如果使用 zonecfg create -a archive [options] 子命令通过统一归档文件配置区域,归档文件创建选项会影响归档配置的保留程度:通过克隆归档文件配置时,可能会造成问题的属性值(用于多个主机而值相同)将使用缺省值。这些属性包括:
host id
allowed-address
mac-address
mac-address
allowed-address
此外,如果归档区域的名称与正在安装的区域的名称不匹配,某些属性将自动更新以反映新区域的名称:
如果 zonepath 的最后一个元素与归档区域的名称匹配,zonepath 中的最后一个元素将替换为新区域的名称。
对于数据集资源,如果 alias 与归档区域的名称匹配,alias 将替换为新区域的名称。
对于数据集资源,如果 name 属性的最后一个元素与归档区域的名称匹配,name 属性中的最后一个元素将替换为新区域的名称。
通过统一归档文件配置不会阻碍使用后续命令根据需要修改资源和属性值。
支持以下选项:
指定 zonecfg 命令文件的名称。command_file 是包含 zonecfg 子命令的文本文件,一个子命令对应从 export 子命令的输出获取的一行。
启用实时编辑模式。指示 zonecfg 编辑正在运行的区域的实时配置,而不是稳定存储器中的永久配置。在使用时,zonecfg 会检索当前的实时区域配置的快照。在此模式下,支持完整的 zonecfg 子命令集。实时配置会在提交后立即生效,并在下一次区域重新引导之前处于有效状态。实时模式仅可用于正在运行的区域,并且需要 solaris.zone.liveconfig/zonename 授权。
指定区域的名称。区域名称区分大小写。区域名称必须以字母数字字符开头,并可包含字母数字字符、下划线 (_)、连字符 (-) 和点 (.)。名称 global 和所有以 SYS 开头的名称均保留,不能使用。
支持在特定属性中使用以下标记:
求值结果为区域的名称
求值结果为特定资源的 id 属性。此标记在支持 id 属性的资源范围内使用。
求值结果为全局区域的 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} | -----------------------------------------------------------------
可以使用 add 和 select 子命令来选择特定的资源,此时作用域将更改为该资源。end 和 cancel 子命令用于结束资源指定,此时作用域将恢复为全局。某些子命令(例如 add、remove 和 set)在每个作用域中有不同的语义。
zonecfg 支持以分号分隔的子命令列表。例如:
# zonecfg -z myzone "add net; set physical=myvnic; end"
可导致破坏性操作或导致工作丢失的子命令具有一个强制执行操作的 –F 选项。当输入来自终端设备时,如果在给定此类命令时未指定 –F 选项,系统会在适当的时候提示用户;其他情况下,如果在给定此类命令时未指定 –F 选项,将不允许操作,并会向标准错误写入一条诊断消息。
支持以下子命令:
在全局范围或者某个资源范围中,开始给定资源类型的指定。将范围更改为此资源类型。
在资源范围中,添加具有给定名称和给定值的属性。用于属性值的语法随属性类型不同而不同。一般情况下,它是一个简单值或者是用方括号括起来并以逗号分隔的简单值列表 ([foo,bar,baz])。请参见“属性”部分。
结束资源指定并将作用域重置为全局。放弃任何部分指定的资源。cancel 仅在资源范围内适用。
清除属性的值,恢复缺省值。
将当前配置从内存提交到稳定存储器。必须提交配置以供 zoneadm 使用。在缺省模式下,不允许使用 –n 和 –q。
重新配置正在运行的区域,以便匹配当前的内存中实时配置并输出执行的操作。应用的更改会立即生效,并在下一次区域重新引导之前处于有效状态。如果在调用 commit 子命令之前在外部更改了实时配置,则在调用时将返回错误。在这种情况下,需要重新装入实时配置,然后重新应用所需的更改,这样才能成功提交。
支持以下选项:
在预运行模式下运行重新配置,这不会更改正在运行的区域的配置。预运行模式的行为与真实的重新配置相同,但会让正在运行的区域保持现状。使用预运行可以检查真实重新配置将执行的操作。
静默模式。禁止与区域重新配置有关的所有消息。
在提交内存中配置之前,可以使用 reload 子命令删除更改。在 zonecfg 会话完成时,会自动尝试 commit 操作。因为配置必须是正确的才能提交,因此该操作将自动执行验证。
为指定的区域创建内存中配置。可以使用 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 证书和/或密钥文件的位置。如果指定 cert、cacert 和 key,必须以 PEM 格式指定。有关更多详细信息,请参见上文中的“通过统一归档文件配置”部分。
使用 –b 选项可以创建一个空白配置。如果未指定参数,create 将应用 Oracle Sun 缺省设置。
从内存和稳定存储器中删除指定的配置。此操作是即时的,不需要提交。删除的配置无法恢复。
使用 –F 选项强制执行操作:
结束资源指定。此子命令仅在资源范围内适用。zonecfg 进行检查以确保完整地指定了当前资源。如果完整地指定了当前资源,则会将其添加到内存中配置(有关将此配置保存到稳定存储器的信息,请参见 commit),范围将恢复为全局或以前的某个资源范围。如果指定不完整,它将发出相应的错误消息。
将配置列显到标准输出。仅包括用户显式设置的非缺省值。使用 –f 选项可将配置输出到 output-file。此选项以适合在命令文件中使用的格式生成输出。如果指定了 -r 选项,则当区域已存在时,输出可以用于进行重新导入。
列显常规帮助或有关给定主题的帮助。
显示有关当前配置的信息。如果指定了 resource-type,将仅显示关于相关类型的资源的信息。如果指定了任何标识符或属性名称值对,则只会显示符合指定条件的资源的相关信息。在资源范围中,info 显示当前正在添加或修改的资源的相关信息。
此子命令只会显示具有非缺省值的属性。使用 –a 选项可输出所有属性,而不论它们是否具有缺省值。请参见“示例”部分。
在 zonecfg 交互模式下请求特定的属性或资源类型(如 property-name.template: template-value)时,可能会显示标记。此模板值的求值结果输出由 property-name: property-value 提供。请参见“示例”部分。
支持以下选项:
始终包括标识符
从不包括标识符
显示所有属性(具有和不具有缺省值)。
删除指定的资源。如果只需要删除资源的单个实例,必须指定资源的 identifier 或足够的 property name-value 对才能唯一地标识资源。如果未指定 identifier 或 property name-value 对,则将删除所有实例。如果某个 resource-type 有多个实例,则需要进行确认,除非您使用了 –F 选项。
选择与指定的标识符或给定的 property-name property-value 名称/值对条件匹配的给定类型的资源进行修改。将范围更改为此资源类型。{} 语法表示在花括号内有一项或多项内容。必须为要唯一标识的资源指定足够的 property-name property-value 对。
将给定属性名称设置为给定值。某些属性(例如,zonename 和 zonepath)是全局的,另外一些属性是特定于资源的。此子命令同时适用于全局范围和资源范围。
检验当前配置是否正确:
所有资源都指定了其所有必需属性。
指定了 zonepath。
如果指定了 –v 选项,当设备资源中指定的设备可能存在冲突并隐藏别名数据集内创建的 ZFS 卷时,将会发出警告。请参见 dev(4FS) 手册页。
放弃所有未提交的更改并从稳定存储器重新装入配置(缺省模式),或者检索正在运行的区域的最新配置(实时模式)。可使用 –F 选项强制执行操作。
退出 zonecfg 会话。如果需要,会自动尝试 commit。还可以使用 EOF 字符来退出 zonecfg。可使用 –F 选项强制执行操作。
在下面的示例中,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:00 和 fa:80:20:21:22:ff 之间(或 fa:16:3f:00:00:00 和 fa: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
将返回以下退出值:
成功完成。
出现错误。
用法无效。
有关以下属性的说明,请参见 attributes(7) 手册页:
|
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 编码。
一般情况下,向区域中添加设备可能会使区域对系统的安全性和稳定性产生不利影响,因为不是所有设备都已经过审核并确认可以在区域内安全地使用。
可以将使用 sd 或 ssd 目标驱动程序的存储设备(例如,这可以使用 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 之下。