zonecfg -z zonename [-r]
zonecfg -z zonename [-r] subcommand
zonecfg -z zonename [-r] -f command_file
zonecfg help
zonecfg 实用程序可以创建、修改和列出区域的配置。创建和修改功能只可供授权的用户使用,并且要求使用 root 的有效用户 ID 来执行该进程。否则,它将以只读模式运行。
区域的配置由若干个资源和属性组成。
为了简化用户界面,zonecfg 采用了范围的概念。缺省范围为全局。
zonecfg 命令的以下用法概要适用于非交互式使用模式:
zonecfg –z zonename subcommand
zonecfg 实用程序可在两种编辑模式下运行:
允许创建、修改和列出在稳定存储器上存储的永久区域配置。在缺省模式下通过 zonecfg 更改的参数不会影响正在运行的区域。必须使用 zoneadm(1M) apply 子命令重新配置区域,否则要重新引导以使更改生效。
要更改永久配置,需要 solaris.zone.config/zonename 授权。
允许检索、修改和列出正在运行的区域的配置。在实时模式下通过 zonecfg 更改的参数会在提交后立即生效,并在下一次区域重新引导之前处于有效状态。实时模式仅可用于正在运行的区域,并且需要 solaris.zone.liveconfig/zonename 授权。
有关实时区域重新配置支持的资源的详细信息,请参见相应的标记手册页。
除了创建和修改区域,zonecfg 实用程序还可以用来持久性地指定全局区域的资源管理设置或者通过指定 file-mac-profile 与 fs-allowed、数据集和设备的设置来将全局区域配置为不可变全局区域。
在下面的文本中,rctl 表示 resource control(资源控制)的缩写。请参见 resource_controls (5)。
每个区域都配有一个关联标记。该标记决定了在区域中使用的用户级环境,以及在安装、引导或关闭区域时区域的各种行为。在安装区域后,无法更改该标记。缺省标记由全局区域中安装的分发软件决定。有些标记不能支持某些 zonecfg 属性和资源。有关每个标记的更多详细信息,请参见特定于标记的手册页。有关标记的概述,请参见 brands(5) 手册页。
支持下列资源类型:
通用属性。
CPU 的使用限制。
物理内存、交换内存和锁定内存的限制。
ZFS 数据集。
当此区域运行时,专用于此区域的系统处理器的子集。
设备.
文件系统。
加密密钥
网络接口。
自动网络接口。
为区域配置的额外 MAC 地址。mac 资源仅在 anet 资源内有效。
受委托的管理员。
资源控制。
暂停映像
用于区域安装的专用 ZFS zpool。
为区域配置的虚拟 CPU。
委托给区域的 ZFS zpool。
以前版本的 Solaris 提供了稀疏根区域概念。该功能与 SVr4 包管理系统密切相关,旨在节省磁盘空间并减少管理工作。
在选择要在区域中安装哪些包方面,新的包管理系统 IPS 提供了更大的灵活性。这种灵活性以及文件系统技术方面的优势(其中值得一提的是 ZFS 重复数据删除)意味着删除稀疏根区域最为明智。通过组合利用 IPS 包管理和文件系统的优点,可以使所有区域都具备稀疏根区域的优点。
每种资源类型有一个或多个属性。另外还有一些全局属性,即整个配置的属性,而不是某个特定资源的属性。
支持下列属性:
zonename
zonepath
autoboot
autoshutdown
bootargs
pool
limitpriv
brand
cpu-shares
hostid
max-lwps
max-msg-ids
max-processes
max-sem-ids
max-shm-ids
max-shm-memory
scheduling-class
fs-allowed
file-mac-profile
tenant
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、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
auto-mac-address、mac-address、mac-prefix、id
match、allow-partition、allow-raw-io、id、storage
name、value
name、type、value
name、alias
ncpus、importance
cpus、cores、sockets
ncpus
physical、swap、locked
ncpus
user、auths
storage
storage、name
raw
path、storage
对于与这些名称配对的属性值,它们可能是简单值、复杂值,也可能是列表。允许的类型是特定于属性的。简单值是字符串,可根据需要用引号引起来。复杂值具有语法:
(<name>=<value>,<name>=<value>,...)
其中每个 <value> 都是简单值,<name> 字符串在给定的属性中是唯一的。列表具有语法:
[<value>,...]
其中每个 <value> 可以是简单值或复杂值。只包含单个值(简单值或复杂值)的列表等效于在不使用列表语法的情况下指定该值。例如,"foo" 等效于 "[foo]"。列表可以为空(用 "[]" 表示)。
在解释属性值时,zonecfg 接受如 fnmatch(5) 中所指定的正则表达式。请参见“示例”部分。
属性类型如下所述:
区域的名称。
区域的文件系统的路径。zonepath 的缺省值为 /system/zones/%{zonename}。
布尔值,指示在系统引导时是否应自动引导某个区域。请注意,如果禁用了区域服务,则无论此属性的设置如何,都不会自动引导区域。可以使用 svcadm 命令启用区域服务,例如:
# svcadm enable svc:/system/zones:default
将 enable(启用)替换为 disable(禁用)可禁用区域服务。请参见 svcadm(1M)。
在正常关闭全局区域时对此区域执行的操作。操作可以是 "shutdown"(正常关闭区域,缺省值);"halt";或 "suspend"。
要传递到区域引导的参数(选项);但如果向 "zoneadm boot" 命令提供了选项,则将优先采用提供给该命令的选项。有效的参数在 zoneadm(1M) 中进行了描述。
此区域在引导时必须绑定到的资源池的名称。此属性与 dedicated-cpu 资源不兼容。
此区域中的任何进程可以获取的最大特权集。此属性应包含以逗号分隔的特权集指定,如 priv_str_to_set(3C) 中所述。可以从结果集中排除特权集,方法是在其名称前加上连字符 (-) 或叹号 (!)。在此上下文中,不支持特殊特权字符串 "zone"。如果特殊字符串 "default" 作为第一个标记出现在该属性中,它将扩展为一个安全的特权集,其中保留了 zones(5) 中所述的资源和安全隔离。缺少该属性或该属性为空等效于该安全特权集。
系统管理员在为区域配置特权时必须特别注意。无法通过此机制排除某些特权,因为它们是引导区域时所必需的。此外,不能将某些特权授予给区域,因为如果授予这些特权可能会导致一个区域中的进程不当地影响其他区域中的进程。在尝试“引导”或“准备”区域时,zoneadm(1M) 指示何时已在区域的特权集中添加或删除了某个无效的特权。
有关特权的描述,请参见 privileges(5)。命令 ppriv -l(请参见 ppriv(1))可以生成所有 Solaris 特权的列表。您可以按 ppriv 显示的格式指定特权。在 privileges(5) 中,特权以 PRIV_privilege_name 格式列出。例如,在此属性中指定的特权 sys_time 在 privileges(5) 中将显示为 PRIV_SYS_TIME。
区域的标记类型。
区域既可以拥有自己的独占 IP 实例(缺省),也可以与全局区域共享 IP 实例。在缺省区域模板 SYSdefault 中,ip-type 设置为 exclusive。在提供的另外一个 SYSdefault-shared-ip 模板中,ip-type 设置为 shared。
此属性可以接受的值为 exclusive 和 shared。
区域可以模仿 32 位主机标识符以简化系统整合。缺省情况下,区域的 hostid 属性是空的,这意味着区域不模拟主机标识符。区域主机标识符必须是 0 到 FFFFFFFE 之间的十六进制值。0x 或 0X 前缀是可选的。大写和小写十六进制数字都可以接受。
可以在区域中挂载的其他文件系统的逗号分隔列表;例如,ufs,pcfs。缺省情况下,只能挂载 hsfs(7FS) 和网络文件系统。
此属性不适用于通过 add fs 或 add dataset 挂载到区域中的文件系统。
注意 - 如果允许挂载非缺省文件系统,将使得区域管理员能够使用伪造的文件系统映像来危害系统安全,因此不支持此类挂载。 |
定义文件系统的哪些部分不使用只读策略,即,允许区域写入文件系统的哪些部分。
该属性当前支持 4 个值:none、strict、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 /var/svc/profiles
flexible-configuration 与 fixed-configuration 相当,但还允许写入 /etc 中的文件。
定义 VNIC anet 要连接到的 EVS 所属的 tenant 的名称。请参见evsadm(1M)。
确定文件系统的挂载方式、挂载位置等信息时所需的值。请参见 mount(1M)、mount(2)、fsck(1M) 和 vfstab(4)。
net 资源表示为一个区域分配的物理网络资源。在分配之前,该资源必须在全局区域中存在。
网络接口的网络地址和物理接口名称。网络地址为以下地址之一:
有效的 IPv4 地址,后面可以跟有可选的 / 和前缀长度;
有效的 IPv6 地址,必须后接 / 和前缀长度;
可解析为 IPv4 地址的主机名。
请注意,不支持解析为 IPv6 地址的主机名称。
物理接口名称即网络接口名称。
用来指定可选的缺省路由器值的方式与指定网络地址的方式类似,但它不能后跟 /(斜杠)和网络前缀长度。要正确地使用 defrouter 功能,使用该属性的区域所在的子网必须不同于全局区域所在的子网。此外,使用不同的 defrouter 设置的每个区域(或区域集)必须位于不同的子网上。
id 值是用于标识网络接口的正整数;请参见 solaris-kz(5)。
可将区域配置为独占 IP 区域或共享 IP 区域。对于共享 IP 区域,必须同时设置 physical 和 address 属性;是否设置缺省路由器是可选的。在引导非全局区域之前,必须在全局区域中激活在 physical 属性中指定的接口。不过,如果全局区域不使用该接口,应在全局区域中将其配置为 down,并应在此处为该接口指定缺省路由器。不能为共享 IP 区域设置 allowed-address 属性。
对于独占 IP 区域,必须设置 physical 属性,不能设置address 属性。此外,还可以通过指定 allowed-address 属性来限制独占 IP 区域可以使用的 IP 地址集。如果未指定 allowed-address,则独占 IP 区域可以使用 net 资源的关联 physical 接口上的任何 IP 地址。而当指定了 allowed-address 时,独占 IP 区域将无法使用不在 physical 地址的 allowed-address 列表中的 IP 地址。如果 configure-allowed-address 设置为 true,则在每次引导区域时会自动在接口上配置 allowed-address 指定的地址。如果它设置为 false,在区域引导时将不会配置 allowed-address。缺省情况下,当指定 allowed-address 时,configure-allowed-address 将设置为 true。此外,如果已填充 allowed-address 列表,还可以选择指定 defrouter 属性。但是,如果指定了 defrouter 值且 configure-allowed-address 设置为 false,则将忽略 defrouter 值,并显示相应的警告消息。为 physical 属性指定的接口必须没有在全局区域中使用。如果通过 zonecfg 指定了 allowed-address 和缺省路由器,则这些属性将在通过 ipadm(1M) 在非全局独占 IP 区域中启用接口时(通常是在区域引导期间)应用于接口。非全局独占 IP 区域将无法向该接口应用任何其他地址,也无法传输具有指定 IP 版本的不同源地址的数据包。通过 zonecfg 设置的缺省路由器无法使用 –p 标志与 route(1M) 从非全局独占 IP 区域内永久删除。
请注意,不能在多个独占 IP 区域间共享单个数据链路。
anet 资源表示为独占 IP 区域自动创建的网络资源。zonecfg 使用缺省 SYSdefault 模板创建区域时,将在区域配置中自动包括具有以下属性的 anet 资源:
linkname=net0 lower-link=auto mac-address=default link-protection=mac-nospoof
当此类区域引导时,将自动为该区域创建一个临时的 VNIC 或 IPoIB 数据链路。当区域停止时,将删除该 VNIC 或 IPoIB 数据链路。
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(1M) 手册页。
指定将用来创建 VNIC 或 IPoIB 的链路。对于以太网链路,此属性的缺省值为 auto。如果指定了 pkey,则必须为 lower-link 指定一个有效的 IPoIB phys 类数据链路。在添加 anet 资源时,管理员可以显式指定一个值。链路可以是接受为 dladm create-vnic 的 –l 选项或 dladm create-part 的 –l 选项的参数的任何链路(请参见 dladm(1M))。如果该属性设置为 linkname(而非 auto)且该链路不存在,则区域将无法引导。如果设置为 auto,每次区域引导时,zoneadmd(1M) 守护进程都会自动选择用来创建 VNIC 的链路。选择用于在引导期间自动创建 VNIC 的缺省 lower-link 时,将跳过所有 IPoIB 数据链路。将会使用以下试探性操作选择链路:
链路状态为 up 的链路聚合。
在链路状态为 up 的物理以太网链路中,其名称按字母顺序为最小的链路。
如果没有状态为 up 的链路,则会使用名为 net0 的数据链路(如果存在)。
如果以上两点都不满足,区域将无法引导。
请参见 net 资源中对独占 IP 区域 allowed-address 属性的描述。
当 mac-address 属性(请参见下文)设置为 random 或 auto 时,保存随机生成的 MAC 地址列表,以便区域能够持久性地反复获取相同地址。要重置随机生成的地址,需要由管理员清除此属性。
请参见 net 资源中对独占 IP 区域 configure-allowed-address 属性的描述。
与数据链路关联的 802.1p 优先级。有关此属性的详细信息,请参见 dladm(1M)。
请参见 net 资源中对独占 IP 区域 defrouter 属性的描述。
指示 TX 端的 ETS 带宽。有关此属性的详细信息,请参见 dladm(1M)。
根据指定值或关键字设置 VNIC 的 MAC 地址列表。如果该列表的元素不是关键字,则将其解释为单点传送 MAC 地址。IPoIB 数据链路不支持此属性。支持的关键字包括:
factory:为 VNIC 分配出厂 MAC 地址。当请求出厂 MAC 地址时,可以使用 mac-slot 属性指定 MAC 地址插槽标识符。否则,将使用下一个可用的出厂 MAC 地址。
random:为 VNIC 分配随机 MAC 地址。使用 mac-prefix 属性指定一个前缀。否则,将使用缺省前缀,该前缀包含有效 IEEE OUI,并设置了本地位。
auto:如果可能(如果 NIC 支持),首先尝试分配随机 mac-address,否则尝试分配出厂 mac-address。这是缺省值。
default:使用特定于平台的分配策略。在大多数情况下,此方式尝试分配随机地址(请参见上文中的 'random')。如果当前平台是 Oracle Solaris 内核区域,将分配出厂 MAC 地址(请参见上文中的 'factory')。
如果选择了随机 MAC 地址,则将在区域引导和区域分离/连接后保留生成的地址。这将允许区域通过维护稳定的客户机 ID 来保留它们的 DHCP 租用,还会充分利用具有稳定 MAC 地址的其他优势。
如果请求了随机 MAC 地址分配,指定 MAC 地址前缀列表。否则,将忽略该属性。此属性对 IPoIB 数据链路无效。
如果请求了出厂 MAC 地址,指定使用的 MAC 地址插槽标识符列表。否则,将忽略该属性。此属性对 IPoIB 数据链路无效。
VNIC 的最大传输单元(以字节为单位)。请参见 dladm(1M) 中的 mtu 属性。
指定 VNIC 的全双工带宽。请参见 dladm(1M) 中的 maxbw 属性。缺省情况下,VNIC 将使用在 lower-link 上设置的 maxbw,如果未进行设置,则不存在任何带宽限制。
指定 VNIC 的相对优先级。有关支持的值和缺省值,请参见 dladm(1M) 中的 priority 属性。
对该 VNIC 启用 VLAN 标记并指定 VLAN 标记的 id。没有指定缺省值,这意味着如果未设置该属性,VNIC 将不会参与任何 VLAN。IPoIB 数据链路不支持此属性。
指定与 VNIC 关联的 VSI 类型 ID。请参见 dladm(1M) 中的描述。
指定与 VNIC 关联的 VSI 版本。请参见 dladm(1M) 中的描述。
指定与 VNIC 关联的 VSI 管理器 ID。请参见 dladm(1M) 中的描述。
指定接收端扇出线程数。请参见 dladm(1M) 中的描述。
指定 VNIC 的接收环。有关支持的值和缺省值,请参见 dladm(1M) 中的 rxrings 属性。
指定 VNIC 的传送环。有关支持的值和缺省值,请参见 dladm(1M) 中的 txrings 属性。
启用一个或多个链路保护类型(使用逗号分隔值)。有关支持的值,请参见 dladm(1M) 中的 protection 属性。它的缺省值为 mac-nospoof。
请注意,向该属性添加 ip-nospoof 不会有任何效果,除非同时设置了 allowed-address。设置 allowed-address 会将 ip-nospoof 隐式添加到 link-protection 集,而清除 allowed-address 会将其删除。
设置该属性将对 VNIC 启用 dhcp-nospoof。有关详细信息,请参见 dladm(1M)。
指定十六进制的 InfiniBand 分区密钥值。pkey 始终被视为十六进制的,不管它是否具有 0x 前缀。此属性仅对 IPoIB 数据链路有效。
在 IB 分区数据链路上设置链路传输服务类型。缺省值为 cm。此属性仅对 IPoIB 数据链路有效。有效值包括:
连接模式。此模式使用缺省 MTU 65520,并且支持的最大 MTU 为 65535 字节。如果远程节点无法使用连接模式,则会自动改用不可靠的数据报模式。
不可靠的数据报模式。此模式使用缺省 MTU 2044,并且支持的最大 MTU 为 4092 字节。
id 值是用于标识网络接口的正整数;请参见 solaris-kz(5)。
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 值是一个正整数,用于唯一标识资源。
要匹配的设备名称。这可以是要匹配的 glob 模式,也可以是绝对路径名。请注意,设备资源和别名数据集可能会在 /dev/zvol 中存在名称空间冲突。请参见 dev(7FS)。
此外,存储属性也可以设置为存储 URI(请参见 suri(5))。在这种情况下,区域引导时将映射 SURI,匹配的设备节点在区域内可用。区域停止时,取消 SURI 映射。在这种情况下,allow-partition 自动设置为 true。
allow-partition 和 allow-raw-io 均可以设置为 true 或 false,缺省值为 false。请参见“附注”部分。
id 值是用于标识虚拟块设备的正整数;请参见 solaris-kz(5)。
资源控制的名称和 priv/limit/action 三要素。请参见 prctl(1) 和 rctladm(1M)。设置 rctl 值的首选方式是使用与特定 rctl 关联的全局属性名称。
指定为 solaris-kz 标记区域配置的虚拟 CPU 数量。请参见 solaris-kz(5)。
通用属性的名称、类型和值。type 必须是 int、uint、boolean 或 string 中的一个,value 必须属于该类型。uint 的意思是不带符号的整数,即非负整数。
要从区域内访问的 ZFS 数据集的名称。请参见 zfs(1M)。为每个数据集设置了别名,以便它在区域中显示为虚拟 ZFS 池。alias 是该虚拟池的名称。有关应用于 ZFS 池名称,并进而还应用于数据集别名值的名称限制,请参见 zpool(1M)。别名 rpool 是从区域的 rpool 数据集中保留的。请注意,别名数据集和设备资源可能会在 /dev/zvol 中存在名称空间冲突。请参见 dev(7FS)。
要分配给此区域的公平份额调度器 (Fair Share Scheduler, FSS) 份额的数量。此属性与 dedicated-cpu 资源不兼容。此属性是设置 zone.cpu-shares 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(1M) 和 pooladm(1M) 手册页。
可以明确地选择也可以自动选择要专用的 cpu:
将 cpus、cores 或 sockets 之一设置为 cpu、核心或套接字 id 的列表。使用 psrinfo -t 和 pooladm 查看哪些 cpu、核心和/或套接字可用。
如果指定的任何资源分配给其他区域或池,则该区域将无法引导。这包括所分配资源的子集。例如,如果分配的套接字在别处分配了核心。
如果指定的任何 cpu 资源不存在或者出现故障或脱机,则在区域引导时将显示警告。区域将接收处于联机状态的所有指定 cpu 资源。
如果 cpu 资源部分联机(例如核心中的某些 cpu 出现故障),则区域将接收核心中的其余联机 cpu,并将显示警告。
如果指定的 cpu 资源都不处于联机状态,则区域将无法引导。
这可能会随区域的每次引导或实时区域重新配置而异。
将 ncpus 设置为整数范围或标量值。使用 - 表示范围,例如 1-4 表示一到四个处理器。如果指定范围,则专用于区域的 cpu 数量可能会在区域运行时发生变化。
根据需要设置 "importance" 以配置与专用 cpu 关联的资源池的 pool.importance 值。"importance" 值是整数值。使用范围时,cpu 分配有益于重要性较高的池。有关基于重要性的分配的说明,请参见 libpool(3LIB) 手册页。
如果没有足够用的联机 cpu 来满足最低或整数值集,则区域将无法进行引导或实时重新配置。
配置了自动 cpu 时,专用于区域的特定 cpu 可能会在区域运行时发生变化。例如,如果在别处分配了供自动运行的区域使用的 cpu 资源,则该 cpu 资源将替换为其他可用 cpu 资源。专用于运行的自动 cpu 区域的 cpu 资源的数量也可能在区域指定的约束内发生变化。
solaris-kz 标记区域在运行时不能更改 cpu。这些区域不支持 ncpus 的范围值。运行的 solaris-kz 标记区域使用的 cpu 资源不能在别处分配,即使这些资源是自动选择的也是如此。由于此原因,建议使用特定 cpu 的区域应当在使用自动 cpu 的 solaris-kz 标记区域之前进行引导。
此资源与 pool 和 cpu-shares 属性都不兼容。只能将此资源的单个实例添加到区域中。
该区域可以使用的内存量上限。可以向其中的每个数量值应用一个比例(K、M、G、T),例如,1M 代表 100 万字节。其中每个属性都是可选的,但在添加此资源时必须至少设置一个属性。只能将此资源的单个实例添加到区域中。physical 属性设置该区域的 max-rss。这将由在全局区域中运行的 rcapd(1M) 强制实施。swap 属性是设置 zone.max-swap rctl 的首选方式。locked 属性是设置 zone.max-locked-memory rctl 的首选方式。
设置可供某个区域使用的 CPU 时间量的限制。使用的单元将换算为可供区域中的所有用户线程使用的对单个 CPU 的百分比,以小数表示(例如,.75),或以混合数字表示(整数和小数,例如,1.25)。ncpu 值为 1 表示一个 CPU 的 100%,值为 1.25 表示 125%,.75 表示 75%,依此类推。当设置有上限的区域中的项目有其自己的上限时,优先采用最小值。
capped-cpu 属性是 zone.cpu-cap 资源控制的别名,与 zone.cpu-cap 资源控制相关。请参见 resource_controls (5)。
将区域管理授权委托给指定的用户或角色。该用户必须对应于一个有效的本地帐户。auths 的允许值包括:
允许在经过验证的情况下 zlogin(1) 到该区域。
允许对所配置的区域进行正常管理。
允许将指定的区域作为用来克隆新区域的来源。
允许修改区域的持久配置。
允许检测并修改正在运行的区域的实时配置。
定义一个或多个专用于包含区域安装的专用 zpool 的存储资源。在 suri(5)中定义了允许的 storage 值。
定义一个或多个专用于已委托给区域的 zpool 的存储资源。在 suri(5)中定义了允许的 storage 值。在 zpool(1M)中定义了允许的 name 值。不允许使用名称 rpool。
提供对用于内核区域暂停映像和主机数据的加密密钥的管理访问权限,如 solaris-kz(5)中所述。不能直接设置 raw 的值,除非在 command_file 模式下。
配置内核区域的暂停映像的位置。仅允许一个 suspend 资源。如果没有任何 suspend 资源,则内核区域不支持暂停和恢复。suspend 资源允许指定 path 或 storage,不允许同时指定两者。如果指定 path,那么这是将写入暂停文件的完全路径,并且其父目录必须存在。如果指定 storage,那么,这必须是存储 URI 引用的设备,如 suri(5)中所述。
下表汇总了资源、属性名称和类型:
resource property-name type (global) zonename simple (global) zonepath simple (global) autoboot simple (global) autoshutdown simple (global) bootargs simple (global) pool simple (global) limitpriv simple (global) brand simple (global) ip-type simple (global) hostid simple (global) cpu-shares simple (global) max-lwps simple (global) max-msg-ids simple (global) max-sem-ids simple (global) max-shm-ids simple (global) max-shm-memory simple (global) scheduling-class simple (global) fs-allowed list of simple (global) tenant simple fs dir simple special simple raw simple type simple options list of simple net address simple allowed-address list of simple configure-allowed-address simple cos simple defrouter list of simple etsbw_lcl simple physical simple id simple anet linkname simple lower-link simple allowed-address list of simple auto-mac-address simple configure-allowed-address simple defrouter list of simple mac-address simple mac-slot simple mac-prefix simple mtu simple maxbw simple priority simple vlan-id simple vsi-typeid simple vsi-vers simple vsi-mgrid simple rxfanout simple rxrings simple txrings simple link-protection list of simple allowed-dhcp-cids list of simple pkey simple linkmode simple FIXME someone needs to update id simple evs simple vport simple anet:mac auto-mac-address simple mac-address simple mac-prefix simple id simple device match simple storage simple allow-partition simple allow-raw-io simple id simple rctl name simple value list of complex attr name simple type simple value simple dataset name simple alias simple dedicated-cpu ncpus simple or range cpus list of simple cores list of simple sockets list of simple importance simple virtual-cpu ncpus simple capped-memory physical simple with scale swap simple with scale locked simple with scale capped-cpu ncpus simple admin user simple auths list of simple rootzpool storage simple zpool storage simple name simple hostkey raw simple suspend path simple storage simple
为进一步指定各个事项("rctl" 资源类型的复杂属性 "“value" 的细目),它包含了三个名称/值对,名称为 priv、limit 和 action,其中每个名称都接受一个简单值。"attr" 资源的 "name" 属性在语法方面的限制类似于区域名称,但不完全相同:它必须以字母数字开头,可以包含字母数字以及连字符 (-)、下划线 (_) 和点 (.) 字符。以 "zone" 开头的属性名称保留供系统使用。最后,"autoboot" 全局属性的值必须为 true 或 false。
系统使用内核统计信息 (kstat(3KSTAT)) 模块 caps 为所有设有上限的项目和区域维护该信息。您可以通过读取内核统计信息 (kstat(3KSTAT))(指定 caps 作为 kstat 模块名称)来访问该信息。以下命令显示所有活动 CPU 上限的内核统计信息:
# kstat caps::'/cpucaps/'
在某个区域中运行的 kstat(1M) 命令只显示与该区域以及该区域中的项目相关的 CUP 上限。请参见“示例”部分。
下面是可与 kstat(1M) 一起使用的与上限相关的参数:
kstat 模块。
kstat 类,可与 kstat –c 选项一起使用。
kstat 名称,可与 kstat –n 选项一起使用。id 是项目或区域的标识符。
响应请求所有 CPU 上限统计信息的 kstat(1M) 命令时将显示以下字段。
在 kstat 的此使用情况中,此字段的值将是 caps。
如上所述,cpucaps_project_id 或 cpucaps_zone_id
在上限之上度过的总时间(以秒为单位)。
在上限之下度过的总时间(以秒为单位)。
观察到的最大 CPU 使用量。
在上限等待队列中的线程数。
属于某个设有上限的项目或区域的所有线程当前使用的 CPU 总量,换算为对单个 CPU 的百分比。
上限值,换算为对单个 CPU 的百分比。
为其显示统计信息的区域的名称。
有 kstat 命令的输出的样例,请参见“示例”部分。
统一归档文件(使用 archiveadm(1M) 创建)提供了一种将 Solaris 实例归档的方式。每个统一归档文件都可以包含对应一个或多个全局区域和/或非全局区域的数据和元数据。缺省情况下,archiveadm(1M) 生成适合系统或区域克隆的归档文件。archiveadm(1M) 也可以创建适合系统恢复的归档文件(可选)。
如果使用 zonecfg create -a archive [options] 子命令通过统一归档文件配置区域,归档文件创建选项会影响归档配置的保留程度:通过克隆归档文件配置时,可能会造成问题的属性值(用于多个主机而值相同)将使用缺省值。这些属性包括:
host id
allowed-address
mac-address
allowed-address
此外,如果归档区域的名称与正在安装的区域的名称不匹配,某些属性将自动更新以反映新区域的名称:
如果 zonepath 的最后一个元素与归档区域的名称匹配,zonepath 中的最后一个元素将替换为新区域的名称。
对于数据集资源,如果 alias 与归档区域的名称匹配,alias 将替换为新区域的名称。
对于数据集资源,如果 name 属性的最后一个元素与归档区域的名称匹配,name 属性中的最后一个元素将替换为新区域的名称。
通过统一归档文件配置不会阻碍使用后续命令根据需要修改资源和属性值。
支持以下选项:
指定 zonecfg 命令文件的名称。command_file 是包含 zonecfg 子命令的文本文件,每个子命令占一行。
启用实时编辑模式。指示 zonecfg 编辑正在运行的区域的实时配置,而不是稳定存储器中的永久配置。在使用时,zonecfg 会检索当前的实时区域配置的快照。在此模式下,支持完整的 zonecfg 子命令集。实时配置会在提交后立即生效,并在下一次区域重新引导之前处于有效状态。实时模式仅可用于正在运行的区域,并且需要 solaris.zone.liveconfig/zonename 授权。
指定区域的名称。区域名称区分大小写。区域名称必须以字母数字字符开头,并可包含字母数字字符、下划线 (_)、连字符 (-) 和点 (.)。名称 global 和所有以 SYS 开头的名称均保留,不能使用。
支持在特定属性中使用以下标记:
求值结果为区域的名称
求值结果为特定资源的 id 属性。此标记在支持 id 属性的资源范围内使用。
求值结果为 %。
可以使用 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 选项以强制执行操作。指定 –t template 选项可创建一个与 template 完全相同的配置,其中 template 是所配置的某个区域的名称。
create 使用缺省模板 SYSdefault。可以使用 svc:/system/zones:default 服务的 default_template SMF 属性在系统范围内更改缺省模板。管理员可以使用 –t(使用特定模板)或 –b(使用空白模板)覆盖该区域的缺省值。
使用 –a directory 选项可方便地在新主机上匹配一个分离区域。path 参数是已经移动到此新主机上的分离区域的 zonepath 位置。配置了分离区域后,应使用 “zoneadm attach” 命令安装它(请参见 zoneadm(1M))。对新区域的所有验证都发生在 attach 进程期间,而不是在区域配置期间。
使用 –a 归档选项可以方便地通过 archiveadm(1M) 创建的统一归档文件配置区域。归档文件可以采用绝对路径或文件名、http 或 https URI 形式。如果统一归档文件包含多个区域,必须使用 –z archived_zone 选项指定使用归档文件中的哪个区域执行配置操作。如果通过 https URI 访问归档文件,可以使用 –x 选项指定证书、CA 证书和/或密钥文件的位置。如果指定 cert、cacert 和 key,必须以 PEM 格式指定。有关更多详细信息,请参见上文中的“通过统一归档文件配置”。
使用 –b 选项可以创建一个空白配置。如果未指定参数,create 将应用 Oracle Sun 缺省设置。
从内存和稳定存储器中删除指定的配置。此操作是即时的,不需要提交。删除的配置无法恢复。
使用 –F 选项强制执行操作:
结束资源指定。此子命令仅在资源范围内适用。zonecfg 进行检查以确保完整地指定了当前资源。如果完整地指定了当前资源,则会将其添加到内存中配置(有关将此配置保存到稳定存储器的信息,请参见 commit),范围将恢复为全局或以前的某个资源范围。如果指定不完整,它将发出相应的错误消息。
将配置输出至标准输出。使用 –f 选项可将配置输出到 output-file。此选项以适合在命令文件中使用的格式生成输出。
输出常规帮助或有关给定主题的帮助。
显示有关当前配置的信息。如果指定了 resource-type,将仅显示关于相关类型的资源的信息。如果指定了任何 property-name 值对,将仅显示符合指定条件的资源的相关信息。在资源范围中,所有参数都将被忽略,info 将仅显示当前正在添加或修改的资源的相关信息。
在 zonecfg 交互模式下请求特定的属性或资源类型(如 property-name.template: template-value)时,可能会显示标记。此模板值的求值结果输出由 property-name: propperty-value 提供。请参见“示例”部分。
在全局范围中,删除指定的资源。[] 语法表示在方括号内有 0 项或多项内容。如果您希望仅删除资源的单个实例,必须为要唯一标识的资源指定足够的 property-name 对和 property-value 对。如果没有指定属性名称-值对,则会删除所有实例。如果指定了多个对,需要进行确认(除非使用了 –F 选项)。
选择与给定的 property-name property-value 名称/值对条件匹配的给定类型的资源进行修改。此子命令仅在全局范围内适用。将范围更改为此资源类型。{} 语法表示在花括号内有 1 项或多项内容。必须为要唯一标识的资源指定足够的 property-name property-value 对。
将给定属性名称设置为给定值。某些属性(例如,zonename 和 zonepath)是全局的,另外一些属性是特定于资源的。此子命令同时适用于全局范围和资源范围。
检验当前配置是否正确:
所有资源都指定了其所有必需属性。
指定了 zonepath。
如果指定了 –v 选项,当设备资源中指定的设备可能存在冲突并隐藏别名数据集内创建的 ZFS 卷时,将会发出警告。请参见 dev(7FS)。
将配置恢复到上次提交时的状态。可使用 –F 选项强制执行操作。
放弃所有未提交的更改并从稳定存储器重新装入配置(缺省模式),或者检索正在运行的区域的最新配置(实时模式)。可使用 –F 选项强制执行操作。
将持久配置恢复到上次提交时的状态。可使用 –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 myzone3 my-zone3: No such zone configured Use 'create' to begin configuring a new zone. zonecfg:myzone3> create zonecfg:myzone3> info zonepath zonepath.template: /system/zones/%{zonename} zonepath: /system/zones/myzone3 zonecfg:myzone3> set autoboot=true zonecfg:myzone3> add fs zonecfg:myzone3:fs> set dir=/opt/local zonecfg:myzone3:fs> set special=/usr/local zonecfg:myzone3:fs> set type=lofs zonecfg:myzone3:fs> add options [ro,nodevices] zonecfg:myzone3:fs> end zonecfg:myzone3> add fs zonecfg:myzone3:fs> set dir=/mnt zonecfg:myzone3:fs> set special=/dev/dsk/c0t0d0s7 zonecfg:myzone3:fs> set raw=/dev/rdsk/c0t0d0s7 zonecfg:myzone3:fs> set type=ufs zonecfg:myzone3:fs> end zonecfg:myzone3> add fs zonecfg:myzone3:fs> set dir=/opt/sfw zonecfg:myzone3:fs> set special=/opt/sfw zonecfg:myzone3:fs> set type=lofs zonecfg:myzone3:fs> add options [ro,nodevices] zonecfg:myzone3:fs> end zonecfg:myzone3> select anet linkname=net0 zonecfg:myzone3:anet> set lower-link=nxge0 zonecfg:myzone3:anet> set allowed-address="192.168.0.1/24,192.168.1.2/\ 24,192.168.2.3/24" zonecfg:myzone3:anet> end zonecfg:my-zone3> set cpu-shares=5 zonecfg:my-zone3> add capped-memory zonecfg:my-zone3:capped-memory> set physical=50m zonecfg:my-zone3:capped-memory> set swap=100m zonecfg:my-zone3:capped-memory> end zonecfg:myzone3> exit示例 2 创建独占 IP 区域
以下示例将创建一个分配了名为 net0 的 VNIC 的区域。用来创建 VNIC 的链路是自动确定的。IP 地址和路由是在新区域内部使用 ipadm(1M) 配置的。
example# zonecfg -z excl zonecfg:excl> create zonecfg:excl> set zonepath=/export/zones/excl zonecfg:excl> exit示例 3 创建共享 IP 区域
以下示例创建的区域将与全局区域共享 IP 栈,并被分配一个 IP 地址和缺省路由器。
example# zonecfg -z shared zonecfg:shared> create -b zonecfg:shared> set zonepath=/export/zones/shared zonecfg:shared> set ip-type=shared zonecfg:shared> add net zonecfg:shared:net> set physical=nge0 zonecfg:shared:net> set address=192.168.0.3/24 zonecfg:shared:net> set defrouter=192.168.0.1 zonecfg:shared:net> end zonecfg:shared> exit示例 4 将区域与资源池相关联
以下示例展示了如何将现有区域与现有的资源池相关联:
example# zonecfg -z myzone zonecfg:myzone> set pool=mypool zonecfg:myzone> exit
有关资源池的更多信息,请参见 pooladm(1M) 和 poolcfg(1M)。
示例 5 更改区域的名称仅允许对处于已配置状态的区域更改 zonename 属性。对于处于已安装状态的区域,请使用 zoneadm(1M) rename 子命令。以下示例展示了如何更改现有区域的名称:
example# zonecfg -z myzone zonecfg:myzone> set zonename=myzone2 zonecfg:myzone2> exit示例 6 更改区域的特权集
以下示例展示了如何更改现有区域的特权集,该区域的进程在区域下次引导时将受限于该特权集。在这个特定的案例中,特权集将是区域正常情况下拥有的标准安全特权集,加上更改系统日期和时间的特权。
example# zonecfg -z myzone zonecfg:myzone> set limitpriv="default,sys_time" zonecfg:myzone2> exit示例 7 设置全局区域的 zone.cpu-shares 属性
以下命令可设置全局区域的 zone.cpu-shares 属性:
example# zonecfg -z global zonecfg:global> set cpu-shares=5 zonecfg:global> exit示例 8 使用模式匹配
以下命令展示了 zonecfg 对模式匹配的支持。在区域 flexlm 中,输入:
zonecfg:flexlm> add device zonecfg:flexlm:device> set match="/dev/cua/a00[2-5]" zonecfg:flexlm:device> end
在全局区域中,输入:
global# ls /dev/cua a a000 a001 a002 a003 a004 a005 a006 a007 b
在区域 flexlm 中,输入:
flexlm# ls /dev/cua a002 a003 a004 a005示例 9 将区域的上限设置为三个 CPU
以下序列使用 zonecfg 命令将区域的 CPU 上限设置为三个 CPU。
zonecfg:myzone> add capped-cpu zonecfg:myzone>capped-cpu> set ncpus=3 zonecfg:myzone>capped-cpu>capped-cpu> end
上面的序列使用了 capped-cpu 属性,它等效于使用了 zone.cpu-cap 资源控制的以下序列。
zonecfg:myzone> add rctl zonecfg:myzone:rctl> set name=zone.cpu-cap zonecfg:myzone:rctl> add value (priv=privileged,limit=300,action=none) zonecfg:myzone:rctl> end示例 10 使用 kstat 监视 CPU 上限
以下命令显示有关所有 CPU 上限的信息。
# kstat -n /cpucaps/ module: caps instance: 0 name: cpucaps_project_0 class: project_caps above_sec 0 below_sec 2157 crtime 821.048183159 maxusage 2 nwait 0 snaptime 235885.637253027 usage 0 value 18446743151372347932 zonename global module: caps instance: 0 name: cpucaps_project_1 class: project_caps above_sec 0 below_sec 0 crtime 225339.192787265 maxusage 5 nwait 0 snaptime 235885.637591677 usage 5 value 18446743151372347932 zonename global module: caps instance: 0 name: cpucaps_project_201 class: project_caps above_sec 0 below_sec 235105 crtime 780.37961782 maxusage 100 nwait 0 snaptime 235885.637789687 usage 43 value 100 zonename global module: caps instance: 0 name: cpucaps_project_202 class: project_caps above_sec 0 below_sec 235094 crtime 791.72983782 maxusage 100 nwait 0 snaptime 235885.637967512 usage 48 value 100 zonename global module: caps instance: 0 name: cpucaps_project_203 class: project_caps above_sec 0 below_sec 235034 crtime 852.104401481 maxusage 75 nwait 0 snaptime 235885.638144304 usage 47 value 100 zonename global module: caps instance: 0 name: cpucaps_project_86710 class: project_caps above_sec 22 below_sec 235166 crtime 698.441717859 maxusage 101 nwait 0 snaptime 235885.638319871 usage 54 value 100 zonename global module: caps instance: 0 name: cpucaps_zone_0 class: zone_caps above_sec 100733 below_sec 134332 crtime 821.048177123 maxusage 207 nwait 2 snaptime 235885.638497731 usage 199 value 200 zonename global module: caps instance: 1 name: cpucaps_project_0 class: project_caps above_sec 0 below_sec 0 crtime 225360.256448422 maxusage 7 nwait 0 snaptime 235885.638714404 usage 7 value 18446743151372347932 zonename test_001 module: caps instance: 1 name: cpucaps_zone_1 class: zone_caps above_sec 2 below_sec 10524 crtime 225360.256440278 maxusage 106 nwait 0 snaptime 235885.638896443 usage 7 value 100 zonename test_001示例 11 显示特定区域或项目的 CPU 上限
使用 kstat –c 和 –i 选项,可以显示特定区域或项目的 CPU 上限,如下所示。第一个命令生成针对某个特定项目的显示,第二个命令生成针对区域 1 中同一个项目的显示。
# kstat -c project_caps # kstat -c project_caps -i 1示例 12 委托区域管理权限
以下示例展示了如何将当前区域的管理权限分配给某个角色。
example# zonecfg -z myzone zonecfg:myzone> add admin zonecfg:myzone:admin> set user=zadmin zonecfg:myzone:admin> set auths=login,manage zonecfg:myzone:admin> end zonecfg:myzone> commit
执行这些命令后,将在 RBAC user_attr(4) 数据库中更新条目,类似于以下条目:
zadmin::::type=role;\ auths=solaris.zone.login/myzone,solaris.zone.manage/myzone;profiles=\ Zone Management示例 13 创建具有非缺省属性的独占 IP 区域
以下示例创建的区域具有通过 mylink0 自动创建的 VNIC,并指定了给定的 MAC 地址、100 Mbps 的最大带宽、高优先级、RX 端的专用硬件环、TX 端的非专用硬件环(即,基于软件)以及 VLAN id 2。
example# zonecfg -z excl excl: No such zone configured Use 'create' to begin configuring a new zone zonecfg:excl> create -b zonecfg:excl> set zonepath=/export/zones/excl zonecfg:excl> add anet zonecfg:excl:anet> set linkname=mynic0 zonecfg:excl:anet> set lower-link=mylink0 zonecfg:excl:anet> set mac-address=8:0:20:fe:4e:b8 zonecfg:excl:anet> set maxbw=100M zonecfg:excl:anet> set priority=high zonecfg:excl:anet> set vlan-id=2 zonecfg:excl:anet> set rxrings=hw zonecfg:excl:anet> set txrings=sw zonecfg:excl:anet> end zonecfg:excl> exit示例 14 创建只读区域
以下示例将创建一个可防止区域对其根文件系统进行修改的新区域。由于应用了 fixed-configuration 配置文件,/var 中的文件是可写的。
example# zonecfg -z rozone rozone: No such zone configured Use 'create' to begin configuring a new zone zonecfg:rozone> create zonecfg:rozone> set brand=solaris zonecfg:rozone> set zonepath=/export/zones/rozone zonecfg:rozone> set autoboot=true zonecfg:rozone> set file-mac-profile=fixed-configuration zonecfg:rozone> set ip-type=exclusive zonecfg:rozone> add net zonecfg:rozone:net> set physical=vnic0 zonecfg:rozone:net> end zonecfg:rozone> exit示例 15 创建包含 IB 分区的独占 IP 区域
以下示例创建具有缺省属性的区域。该区域在引导时将自动创建一个 IPoIB 数据链路,在停止时将删除该数据链路。
example# zonecfg -z excl excl: No such zone configured Use 'create' to begin configuring a new zone zonecfg:excl> create zonecfg:excl> set zonepath=/export/zones/excl zonecfg:excl> set ip-type=exclusive zonecfg:excl> add anet zonecfg:excl> set linkname=part0 zonecfg:excl> set lower-link=net4 zonecfg:excl> set pkey=ffff zonecfg:excl:anet> end zonecfg:excl> exit示例 16 创建一个安装到专用存储资源和 zpool 中的区域
以下示例创建新的区域,其中,zpool 资源由包含整个区域安装的一个存储资源组成。将自动创建 zpool 或在区域安装期间导入预先创建的 zpool。名称将为 zoss_rpool。
example# zonecfg -z zoss zoss: No such zone configured Use 'create' to begin configuring a new zone zonecfg:zoss> create zonecfg:zoss> set zonepath=/zoss zonecfg:zoss> add rootzpool zonecfg:zoss:rootzpool> add storage iscsi://127.0.0.1/luname.naa.6001\ 44f03d70c80000004ea57da10001 zonecfg:zoss:rootzpool> end zonecfg:zoss> exit示例 17 创建具有委托的 zpool 资源的区域
以下示例创建新的区域,其中,zpool 资源被委托给含有两个存储资源的区域。将自动创建 zpool 或在区域安装期间导入预先创建的 zpool。名称将为 zoss_mypool。
example# zonecfg -z zoss zoss: No such zone configured Use 'create' to begin configuring a new zone zonecfg:zoss> create zonecfg:zoss> set zonepath=/zoss zonecfg:zoss> add zpool zonecfg:zoss:zpool> set name=mypool zonecfg:zoss:zpool> add storage dev:/dev/dsk/c0t1d0 zonecfg:zoss:zpool> add storage dev:/dev/dsk/c1t1d0 zonecfg:zoss:zpool> end zonecfg:zoss> exit示例 18 检查正在运行的区域的实时配置
以下示例检查正在运行的区域的实时配置。
example# zonecfg -z myzone -r zonecfg:myzone> info示例 19 在不重新引导区域的情况下临时向正在运行的区域添加新的 anet
以下示例在不重新引导区域的情况下临时向正在运行的区域添加新的 anet。
example# zonecfg -z myzone -r zonecfg:myzone> add anet zonecfg:myzone> set linkname=anet1 zonecfg:myzone> set lower-link=net1 zonecfg:myzone> end zonecfg:myzone> commit示例 20 通过统一归档文件创建区域配置
以下示例通过存储在 /export/archvies 中的统一归档文件新建区域配置。该归档文件只包含一个名为 web、zonepath 为 /zones/web 的区域。如 info 子命令所示,zonepath 按上文中的“通过统一归档文件配置”一节所述进行了调整。
example# zonecfg -z ex17 ex17: No such zone configured Use 'create' to begin configuring a new zone zonecfg:ex17> create -a /export/archives/web.uar zonecfg:ex17> info zonepath zonepath: /zones/web zonecfg:ex17> set zonepath=/zones/ex17 zonecfg:ex17> exit
这同样也可以通过非交互模式完成:
example# zonecfg -z ex17 "create -a /export/archives/web.uar; set zonepath=/zones/web"示例 21 通过安全的 Web 服务器上的统一归档文件创建区域配置
此示例显示了使用非交互式命令通过安全的 Web 服务器上的归档文件配置区域。使用 –z 选项指定用作配置源的特定归档区域。首先将证书、CA 证书和密钥传送到此计算机。
example# zonecfg -z ex19 create \ -a https://install.example.com/archives/combo.uar \ -z database \ -x cert=/root/install.pem \ -x cacert=/root/example.com.pem \ -x key=/root/sslkey.pem \; \ set zonepath=/zones/ex19示例 22 为全局区域的 p2v 创建区域配置
此示例显示了通过统一归档文件使用归档的全局区域作为源来创建区域配置。请注意,归档文件中的区域配置是使用 zonep2vchk(1M) 生成的,因而可能包含进一步定制建议的说明。
example# zonecfg -z ex20 ex20: No such zone configured Use 'create' to begin configuring a new zone set zonepath=/zones/ex20 zonecfg:ex20> create -a /export/p2v.uar -z global zonecfg:ex20> info attr attr: name: zonep2vchk-info type: string value: "p2v of host m4k" attr: name: zonep2vchk-net-blue0 type: string value: "original system had NIC blue0 with MAC address 0:8:20:9e:eb:8c and IP address 10.147.23.12: consider anet (linkname=blue0 mac-address=0:8:20:9e:eb:8c allowed-address=10.147.23.12)" attr: name: zonep2vchk-num-cpus type: string value: "original system had 4 CPUs: consider capped-cpu (ncpus=4.0) or dedicated-cpu (ncpus=4)" attr: name: zonep2vchk-physmem type: string value: "original system had 32 GB: consider capped-memory (physical=32G)" attr: name: zonep2vchk-swap type: string value: "original system had 48 GB: consider capped-memory (swap=48G)" zonecfg:ex20> select anet linkname=blue0 zonecfg:ex20:anet> set allowed-address=10.147.23.12 zonecfg:ex20:anet> set configure-allowed-address=true zonecfg:ex20:anet> end zonecfg:ex20> add capped-memory zonecfg:ex20:capped-memory> set swap=48G zonecfg:ex20:capped-memory> end zonecfg:ex20> exit示例 23 创建具有连接到弹性虚拟交换机的 anet 资源的区域。
以下示例创建了一个具有 VNIC anet 资源的区域;该资源连接到 tenant tenantA 的 EVS evsa 以及 VPort vport0。
example# zonecfg -z evszone evszone: No such zone configured Use 'create' to begin configuring a new zone zonecfg:evszone> create zonecfg:evszone> set zonepath=/export/zones/evszone zonecfg:evszone> set tenant=tenantA zonecfg:evszone> add anet zonecfg:evszone:net> set evs=EVSA zonecfg:evszone:net> set vport=vport0 zonecfg:rozone:net> end zonecfg:rozone> exit example# zoneadm -z evszone install example# zoneadm -z evszone boot example# dladm show-vnic -c LINK TENANT EVS VPORT OVER MACADDRESS VIDS evszone/net0 tenantA EVSA vport0 net2 2:8:20:1a:c1:e4 0
在引导区域时,evszone/net0 VNIC anet 将具有 vport EVSA/vport0 的 MAC 地址、IP 地址和 SLA 属性。
示例 24 将区域配置复制到其他系统进行区域迁移在将某个区域从一个全局区域迁移到另一个全局区域时,需要先迁移区域配置。export 子命令可导出所有区域配置,以便将其与 zonecfg –f 选项一起使用,从而在新全局区域上完全保留这些配置。如果不使用此示例中所示的过程,则内核区域将无法访问任何暂停文件,或者无法正确地连接到新的全局区域。
global1# zonecfg -z ex22 export -f /net/scratch/export/ex22.cfg global2# zonecfg -z ex22 -f /net/scratch/export/ex22.cfg
将返回以下退出值:
成功完成。
出现错误。
用法无效。
有关下列属性的说明,请参见 attributes(5):
|
ppriv(1)、prctl(1)、lgrpinfo(1)、zlogin(1)、archiveadm(1M)、dladm(1M)、format(1M)、ipadm(1M)、kstat(1M)、mount(1M)、pooladm(1M)、poolcfg(1M)、poold(1M)、psrinfo(1M)、rcapd(1M)、rctladm(1M)、route(1M)、suriadm(1M)、svcadm(1M)、zfs(1M)、zoneadm(1M)、zonep2vchk(1M)、zpool(1M)、priv_str_to_set(3C)、kstat(3KSTAT)、user_attr(4)、vfstab(4)、attributes(5)、brands(5)、fnmatch(5)、mwac(5)、privileges(5)、rbac(5)、resource_controls (5)、solaris-kz(5)、suri(5)、tpd(5)、zones(5)、dev(7FS)、hsfs(7FS)、zfs(7FS)、uscsi(7I)、evsadm(1M)
Resource Management and Oracle Solaris Zones Developer’s Guide
zonecfg 使用的所有字符都必须采用 US-ASCII 编码。
一般情况下,向区域中添加设备可能会使区域对系统的安全性和稳定性产生不利影响,因为不是所有设备都已经过审核并确认可以在区域内安全地使用。
可以将使用 sd 或 ssd 目标驱动程序的存储设备(例如,这可以使用 prtconf -D /dev/dsk/c2t40d3 来检查)安全地委托给区域。这将使得区域管理员可以为此类设备设置标签和分区。
要允许通过 format(1M) 来设置磁盘标签,应将整个磁盘/LUN 委托给区域,并设置 allow-partition 属性。例如:
zonecfg:myzone> add device zonecfg:myzone> set match=/dev/*dsk/c2t40d3* zonecfg:myzone> set allow-partition=true zonecfg:myzone> end
也可以只委托磁盘的单个分片(例如 match=/dev/dsk/c2t40d3s0),但不建议这样做。为了确保该操作的安全性,allow-partition 属性不得为 true,且分片或分区不得与包含磁盘标签(这些标签位于分区或磁盘的前两个或后两个块中)的磁盘头重叠。
可以通过将 allow-raw-io 属性设置为 true 来启用对存储设备的原始访问权限。这是不安全的,因为它会允许区域进程执行原始 SCSI 命令(请参见 uscsi(7I))。
在区域内,“设备在使用中”检查不起作用,因为它所依赖的 /devices/ 树不存在。将来的项目可能会解决此限制。
"add fs" 资源指定的 lofs 文件系统挂载点不得位于区域挂载的任何文件系统内。特别是这类挂载点不得位于 /var 和 /export 之下。