JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 管理:Oracle Solaris Zones、Oracle Solaris 10 Zones 和资源管理     Oracle Solaris 11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分Oracle Solaris 资源管理

1.  资源管理介绍

2.  项目和任务(概述)

3.  管理项目和任务

4.  扩展记帐(概述)

5.  管理扩展记帐(任务)

6.  资源控制(概述)

7.  管理资源控制(任务)

8.  公平份额调度器(概述)

9.  管理公平份额调度器(任务)

10.  使用资源上限设置守护进程控制物理内存(概述)

11.  管理资源上限设置守护进程(任务)

12.  资源池(概述)

13.  创建和管理资源池(任务)

14.  资源管理配置示例

第 2 部分Oracle Solaris Zones

15.  Oracle Solaris Zones 介绍

16.  非全局区域配置(概述)

关于区域中的资源

在区域管理中使用权限配置文件和角色

预安装配置过程

区域组件

区域名称和路径

区域自动引导

只读根区域的 file-mac-profile 属性

admin 资源

资源池关联

dedicated-cpu 资源

capped-cpu 资源

调度类

物理内存控制和 capped-memory 资源

区域网络接口

关于数据链路

共享 IP 非全局区域

专用 IP 非全局区域

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

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

在区域中挂载的文件系统

区域中的主机 ID

区域中的已配置设备

非全局区域中的磁盘格式支持

设置区域范围的资源控制

可配置的特权

包含区域注释

使用 zonecfg 命令

zonecfg 模式

zonecfg 交互模式

zonecfg 命令文件模式

区域配置数据

资源类型和属性

资源类型属性

Tecla 命令行编辑库

17.  规划和配置非全局区域(任务)

18.  关于安装、关闭、停止、卸载和克隆非全局区域(概述)

19.  安装、引导、关闭、停止、卸载和克隆非全局区域(任务)

20.  非全局区域登录(概述)

21.  登录到非全局区域(任务)

22.  关于区域迁移和 zonep2vchk 工具

23.  迁移 Oracle Solaris 系统和迁移非全局区域(任务)

24.  关于安装了区域的 Oracle Solaris 11 系统上的自动安装和软件包

25.  Oracle Solaris Zones 管理(概述)

26.  管理 Oracle Solaris Zones(任务)

27.  配置和管理不可编辑的区域

28.  各种 Oracle Solaris Zones 问题的故障排除

第 3 部分Oracle Solaris 10 Zones

29.  Oracle Solaris 10 Zones 介绍

30.  评估 Oracle Solaris 10 系统和创建归档文件

31.  (可选)将 Oracle Solaris 10 native 非全局区域迁移到 Oracle Solaris 10 Zones

32.  配置 solaris10 标记区域

33.  安装 solaris10 标记区域

34.  引导区域、登录和区域迁移

词汇表

索引

区域组件

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

区域名称和路径

必须为区域选择名称和路径。区域必须位于 ZFS 数据集中。在安装或附加区域时,将自动创建 ZFS 数据集。如果无法创建 ZFS 数据集,也无法安装或附加区域。请注意,区域路径的父目录也必须是一个数据集。

区域自动引导

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

只读根区域的 file-mac-profile 属性

solaris 区域中,file-mac-profile 用于配置只读根区域。

有关更多信息,请参见第 27 章

admin 资源

admin 设置允许您设置区域管理授权。定义授权的首选方法是通过 zonecfg 命令。

user

指定用户名。

auths

指定用户名授权。

solaris.zone.login

如果使用基于角色的访问控制 (role-based access control, RBAC),则交互式登录需要 solaris.zone.login/zonename 授权。将在区域中进行口令验证。

solaris.zone.manage

如果使用 RBAC,则对于非交互式登录或者要跳过口令验证,需要 solaris.zone.manage/ zonename 授权。

solaris.zone.clonefrom

如果使用 RBAC,则用于生成其他区域副本的子命令需要 solaris.zone.clonefrom/ source_zone 授权。

资源池关联

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

如果未配置资源池,还可使用 dedicated-cpu 资源来指定在某个非全局区域运行时将系统处理器的某个子集专用于该非全局区域。系统将动态创建一个临时池,以便在区域运行时使用。根据 zonecfg 的指定,池配置将在迁移期间进行传播。


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


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 资源不兼容。


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,在不更改缺省调度类和不重新引导的情况下将正在运行的进程移至其他调度类。

物理内存控制和 capped-memory 资源

capped-memory 资源可为 physicalswaplocked 内存设置限制。每个限制均是可选的,但至少要设置一个限制。要使用 capped-memory 资源,必须在全局区域中安装 resource-cap 软件包。


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


有关更多信息,请参见第 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 区域,必须通过 ipadm 实用程序完成全局区域中的配置。专用 IP 区域必须有专用的网络接口。如果使用 anet 资源配置专用 IP 区域,将自动创建一个专用 VNIC 并将其分配给该区域。通过使用自动的 anet 资源,不必在全局区域中创建和配置数据链路并将数据链路指定给非全局区域。使用 anet 资源可完成以下任务:

为了实现向后兼容性,可以向非全局区域指定预配置的数据链路。

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


注 - 链路保护在《Oracle Solaris 管理:网络接口和网络虚拟化》中的第 20  章 "在虚拟化环境中使用链路保护"中进行了介绍,可用在运行区域的系统上。此功能在全局区域中配置。


关于数据链路

数据链路是 OSI 协议栈的第 2 层接口,在系统中表示为 STREAMS DLPI (v2) 接口。此类接口可以在 TCP/IP 等协议栈下检测到。数据链路也称为物理接口,例如,网络接口卡 (Network Interface Card, NIC)。数据链路是使用 zonecfg (1M) 配置的 physical 属性。physical 属性可以为 VNIC,具体请参见《Oracle Solaris 管理:网络接口和网络虚拟化》中的第 III 部分, "网络虚拟化和资源管理"

数据链路示例有物理接口(如 e1000g0bge1)、NIC(如 bge3)、集合(如 aggr1aggr2)或有 VLAN 标记的接口(如 e1000g123000 bge234003)(分别作为 e1000g0bge3 上的 VLAN 123 和 VLAN 234)。

共享 IP 非全局区域

共享 IP 区域使用全局区域中的现有 IP 接口。该区域必须具有一个或多个专用 IP 地址。共享 IP 区域与全局区域共享 IP 层配置和状态。如果以下两个条件同时成立,则区域应该使用共享 IP 实例:

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

zonecfg net 资源中,必须设置 addressphysical 属性。defrouter 属性为可选的。

要在全局区域中使用共享 IP 类型联网配置,必须使用 ipadm,而不是自动网络配置。要确定 ipadm 是否正在进行联网配置,请运行以下命令。显示的响应必须为 DefaultFixed

# svcprop -p netcfg/active_ncp svc:/network/physical:default
DefaultFixed

指定给共享 IP 区域的 IP 地址与逻辑网络接口相关联。

可以在全局区域中使用 ipadm 命令来在运行的区域中指定或删除逻辑接口。

要添加接口,请使用以下命令:

global# ipadm set-addrprop -p zone=my-zone net0/addr1

要删除接口,请使用以下命令之一:

global# ipadm set-addrprop -p zone=global net0/addr

或者:

global# ipadm reset-addrprop -p zone net0/addr1 

有关更多信息,请参见共享 IP 网络接口

专用 IP 非全局区域

专用 IP 是非全局区域的缺省联网配置。

专用 IP 区域具有其自己的 IP 相关状态以及一个或多个专用数据链路。

可以在专用 IP 区域中使用以下功能:

有两种配置专用 IP 区域的方式:

缺省情况下,专用 IP 区域可以在关联接口上配置和使用任何 IP 地址。(可选的)可以使用 allowed-address 属性指定逗号分隔的 IP 地址列表。专用 IP 区域不能使用 allowed-address 列表中没有的 IP 地址。此外,将在引导区域时自动为专用 IP 区域永久配置 allowed-address 列表中的所有地址。如果不需要此接口配置,则必须将 configure-allowed-address 属性设置为 false。缺省值为 true

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

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

在已指定自己的数据链路集的正在运行的专用 IP 区域中,可以使用 ipadm 命令来配置 IP,包括添加或删除逻辑接口的能力。通过使用 sysconfig(1M) 手册页中所述的 sysconfig 接口,可以按全局区域的设置方式对区域中的 IP 配置进行设置。

专用 IP 区域的 IP 配置仅可在全局区域中使用 zlogin 命令进行查看。

global# zlogin zone1 ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
nge0/_b           dhcp     ok           10.134.62.47/24
lo0/v6            static   ok           ::1/128
nge0/_a           addrconf ok           fe80::2e0:81ff:fe5d:c630/10

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

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

但是,对于专用 IP 区域,zonecfg 会将指定数据链路的一切权限都授予该区域。因此,在专用 IP 区域中,超级用户或具有所需权限配置文件的用户可以如同在全局区域中一样,在这些数据链路上发送欺骗性包。可以通过设置 allowed-address 属性来禁用 IP 地址欺骗。对于 anet 资源,可以通过设置 link-protection 属性来启用其他保护(例如,mac-nospoofdhcp-nospoof)。

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

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

在区域中挂载的文件系统

缺省情况下,每个区域都有一个委托给该区域的 ZFS 数据集。这一缺省委托数据集模拟缺省全局区域的数据集布局。名为 .../rpool/ROOT 的数据集包含引导环境。不应直接处理该数据集。rpool 数据集必须存在,缺省情况下挂载在 ... /rpool 下。.../rpool/export.../rpool/export/home 数据集挂载在 /export/export/home 下。这些非全局区域与对应的全局区域数据集具有相同的用途,并可以按相同的方式进行管理。区域管理员可以在 .../rpool.../rpool/export... /rpool/export/home 数据集中创建附加数据集。

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

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

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

区域中的主机 ID

您可以设置非全局区域的 hostid 属性,该属性与全局区域的 hostid 属性不同。例如,如果机器迁移到其他系统上的区域,将执行此操作。区域内的现有应用程序可能取决于原始 hostid。有关更多信息,请参见资源类型和属性

区域中的已配置设备

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

非全局区域中的磁盘格式支持

可通过 zonecfg 工具启用磁盘分区和使用 uscsi 命令。有关示例,请参见资源类型属性中的 device。有关 uscsi 命令的更多信息,请参见 uscsi(7I)

设置区域范围的资源控制

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

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

设置区域范围的资源控制的首选简单方法是使用属性名称或资源(如 capped-cpu),而不使用 rctl 资源(如 cpu-cap)。

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


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


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

zone.max-locked-memory 资源控制可以限制某个区域可以使用的锁定物理内存量。可以使用 project.max-locked-memory 资源控制来控制如何在区域中的项目间分配锁定内存资源。有关更多信息,请参见表 6-1

zone.max-lofi 资源控制可以限制某个区域可以创建的潜在 lofi 设备的数量。

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

zone.max-processes 资源控制通过防止某个区域使用太多的进程表槽并给其他区域造成影响,来增强资源隔离。可以使用可用的资源控制中介绍的 project.max-processes 资源控制来设置区域内各项目间的进程表槽资源分配。此控制的全局属性名称是 max-processeszone.max-processes 资源控制还包括 zone.max-lwps 资源控制。如果设置了 zone.max-processes,但未设置 zone.max-lwps,则在引导区域时 zone.max-lwps 将被隐式设置为 zone.max-processes 值的 10 倍。注意,由于常规进程和僵进程都使用进程表槽,因此 max-processes 控制可以防止僵进程用尽进程表。由于僵进程没有定义任何 LWP,因此 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 设置。

表 16-1 区域范围的资源控制

控制名称
全局属性名称
说明
缺省单位
所用值
zone.cpu-cap
此区域可用的 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-lofi
max-lofi
可由区域创建的潜在 lofi 设备的数量限制
数量(lofi 设备的数量)
zone.max-lwps
max-lwps
此区域可同时使用的最大 LWP 数
数量 (LWP)
zone.max-msg-ids
max-msg-ids
此区域允许的最大消息队列 ID 数
数量(消息队列 ID)
zone.max-processes
max-processes
此区域可同时使用的最大进程表槽数
数量(进程表槽数)
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 命令指定的限制不是持久的。在重新引导系统后,此限制将失效。

可配置的特权

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


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


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

包含区域注释

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