系统管理指南:Oracle Solaris Containers-资源管理和 Oracle Solaris Zones

第 17 章 非全局区域配置(概述)

本章介绍非全局区域配置。

本章包含以下主题:

了解区域配置之后,请转至第 18 章以配置要在系统上安装的非全局区域。

有关 lx 标记区域配置的信息,请参见第 32 章第 33 章

本章新增内容

Solaris 10 6/06: 添加了对 ZFS 文件系统的支持,包括在本地非全局区域中添加数据集资源的功能。有关更多信息,请参见资源类型属性

Solaris 10 11/06: 添加了对可配置权限的支持。请参见Solaris 10 11/06 及更高版本:可配置的权限

Solaris 10 8/07:zonecfg 命令中添加了对以下功能的支持:

Solaris 10 10/08: defrouter 属性已添加到共享 IP 非全局区域的 zonecfg 实用程序中的 net 资源中。您可以通过此属性为网络接口设置缺省路由器。

有关 Solaris 10 新增功能的完整列表以及 Solaris 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》

关于区域中的资源

包含资源管理功能的区域称为容器。可以在容器中控制的资源包括:

预安装配置过程

在系统上安装非全局区域并使用它之前,必须先配置该区域。

zonecfg 命令用于创建配置,并确定指定的资源和属性是否在虚拟系统上有效。zonecfg 对给定配置执行的检查将检验以下内容:

有关 zonecfg 命令的更多信息,请参见 zonecfg(1M) 手册页。

区域组件

本节讨论可以配置的必需区域组件和可选区域组件。区域配置数据中还提供了附加信息。

区域名称和路径

必须为区域选择名称和路径。

区域自动引导

autoboot 属性设置决定在引导全局区域时是否自动引导区域。区域服务,svc:/system/zones:default 也必须启用。

资源池关联

如果按第 13 章所述在系统中配置了资源池,则可在配置区域时使用 pool 属性将该区域与其中一个资源池相关联。

从 Solaris 10 8/07 发行版开始,如果尚未配置资源池,您仍可以使用 dedicated-cpu 资源指定在非全局区域运行时将系统处理器的某个子集专用于该非全局区域。系统将动态创建一个临时池,以便在区域运行时使用。根据 zonecfg 的指定,池配置将在迁移期间进行传播。


注 –

使用通过 pool 属性设置的永久池的区域配置与通过 dedicated-cpu 资源配置的临时池不兼容。只能设置这两个属性中的其中一个。


Solaris 10 8/07:dedicated-cpu 资源

dedicated-cpu 资源可指定在非全局区域运行时应将系统处理器的某个子集专用于该非全局区域。在引导区域时,系统将动态创建一个临时池,以便在区域运行时使用。

根据 zonecfg 的指定,池设置将在迁移期间进行传播。

dedicated-cpu 资源可为 ncpus 以及 importance(可选)设置限制。

ncpus

指定 CPU 数目或指定一个范围(如 2–4 个 CPU)。如果指定一个范围(因为需要动态资源池行为),则还应执行以下操作:

importance

如果使用 CPU 范围来获取动态行为,还要设置 importance 属性。importance 属性是可选属性,用来定义池的相对重要性。仅当为 ncpus 指定了范围并且使用由 poold 管理的动态资源池时,才需要此属性。如果 poold 未运行,则会忽略 importance。如果 poold 正在运行并且未设置 importance,那么 importance 将缺省设置为 1。有关更多信息,请参见pool.importance 属性约束


注 –

capped-cpu 资源与 dedicated-cpu 资源不兼容。cpu-shares rctl 与 dedicated-cpu 资源不兼容。


Solaris 10 5/08:capped-cpu 资源

capped-cpu 资源对某一项目或区域可占用的 CPU 资源量设立绝对的细粒度限制。在与处理器集结合使用时,CPU 上限将限制某一处理器集内的 CPU 使用。capped-cpu 资源有一个 ncpus 属性,该属性是一个正小数,小数点右侧有两位。该属性与 CPU 的单位相对应。此资源不接受范围值,但接受小数。指定 ncpus 时,值为 1 表示某个 CPU 的 100%。值为 1.25 表示 125%,因为 100% 对应于系统中的一个 CPU。


注 –

capped-cpu 资源与 dedicated-cpu 资源不兼容。


区域中的调度类

可以使用公平份额调度器 (fair share scheduler, FSS),根据区域中各工作负荷的重要性控制可用 CPU 资源在区域之间的分配。这种工作负荷重要性通过您为每个区域分配的 CPU 资源份额数来表示。即使您没有使用 FSS 来管理区域之间的 CPU 资源分配,您也可以将区域的调度类设置为使用 FSS,以便您可为区域中的项目设置份额。

在显式设置 cpu-shares 属性时,公平份额调度器 (fair share scheduler, FSS) 将用作该区域的调度类。但是,在此情况下使用 FSS 的首选方法是通过 dispadmin 命令将 FSS 设置为系统缺省的调度类。这样,所有区域都将从获取系统 CPU 资源的公平份额中受益。如果未为区域设置 cpu-shares,区域将使用系统缺省的调度类。以下操作可为区域设置调度类:

请注意,您可以使用 priocntl(1) 手册页中所述的 priocntl,在不更改缺省调度类和不重新引导的情况下将正在运行的进程移至其他调度类。

Solaris 10 8/07:物理内存控制和 capped-memory 资源

capped-memory 资源可为 physicalswaplocked 内存设置限制。每个限制均为可选项,但至少要设置一个限制。


注 –

应用程序通常不会锁定大量内存,但是如果已知道区域的应用程序会锁定内存,则您可能会决定设置锁定内存。如果区域信任是一个需要关注的问题,还可以考虑将锁定内存上限设为系统物理内存的百分之十,或区域物理内存上限的百分之十。


有关更多信息,请参见第 10 章第 11 章如何配置区域。要临时为区域设置资源上限,请参见如何为区域指定临时资源上限

区域网络接口

引导区域时,将在其中自动设置并放置通过 zonecfg 命令配置的用于提供网络连接的区域网络接口。

Internet 协议 (Internet Protocol , IP) 层可接受和传送网络包。该层包括 IP 路由、地址解析协议 (Address Resolution Protocol, ARP)、Internet 协议安全体系结构 (Internet Protocol Security Architecture, IPsec) 和 IP 过滤器。

可用于非全局区域的 IP 类型有两种:共享 IP 和专用 IP。共享 IP 区域可共享网络接口,专用 IP 区域必须具有一个专用网络接口。

有关每种类型中 IP 功能的信息,请参见共享 IP 非全局区域中的联网Solaris 10 8/07:专用 IP 非全局区域中的联网

共享 IP 非全局区域

共享 IP 区域是缺省类型。该区域必须有一个或多个专用 IP 地址。共享 IP 区域可与全局区域共享 IP 层配置和状态。如果以下两个条件同时成立,则区域应该使用共享 IP 实例:

使用 zonecfg 命令可为共享 IP 区域分配一个或多个 IP 地址。数据链路名称也必须在全局区域中配置。

这些地址与逻辑网络接口关联。可以从全局区域中使用 ifconfig 命令来在运行的区域中添加或删除逻辑接口。有关更多信息,请参见共享 IP 网络接口

Solaris 10 8/07:专用 IP 非全局区域

在专用 IP 区域中可使用 IP 级别的全部功能。

专用 IP 区域具有其自己的与 IP 相关的状态。

这包括可以在专用 IP 区域中使用下列功能:

使用 zonecfg 命令可为专用 IP 区域分配其自己的数据链路集合。使用 net 资源的 physical 属性,可为该区域指定一个数据链路名称,如 xge0e1000g1bge32001。没有设置 net 资源的 address 属性。

注意,通过分配的数据链路,可使用 snoop 命令。

可以将 dladm 命令与 show-linkprop 子命令一起使用,以显示正在运行的专用 IP 区域的数据链路分配。可以将 dladm 命令与 set-linkprop 子命令一起使用,以将其他数据链路分配给正在运行的区域。有关用法示例,请参见Solaris 10 8/07:在专用 IP 非全局区域中管理数据链路

在正在运行的专用 IP 区域内,ifconfig 命令可用于配置 IP,包括添加或删除逻辑接口。通过使用 sysidcfg(4) 中所述的 sysidtools,可以按全局区域的设置方式对区域中的 IP 配置进行设置。


注 –

专用 IP 区域的 IP 配置仅可在全局区域中使用 zlogin 命令进行查看。以下是一个示例。


global# zlogin zone1 ifconfig -a

共享 IP 非全局区域和专用 IP 非全局区域之间的安全差异

在共享 IP 区域中,此区域中的应用程序(包括超级用户)不能发送带有源 IP 地址的包,只能发送通过 zonecfg 实用程序分配给该区域的包。此类型的区域不能发送和接收任意数据链路(第 2 层)包。

但是,对于专用 IP 区域,zonecfg 会将指定数据链路的一切权限都授予该区域。因此,专用 IP 区域中的超级用户可以通过这些数据链路发送欺骗型包,就像可以在全局区域中发送一样。

同时使用共享 IP 和专用 IP 非全局区域

共享 IP 区域总是与全局区域共享 IP 层,而专用 IP 区域总是有其自己的 IP 层实例。共享 IP 区域和专用 IP 区域都可在同一计算机中使用。

在区域中挂载的文件系统

通常,在区域中挂载的文件系统包括:

例如,这可以包括以下文件系统:

将对在应用程序环境中执行的挂载设定特定限制。这些限制可防止区域管理员拒绝为系统的其余部分提供服务,或者对其他区域产生不良影响。

在区域中挂载特定的文件系统时存在安全限制。其他文件系统在区域中挂载时会显示出特殊行为。有关更多信息,请参见文件系统和非全局区域

区域中的已配置设备

zonecfg 命令使用与规则匹配的系统来指定应在特定区域中出现的设备。与其中一个规则匹配的设备包括在区域的 /dev 文件系统中。有关更多信息,请参见如何配置区域

区域中的主机 ID

您可以设置非全局区域的 hostid 属性,该属性与全局区域的 hostid 属性不同。这将在使用物理转换为虚拟功能将物理计算机整合到区域时完成。现在,位于区域内的应用程序可能取决于原始 hostid,并且可能无法更新应用程序配置。有关更多信息,请参见资源和属性类型

设置区域范围的资源控制

全局管理员可以为区域设置区域范围的特权资源控制。区域范围的资源控制可限制区域内所有进程实体总的资源使用情况。

使用 zonecfg 命令同时为全局区域和非全局区域指定这些限制。请参见如何配置区域

从 Solaris 10 8/07 发行版开始,设置区域范围资源控制的首选的、更简单的方法是使用属性名称,而不是使用 rctl 资源。

Solaris 10 5/08: zone.cpu-cap 资源控制用于对某个区域可占用的 CPU 资源量设置绝对限制。值 100 表示将一个 CPU 的 100% 用作 project.cpu-cap 设置。值 125 表示 125%,因为在使用 CPU 上限时,100% 对应于系统中的一个 CPU。


注 –

设置 capped-cpu 资源时,可以使用小数来表示单位。该值对应于 zone.capped-cpu 资源控制,但设置减小 100 倍。设置为 1 等效于资源控制设置 100


zone.cpu-shares 资源控制可以对区域的公平份额调度器 (fair share scheduler, FSS) CPU 份额数设置限制。CPU 份额首先分配给区域,然后在区域内的项目之间进一步分配,如 project.cpu-shares 项中所述。有关更多信息,请参见在安装了区域的 Solaris 系统上使用公平份额调度器。此控制的全局属性名称是 cpu-shares

zone.max-locked-memory 资源控制对可用于区域的锁定物理内存量加以限制。区域中各项目之间的锁定内存资源分配可通过 project.max-locked-memory 资源控制来控制。有关更多信息,请参见表 6–1

zone.max-lwps 资源控制通过禁止一个区域中有过多 LWP 影响其他区域,来增强资源隔离功能。对此区域中项目的 LWP 资源的分配可使用 project.max-lwps 资源控制进行控制。有关更多信息,请参见表 6–1。此控制的全局属性名称是 max-lwps

zone.max-msg-idszone.max-sem-idszone.max-shm-idszone.max-shm-memory 资源控制可用于限制区域中的所有进程使用的 System V 资源。对区域中项目的 System V 资源的分配可使用这些资源控制的项目版本来进行控制。这些控制的全局属性名称是 max-msg-idsmax-sem-idsmax-shm-idsmax-shm-memory

zone.max-swap 资源控制可限制区域中的用户进程地址空间映射和 tmpfs 挂载所占用的交换空间。prstat -Z 的输出将显示一个 SWAP 列。报告的交换是区域进程和 tmpfs 挂载所使用的总交换量。此值有助于监视每个区域预留的交换空间,可用于选择适当的 zone.max-swap 设置。

表 17–1 区域范围的资源控制

控制名称 

全局属性名称 

说明 

缺省单位 

所用值 

zone.cpu-cap

 

Solaris 10 5/08:此区域可用的 CPU 资源量的绝对限制。

数量(CPU 数目),以百分比表示 


注 –

设置 capped-cpu 资源时,可以使用小数来表示单位。


 

zone.cpu-shares

cpu-shares

此区域的公平份额调度器 (fair share scheduler, FSS) CPU 份额数。 

数量(份额) 

 

zone.max-locked-memory

 

区域可用的锁定物理内存的总量 

如果将 priv_proc_lock_memory 指定给某个区域,请考虑同时设置此资源控制,以防止该区域锁定所有内存。

大小(字节) 

capped-memorylocked 属性.

zone.max-lwps

max-lwps

此区域可同时使用的最大 LWP 数。 

数量 (LWP) 

 

zone.max-msg-ids

max-msg-ids

此区域允许的最大消息队列 ID 数。 

数量(消息队列 ID) 

 

zone.max-sem-ids

max-sem-ids

此区域允许的最大信号量 ID 数。 

数量(信号量 ID) 

 

zone.max-shm-ids

max-shm-ids

此区域允许的最大共享内存 ID 数。 

数量(共享内存 ID) 

 

zone.max-shm-memory

max-shm-memory

此区域允许的系统 V 共享内存总量。 

大小(字节) 

 

zone.max-swap

 

可用于此区域的用户进程地址空间映射和 tmpfs 挂载的交换空间总量

大小(字节) 

capped-memoryswap 属性

可以使用 prctl 命令为正运行的进程指定这些限制。如何使用 prctl 命令在全局区域中设置 FSS 份额中还提供了一个示例。通过 prctl 命令指定的限制不是持久的。在重新引导系统后,此限制将失效。

Solaris 10 11/06 及更高版本:可配置的权限

引导区域时,配置中包括安全权限的缺省集合。这些权限被视为安全权限,因为它们可以阻止区域中的特权进程影响系统中其他非全局区域或全局区域中的进程。您可使用 zonecfg 命令执行以下操作:


注 –

目前,有些权限不能从区域的缺省权限集中删除,还有一些权限不能添加到缺省权限集中。


有关更多信息,请参见非全局区域中的权限如何配置区域privileges(5)

包含区域注释

您可以使用 attr 资源类型为区域添加注释。有关更多信息,请参见如何配置区域

使用 zonecfg 命令

可以使用 zonecfg(1M) 手册页中所述的 zonecfg 命令配置非全局区域。在 Solaris 10 8/07 发行版中,此命令还可以用来为全局区域持久指定资源管理设置。

zonecfg 命令可以在交互模式、命令行模式或命令文件模式下使用。可以使用此命令执行以下操作:

zonecfg 提示符的格式如下:


zonecfg:zonename>

当您配置特定的资源类型(例如文件系统)时,此资源类型也包含在提示符中:


zonecfg:zonename:fs>

有关更多信息,包括显示如何使用本章中所述的各种 zonecfg 组件的过程,请参见第 18 章

zonecfg 模式

范围的概念用于用户界面。范围可以是全局的,也可以是资源特定的。缺省范围为全局。

在全局范围内,add 子命令和 select 子命令用于选择特定资源。然后范围更改为此资源类型。

然后范围恢复为全局。

某些子命令(例如 addremoveset)在每个范围中都有不同的语义。

zonecfg 交互模式

在交互模式中,支持以下子命令。有关用于这些子命令的语义和选项的详细信息,请参见 zonecfg(1M) 手册页中有关选项的内容。对于可能会导致破坏性操作或所做工作丢失的任何子命令,系统均要求用户在继续之前进行确认。您可以使用 -F(强制)选项,跳过此项确认操作。

help

列显一般帮助,或者显示有关给定资源的帮助。


zonecfg:my-zone:inherit-pkg-dir> help
create

开始为指定的新区域配置内存中的配置,以实现以下用途之一:

  • 将缺省设置应用于新的配置。此方法为缺省方法。

  • -t template 选项一起使用时,用于创建与指定模板相同的配置。区域名称从模板名称更改为新区域名称。

  • -F 选项一起使用时,用于覆写现有配置。

  • -b 选项一起使用时,用于创建其中未设置任何内容的空配置。

export

采用可以在命令文件中使用的格式,在标准输出或指定输出文件中列显配置。

add

在全局范围中,将指定的资源类型添加到配置。

在资源范围中,添加具有给定名称和给定值的属性。

有关更多信息,请参见如何配置区域和 zonecfg(1M) 手册页。

set

将给定属性名称设置为给定属性值。请注意,某些属性(例如 zonepath)为全局属性,而其他属性则为资源特定的属性。因此,此命令适用于全局范围和资源范围。

select

仅适用于全局范围。选择与给定属性名称-属性值对的修改条件相匹配的给定类型资源。将范围更改为此资源类型。您必须为要唯一标识的资源指定足够数量的属性名称-值对。

clear

Solaris 10 8/07: 清除可选设置的值。不能清除必需设置。但可以通过指定新值来更改某些必需设置。

remove

在全局范围中,删除指定的资源类型。您必须为要唯一标识的资源类型指定足够数量的属性名称-值对。如果没有指定属性名称-值对,则会删除所有实例。当存在多个属性名称-值对时,如果未使用 -F 选项,则需要进行确认。

在资源范围中,从当前资源中删除指定的属性名称-属性值。

end

仅适用于资源范围。结束资源指定。

然后,zonecfg 命令将检验是否完全指定当前资源。

  • 如果资源完全指定,则可以将其添加到内存中的配置,并且范围将恢复为全局。

  • 如果未完全指定,则系统将显示一条描述需要执行何种操作的错误消息。

cancel

仅适用于资源范围。结束资源指定并将范围重置为全局。系统不会保留任何未完全指定的资源。

delete

销毁指定的配置。从内存和稳定存储器中删除配置。您必须将 -F(强制)选项与 delete 一起使用。


注意 – 注意 –

此操作为即时操作。不需要提交,并且无法恢复已删除的区域。


info

显示有关当前配置或全局资源属性 zonepathautobootpool 的信息。如果指定了资源类型,则仅显示有关此类型资源的信息。在资源范围中,此子命令仅应用于要添加或修改的资源。

verify

检验当前配置是否正确。确保所有资源都指定了所有必需的属性。

commit

将当前配置从内存提交到稳定存储器。在提交内存中的配置之前,可以使用 revert 子命令删除更改。必须提交配置以供 zoneadm 使用。完成 zonecfg 会话时,便会自动尝试此操作。由于仅可提交正确的配置,因此,提交操作将自动进行检验。

revert

将配置恢复到上次提交时的状态。

exit

退出 zonecfg 会话。您可以将 -F(强制)选项与 exit 一起使用。

如果需要,会自动尝试 commit。请注意,也可以使用 EOF 字符退出会话。

zonecfg 命令文件模式

在命令文件模式中,输入来自文件。可以使用zonecfg 交互模式中所述的 export 子命令生成此文件。可以在标准输出中列显配置,也可以使用 -f 选项指定输出文件。

区域配置数据

区域配置数据由两种类型的实体组成:资源和属性。每个资源都有一种类型,并且每个资源还可以有一个包含一个或多个属性的集合。属性具有名称和值。属性集取决于资源类型。

资源和属性类型

资源和属性类型如下所述:

区域名称

区域名称用于标识配置实用程序的区域。以下规则适用于区域名称:

  • 每个区域必须具有唯一的名称。

  • 区域名称区分大小写。

  • 区域名称必须以字母数字字符开头。

    名称可以包含字母数字字符、下划线 (_)、连字符 (-) 和句点 (.)。

  • 名称不能超过 64 个字符。

  • 名称 global 和所有以 SUNW 开头的名称均保留,不能使用。

zonepath

zonepath 属性是包含区域根目录的路径。每个区域都有一个位于全局区域文件系统中 zonepath 路径下的 root 目录。安装区域时,zonepath 目录分层结构将以正确的所有者和模式进行创建。zonepath 目录必须为 root 所拥有,并且模式为 700

非全局区域的根路径低一个级别。区域的根目录与全局区域中的根目录 (/) 具有相同的拥有权和权限。区域目录必须由 root 拥有,并且模式为 755。这些目录是使用正确的权限自动创建的,并且不需要区域管理员进行检验。此分层结构可防止全局区域中的非特权用户遍历非全局区域的文件系统。

路径 

说明 

/home/export/my-zone

zonecfg zonepath

/home/export/my-zone/root

区域的根目录 

/home/export/my-zone/dev

为区域创建的设备目录 

有关此问题的进一步讨论,请参见遍历文件系统


注 –

有关此发行版的 ZFS 限制,请参见Solaris 10 6/06、Solaris 10 11/06、Solaris 10 8/07 和 Solaris 10 5/08:不要将非全局区域的根文件系统放置在 ZFS 上


autoboot

如果此属性设置为 true,则引导全局区域时会自动引导区域。请注意,如果禁用了区域服务 svc:/system/zones:default,则无论如何设置此属性,区域都不会自动引导。您可以使用 svcadm(1M) 手册页中所述的 svcadm 命令来启用区域服务:


global# svcadm enable zones
bootargs

Solaris 10 8/07: 此属性用于为区域设置引导参数。除非被 rebootzoneadm bootzoneadm reboot 命令覆盖,否则将应用该引导参数。请参见Solaris 10 8/07:区域引导参数

pool

此属性用于将区域与系统中的资源池相关联。多个区域可以共享一个池的资源。另请参见Solaris 10 8/07:dedicated-cpu 资源

limitpriv

Solaris 10 11/06 及更高版本: 此属性用于指定缺省权限集之外的权限掩码。请参见非全局区域中的权限

通过指定权限名称可添加权限,权限名称中可包含或不包含前导 priv_。在权限名称前添加破折号 (-) 或感叹号 (!) 可以排除权限。权限值以逗号分隔,并放在引号 (") 内。

priv_str_to_set(3C) 中所述,特殊权限集 noneallbasic 对其标准定义进行了扩展。由于区域配置在全局区域内进行,因此不能使用特殊权限集 zone。由于常见用法是通过添加或删除某些权限来更改缺省权限集,因此特殊权限集 default 将映射为缺省权限集。当 default 出现在 limitpriv 属性开头时,它将扩展为缺省权限集。

以下条目增加了使用 DTrace 程序的功能,该程序只要求区域中具有 dtrace_procdtrace_user 权限:


global# zonecfg -z userzone
zonecfg:userzone> set limitpriv="default,dtrace_proc,dtrace_user"

如果区域的权限集包含不允许的权限、缺少必需权限或包含未知权限,则检验、准备或引导该区域的尝试都将失败,并将显示错误消息。

scheduling-class

Solaris 10 8/07: 此属性可为区域设置调度类。有关其他信息和提示,请参见区域中的调度类

ip-type

Solaris 10 8/07: 仅当区域是专用 IP 区域时,才需要设置此属性。请参见Solaris 10 8/07:专用 IP 非全局区域如何配置区域

dedicated-cpu

Solaris 10 8/07: 此资源可在某个区域运行时使系统处理器的某个子集专用于该区域。dedicated-cpu 资源可为 ncpus 以及 importance(可选)提供限制。有关更多信息,请参见Solaris 10 8/07:dedicated-cpu 资源

capped-cpu 资源

Solaris 10 5/08: 此资源对区域在运行时可占用的 CPU 资源量设置限制。此资源可为 ncpus 提供限制。

capped-memory 资源

Solaris 10 8/07: 此资源可对为区域设置内存上限时使用的属性分组。capped-memory 资源可为 physicalswaplocked 内存提供限制。至少必须指定其中一个属性。

dataset

Solaris 10 6/06: 通过添加 ZFS 文件系统数据集资源,可以将存储管理委托给非全局区域。区域管理员可以在此数据集中创建和销毁文件系统、创建和销毁克隆以及修改此数据集的属性。区域管理员无法影响尚未添加到区域的数据集,也无法超过对指定给区域的数据集设置的任何顶层配额。

可以按以下方式将 ZFS 数据集添加到区域中。

  • 作为一个 lofs 挂载文件系统(在目标单独与全局区域共享空间时)

  • 作为一个委托数据集

请参见《Oracle Solaris ZFS 管理指南》中的第 10  章 “Oracle Solaris ZFS 高级主题”文件系统和非全局区域

有关数据集问题的信息,另请参见第 30 章

fs

当区域从已安装状态转换为就绪状态时,每个区域都可以拥有已挂载的各种文件系统。文件系统资源指定文件系统挂载点的路径。有关在区域中使用文件系统的更多信息,请参见文件系统和非全局区域

inherit-pkg-dir

不应在完全根区域中配置此资源。

在稀疏根区域中,inherit-pkg-dir 资源用于表示包含非全局区域与全局区域共享的软件包的目录。

非全局区域以只读模式继承传送到 inherit-pkg-dir 目录的软件包内容。区域的打包数据库将更新,以反映软件包。使用 zoneadm 安装区域之后,便不能修改或删除这些资源。


注 –

配置中包含四种缺省 inherit-pkg-dir 资源。这些目录资源表示哪些目录应从全局区域中继承关联的软件包。资源通过只读回送文件系统挂载来实现。

  • /lib

  • /platform

  • /sbin

  • /usr


net

网络接口资源是接口名称。当区域从已安装状态转换为就绪状态时,每个区域都可以具有可以设置的网络接口。

device

设备资源是与设备匹配的说明符。当区域从已安装状态转换为就绪状态时,每个区域都具有应配置的设备。

rctl

rctl 资源用于区域范围的资源控制。当区域从已安装状态转换为就绪状态时,将启用这些控制。

hostid

可以设置与全局区域的 hostid 不同的 hostid

attr

此通用属性可用于用户注释或其他子系统。attrname 属性必须以字母数字字符开头。name 属性可以包含字母数字字符、连字符 (-) 和句点 (.)。以 zone. 开头的属性名称将保留,以供系统使用。

资源类型属性

资源也有要配置的属性。以下属性与所示的资源类型关联。

dedicated-cpu

ncpusimportance

Solaris 10 8/07:指定 CPU 个数以及池的相对重要性(可选)。以下示例指定了供区域 my-zone 使用的 CPU 范围,还设置了 importance


zonecfg:my-zone> add dedicated-cpu
zonecfg:my-zone:dedicated-cpu> set ncpus=1-3
zonecfg:my-zone:dedicated-cpu> set importance=2
zonecfg:my-zone:dedicated-cpu> end
capped-cpu

ncpus

指定 CPU 数目。以下示例指定了供区域 my-zone 使用的 CPU 的 CPU 上限为 3.5 个。


zonecfg:my-zone> add capped-cpu
zonecfg:my-zone:capped-cpu> set ncpus=3.5
zonecfg:my-zone:capped-cpu> end
capped-memory

physicalswaplocked

为区域 my-zone 指定内存限制。每个限制均为可选项,但至少要设置一个限制。


zonecfg:my-zone> add capped-memory
zonecfg:my-zone:capped-memory> set physical=50m
zonecfg:my-zone:capped-memory> set swap=100m
zonecfg:my-zone:capped-memory> set locked=30m
zonecfg:my-zone:capped-memory> end
fs

dirspecialrawtypeoptions

fs 资源参数提供的值可确定如何以及在何处挂载文件系统。fs 参数定义如下:

dir

为文件系统指定挂载点

special

指定要从全局区域挂载的特殊块设备名称或目录

raw

指定在挂载文件系统之前运行 fsck 所在的原始设备

type

指定文件系统类型

options

指定挂载选项,这些选项类似于使用 mount 命令找到的挂载选项

以下示例的几行代码指定全局区域中的 /dev/dsk/c0t0d0s2 将作为要配置的区域中的 /mnt 进行挂载。raw 属性指定一个在尝试挂载文件系统之前运行 fsck 命令的可选设备。所使用的文件系统类型为 UFS。添加了选项 nodeviceslogging


zonecfg:my-zone> add fs
zonecfg:my-zone:fs> set dir=/mnt
zonecfg:my-zone:fs> set special=/dev/dsk/c0t0d0s2
zonecfg:my-zone:fs> set raw=/dev/rdsk/c0t0d0s2
zonecfg:my-zone:fs> set type=ufs
zonecfg:my-zone:fs> add options [nodevices,logging]
zonecfg:my-zone:fs> end

有关更多信息,请参见-o nosuid 选项安全限制和文件系统行为以及 fsck(1M)mount(1M) 手册页。另请注意,有关专用于特定文件系统的挂载选项的信息可以在 1M 手册页部分中找到。这些手册页名称的格式为 mount_filesystem


注 –

要使用 fs 资源属性添加 ZFS 文件系统,请参见《Oracle Solaris ZFS 管理指南》中的“向非全局区域中添加 ZFS 文件系统”


dataset

name

以下示例的几行代码指定数据集 sales 将在非全局区域中可见并在该区域中进行挂载,但在全局区域中不再可见。


zonecfg:my-zone> add dataset
zonecfg:my-zone> set name=tank/sales
zonecfg:my-zone> end
inherit-pkg-dir

dir

以下示例的几行代码指定 /opt/sfw 从全局区域中进行回送挂载。


zonecfg:my-zone> add inherit-pkg-dir
zonecfg:my-zone:inherit-pkg-dir> set dir=/opt/sfw
zonecfg:my-zone:inherit-pkg-dir> end
net

addressphysicaldefrouter


注 –

对于共享 IP 区域,可以同时指定 IP 地址和设备,或者设置缺省路由器。

  • 非全局区域位于未在全局区域中配置的子网上时,defrouter 属性可用于设置缺省路由。

  • 设置了 defrouter 属性的任何区域必须位于未在全局区域中配置的子网上。

当共享 IP 区域位于不同的子网上时,请不要在全局区域中配置数据链接。

对于专用 IP 区域,只能指定物理接口。物理属性可为 VNIC。


在以下针对共享 IP 区域的示例中,IP 地址 192.168.0.1 将添加到该区域中。hme0 卡用于物理接口。要确定所使用的物理接口,请在系统上键入 ifconfig -a。每一个输出行(回送驱动程序行除外)都以系统上安装的卡的名称开头。说明中包含 LOOPBACK 的行不适用于卡。


zonecfg:my-zone> add net
zonecfg:my-zone:net> set physical=hme0
zonecfg:my-zone:net> set address=192.168.0.1
zonecfg:my-zone:net> end

在专用 IP 区域的以下示例中,bge32001 链接用于物理接口。要确定哪些数据链路可用,请使用命令 dladm show-link。只有 GLDv3 数据链路才能用于专用 IP 区域,非 GLDv3 数据链路在 dladm show-link 输出中显示为 type: legacy。请注意,还必须指定 ip-type=exclusive


zonecfg:my-zone> set ip-type=exclusive
zonecfg:my-zone> add net
zonecfg:my-zone:net> set physical=bge32001
zonecfg:my-zone:net> end
device

match

在以下示例中,/dev/pts 设备包括在区域中。


zonecfg:my-zone> add device
zonecfg:my-zone:device> set match=/dev/pts*
zonecfg:my-zone:device> end
rctl

namevalue

Solaris 10 8/07: 此发行版的新增资源控制包括 zone.max-locked-memoryzone.max-msg-idszone.max-sem-idszone.max-shm-idszone.max-shm-memoryzone.max-swap

以下是可用的区域范围的资源控制:

  • zone.cpu-shares(首选:cpu-shares

  • zone.max-locked-memory

  • zone.max-lwps(首选: max-lwps

  • zone.max-msg-ids(首选: max-msg-ids

  • zone.max-sem-ids(首选: max-sem-ids

  • zone.max-shm-ids(首选: max-shm-ids

  • zone.max-shm-memory(首选: max-shm-memory

  • zone.max-swap

注意,设置区域范围资源控制的首选的、更简单的方法是使用属性名称,而不是使用 rctl 资源,如如何配置区域中所示。如果区域中的区域范围资源控制条目是使用 add rctl 配置的,则其格式与 project 数据库中的资源控制条目不同。在区域配置中,rctl 资源类型由三个名称/值对组成。名称分别是 privlimitaction。每个名称都有一个简单值。


zonecfg:my-zone> add rctl
zonecfg:my-zone:rctl> set name=zone.cpu-shares
zonecfg:my-zone:rctl> add value (priv=privileged,limit=10,action=none)zonecfg:my-zone:rctl> end

zonecfg:my-zone> add rctl
zonecfg:my-zone:rctl> set name=zone.max-lwps
zonecfg:my-zone:rctl> add value (priv=privileged,limit=100,action=deny)
zonecfg:my-zone:rctl> end

有关资源控制和属性的一般信息,请参见第 6 章在非全局区域中使用的资源控制

attr

nametypevalue

在以下示例中,添加了有关区域的注释。


zonecfg:my-zone> add attr
zonecfg:my-zone:attr> set name=comment
zonecfg:my-zone:attr> set type=string
zonecfg:my-zone:attr> set value="Production zone"
zonecfg:my-zone:attr> end

可以使用 export 子命令在标准输出中列显区域配置。通过可以在命令文件中使用的格式保存配置。

Tecla 命令行编辑库

配置中提供了 Tecla 命令行编辑库,可与 zonecfg 命令一起使用。此库为命令行历史记录和编辑支持提供了一种机制。

Tecla 命令行编辑库在以下手册页中进行介绍: