跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 11.1 管理:Oracle Solaris Zones、Oracle Solaris 10 Zones 和资源管理 Oracle Solaris 11.1 Information Library (简体中文) |
19. 安装、引导、关闭、停止、卸载和克隆非全局区域(任务)
23. 迁移 Oracle Solaris 系统和迁移非全局区域(任务)
24. 关于安装了区域的 Oracle Solaris 11.1 系统上的自动安装和软件包
25. Oracle Solaris Zones 管理(概述)
26. 管理 Oracle Solaris Zones(任务)
28. 各种 Oracle Solaris Zones 问题的故障排除
29. Oracle Solaris 10 Zones 介绍
30. 评估 Oracle Solaris 10 系统和创建归档文件
31. (可选)将 Oracle Solaris 10 native 非全局区域迁移到 Oracle Solaris 10 Zones
本节讨论可以配置的必需区域组件和可选的区域组件。只有区域名称和区域路径是必需的。区域配置数据中还提供了附加信息。
必须为区域选择名称和路径。区域必须位于 ZFS 数据集中。在安装或附加区域时,将自动创建 ZFS 数据集。如果无法创建 ZFS 数据集,也无法安装或附加区域。请注意,区域路径的父目录也必须是一个数据集。
autoboot 属性设置决定了是否在引导全局区域时自动引导该区域。区域服务,svc:/system/zones:default 也必须启用。
在 solaris 区域中,file-mac-profile 用于配置只读根区域。
有关更多信息,请参见第 27 章。
admin 设置允许您设置区域管理授权。定义授权的首选方法是通过 zonecfg 命令。
指定用户名。
指定用户名授权。
如果使用了 RBAC,则交互式登录需要 solaris.zone.login/ zonename 授权。将在区域中进行口令验证。
如果使用 RBAC,则对于非交互式登录或者要跳过口令验证,需要 solaris.zone.manage/ zonename 授权。
如果使用 RBAC,则用于生成其他区域副本的子命令需要 solaris.zone.clonefrom/ source_zone 授权。
dedicated-cpu 资源可指定在非全局区域运行时应将系统处理器的某个子集专用于该非全局区域。在引导区域时,系统将动态创建一个临时池,以便在区域运行时使用。
根据 zonecfg 的指定,池设置将在迁移期间进行传播。
dedicated-cpu 资源可为 ncpus 以及 importance(可选的)设置限制。
指定 CPU 数目或指定一个范围(如 2–4 个 CPU)。如果指定一个范围(因为需要动态资源池行为),则还应执行以下操作:
设置 importance 属性。
启用 poold 服务。有关说明,请参见如何使用 svcadm 启用动态资源池服务。
如果使用 CPU 范围来获取动态行为,还要设置 importance 属性。importance 属性是可选的属性,用来定义池的相对重要性。仅当为 ncpus 指定了范围并且使用由 poold 管理的动态资源池时,才需要此属性。如果 poold 未运行,则会忽略 importance。如果 poold 正在运行并且未设置 importance,那么 importance 将缺省设置为 1。有关更多信息,请参见pool.importance 属性约束。
注 - capped-cpu 资源与 dedicated-cpu 资源不兼容。cpu-shares rctl 与 dedicated-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,区域将使用系统缺省的调度类。以下操作可为区域设置调度类:
可以使用 zonecfg 中的 scheduling-class 属性为区域设置调度类。
可以通过资源池功能为区域设置调度类。如果区域与 pool.scheduler 属性设置为有效调度类的池相关联,则缺省情况下区域中运行的进程会以该调度类运行。请参见资源池介绍和如何将池与调度类关联。
如果设置了 cpu-shares rctl,但未通过其他操作将 FSS 设置为区域的调度类,则 zoneadmd 将在区域引导时将调度类设置为 FSS。
如果未通过其他任何操作设置调度类,区域将继承系统的缺省调度类。
请注意,您可以使用 priocntl(1) 手册页中所述的 priocntl,在不更改缺省调度类和不重新引导的情况下将正在运行的进程移至其他调度类。
capped-memory 资源可为 physical、swap 和 locked 内存设置限制。每个限制均是可选的,但至少要设置一个限制。要使用 capped-memory 资源,必须在全局区域中安装 resource-cap 软件包。
如果计划在全局区域中使用 rcapd 为区域设置内存上限,请确定此资源的值。rcapd 将 capped-memory 资源的 physical 属性用作区域的 max-rss 值。
capped-memory 资源的 locked 属性是用于设置 zone.max-locked-memory 资源控制的首选方法。
注 - 应用程序通常不会锁定大量内存,但是如果已知道区域的应用程序会锁定内存,则您可能会决定设置锁定内存。如果区域信任是一个需要关注的问题,还可以考虑将锁定内存上限设为系统物理内存的百分之十,或区域物理内存上限的百分之十。
有关更多信息,请参见第 10 章、第 11 章和如何配置区域。要临时为区域设置资源上限,请参见如何为区域指定临时资源上限。
zonecfg 实用程序中的可选 rootzpool 资源用于为区域安装创建专用 ZFS zpool。区域的根 ZFS zpool 可以位于由一个或多个统一资源标识符 (Universal Resource Identifier, URI) 定义的共享存储设备上。必需的 storage 属性标识包含区域的根 zfs 文件系统的存储对象 URI。对于一个给定区域,只能定义一个 rootzpool。引导区域时将自动为区域配置存储。
在执行区域安装或附加操作期间,将自动创建或导入相应的 zpool。卸载或分离区域时,将执行以下操作:
自动取消配置存储资源。
自动导出或销毁相应的 zpool。
要在区域安装中重用预先创建的 zpool,必须从系统中导出该 zpool。
区域框架支持以下 URI 类型:
dev
本地设备路径 URI
格式:
dev:local-path-under-/dev dev://absolute-path-with-dev dev:absolute-path-with-dev
示例:
dev:dsk/c7t0d0s0 dev:///dev/dsk/c7t0d0s0 dev:/dev/dsk/c7t0d0s0
lu(逻辑单元)
光纤通道 (Fibre Channel, FC) 和串行连接 SCSI (Serial Attached SCSI, SAS)
格式:
lu:luname.naa.ID lu:initiator.naa.ID,target.naa.ID,luname.naa.ID
示例:
lu:luname.naa.5000c5000288fa25 lu:initiator.naa.2100001d38089fb0,target.naa.2100001d38089fb0,luname.naa.5000c5000288fa25
iscsi
iSCSI URI
格式:
iscsi:///luname.naaID iscsi://host[:port]/luname.naa.ID
示例:
iscsi:///luname.naa.600144f03d70c80000004ea57da10001 iscsi://[::1]/luname.naa.600144f03d70c80000004ea57da10001 iscsi://127.0.0.1/luname.naa.600144f03d70c80000004ea57da10001 iscsi://127.0.0.1:3620/luname.naa.600144f03d70c80000004ea57da10001 iscsi://hostname:3620/luname.naa.600144f03d70c80000004ea57da10001
suriadm 工具用于根据存储 URI 管理共享目标文件。有关 ID、名称地址机构 (Name Address Authority, NAA) 和获取现有存储对象 URI 的信息,请参见 suriadm(1M) 和 suri(5) 手册页。
系统将根据与 rootzpool 关联的区域为新建或导入的 rootzpool 命名。指定的名称采用 zonename_rpool 形式。
可使用以下命令在 rootzpool 资源范围内管理 storage 属性:
add storage URI string
remove storage URI string
通过在 zonecfg 实用程序中配置可选的 zpool 资源,可以将 zpool 委托给非全局区域。引导区域时将自动为区域配置 zpool。
在执行区域安装或附加操作期间,将自动创建或导入相应的 zpool。
卸载或分离区域时,将执行以下操作:
自动取消配置存储资源。
自动导出或销毁相应的 zpool。
必需的 storage 属性标识与该资源关联的存储对象 URI。
可使用以下设置在 zpool 资源范围内管理 storage 属性:
add storage URI string
remove storage URI string
name 属性是 zpool 资源的必需属性。该属性用在委托给区域的 zpool 的名称中。ZFS 文件系统的 name 组件不能包含正斜杠 (/).
为新建或导入的 zpool 指定的名称采用 zonename_name 形式。该名称是在非全局区域内可见的 zpool 名称。
引导区域时,将在其中自动设置并放置通过 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 Administration: Network Interfaces and Network Virtualization》中的第 20 章 "Using Link Protection in Virtualized Environments"中进行了介绍,可用在运行区域的系统上。此功能在全局区域中配置。
数据链路是 OSI 协议栈的第 2 层接口,在系统中表示为 STREAMS DLPI (v2) 接口。此类接口可以在 TCP/IP 等协议栈下检测到。数据链路也称为物理接口,例如,网络接口卡 (Network Interface Card, NIC)。数据链路是使用 zonecfg (1M) 配置的 physical 属性。physical 属性可以为 VNIC,具体请参见《Oracle Solaris Administration: Network Interfaces and Network Virtualization》中的第 III 部分, "Network Virtualization and Resource Management"。
数据链路示例有物理接口(如 e1000g0 和 bge1)、NIC(如 bge3)、集合(如 aggr1、aggr2)或有 VLAN 标记的接口(如 e1000g123000 和 bge234003)(分别作为 e1000g0 和 bge3 上的 VLAN 123 和 VLAN 234)。
有关使用基于 InfiniBand 的 IP (IP over InfiniBand, IPoIB) 的信息,请参见资源类型属性中关于 anet 的说明。
共享 IP 区域使用全局区域中的现有 IP 接口。区域必须有一个或多个专用 IP 地址。共享 IP 区域与全局区域共享 IP 层配置和状态。如果以下两个条件同时成立,则区域应该使用共享 IP 实例:
非全局区域使用全局区域使用的相同数据链路,而不管全局区域和非全局区域是否在同一子网中。
您不想使用专用 IP 区域提供的其他功能。
使用 zonecfg 命令的 net 资源为共享 IP 区域指定一个或多个 IP 地址。数据链路名称也必须在全局区域中配置。
在 zonecfg net 资源中,必须设置 address 和 physical 属性。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 区域中使用以下功能:
ipadm,用于设置 TCP/UDP/SCTP 和 IP/ARP 级别可调参数
IP 安全 (IP security, IPsec) 和 Internet 密钥交换 (Internet Key Exchange, IKE),可自动提供用于 IPsec 安全关联的验证加密材料
有两种配置专用 IP 区域的方式:
使用 zonecfg 实用程序的 anet 资源在引导区域时自动为区域创建临时 VNIC,然后在区域停止时删除它。
在全局区域中预先配置数据链路,然后使用 zonecfg 实用程序的 net 资源将其指定给专用 IP 区域。数据链路使用 net 资源的 physical 属性指定。physical 属性可以为 VNIC,具体请参见《Oracle Solaris Administration: Network Interfaces and Network Virtualization》中的第 III 部分, "Network Virtualization and Resource Management"。没有设置 net 资源的 address 属性。
缺省情况下,专用 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 非全局区域都支持可靠数据报套接字 (Reliable Datagram Socket, RDS) IPC 协议。RDSv3 驱动程序作为 SMF 服务 rds 启用。缺省情况下,安装后禁用此服务。通过区域管理员授予的相应授权,可以在给定非全局区域中启用该服务。在执行 zlogin 后,可以在要运行 rds 的每个区域中启用 rds。
示例 16-1 如何在非全局区域中启用 rds 服务
要在专用 IP 或共享 IP 区域中启用 RDSv3 服务,请执行 zlogin 并执行 svcadm enable 命令:
# svcadm enable rds
验证 rds 是否已启用:
# svcs rds STATE STIME FMRI online 22:50:53 svc:/system/rds:default
有关更多信息,请参见 svcadm(1M) 手册页。
在共享 IP 区域中,此区域中的应用程序(包括超级用户)不能发送带有源 IP 地址的包,只能发送通过 zonecfg 实用程序指定给该区域的包。此类型的区域不能发送和接收任意数据链路(第 2 层)包。
但是,对于专用 IP 区域,zonecfg 会将指定数据链路的一切权限都授予该区域。因此,在专用 IP 区域中,超级用户或具有所需权限配置文件的用户可以如同在全局区域中一样,在这些数据链路上发送欺骗性包。可以通过设置 allowed-address 属性来禁用 IP 地址欺骗。对于 anet 资源,可以通过设置 link-protection 属性来启用其他保护(例如,mac-nospoof 和 dhcp-nospoof)。
共享 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 数据集中创建附加数据集。
不应使用 zfs(1M) 手册页中描述的 zfs 命令创建、删除或重命名以区域的 rpool/ROOT 文件系统开始的分层结构中的文件系统。zfs 命令可用于设置 canmount、mountpoint、sharesmb、zoned、com.oracle. *:*、com.sun: * 和 org.opensolaris. *.*. 以外的属性。
通常,在区域中挂载的文件系统包括:
初始化虚拟平台时挂载的文件系统集合
在应用程序环境本身中挂载的文件系统集合
例如,这些集合可以包括以下文件系统:
具有 mountpoint(none 或 legacy 除外)且 canmount 属性值为 yes 的 ZFS 文件系统。
在区域的 /etc/vfstab 文件中指定的文件系统。
AutoFS 挂载和 AutoFS 触发的挂载。使用 sharectl(1M) 中介绍的 sharectl 设置 autofs 属性。
区域管理员明确执行的挂载
正在运行的区域内的文件系统挂载权限也可通过 zonecfg fs-allowed 属性进行定义。此属性不适用于通过使用 zonecfg add fs 或 add dataset 资源挂载到区域中的文件系统。缺省情况下,区域内只允许挂载区域的缺省委托数据集中的文件系统、hsfs 文件系统和网络文件系统(如 NFS)。
注意 - 将对在应用程序环境中执行的非缺省挂载设定特定限制。这些限制可防止区域管理员拒绝为系统的其余部分提供服务,或者对其他区域产生不良影响。 |
在区域中挂载特定的文件系统时存在安全限制。其他文件系统在区域中挂载时会显示出特殊行为。有关更多信息,请参见文件系统和非全局区域。
有关数据集的更多信息,请参见 datasets(5) 手册页。有关 BE 的更多信息,请参见《创建和管理 Oracle Solaris 11.1 引导环境》
不支持会隐藏区域系统映像中的任何文件、符号链接或目录的文件系统挂载方式,如 pkg(5) 手册页中所述。例如,如果安装的软件包都没有在 /usr/local 中提供内容,则允许在 /usr/local 下挂载文件系统。但是,如果有任何软件包(包括传统 SVR4 软件包)在以 /usr/local 开头的路径下提供了文件、目录或符号链接,则不支持在 /usr/local 下挂载文件系统。支持在 /mnt 下临时挂载文件系统。
由于文件系统在区域中的挂载顺序,如果 /export 来自区域的 rpool/export 数据集或其他委托数据集,则不能用 fs 资源在 /export/filesys 下挂载文件系统。
您可以为非全局区域设置 hostid 属性,该属性与全局区域的 hostid 属性不同。例如,如果机器迁移到其他系统上的区域,将执行此操作。区域内的现有应用程序可能取决于原始 hostid。有关更多信息,请参见资源类型和属性。
zonecfg 命令使用与规则匹配的系统来指定应在特定区域中出现的设备。与其中一个规则匹配的设备包括在区域的 /dev 文件系统中。有关更多信息,请参见如何配置区域。
可在非全局区域中配置可移除的回送文件 lofi 设备,其工作方式与 CD-ROM 设备类似。可以更改设备映射到的文件并创建以只读模式使用相同文件的多个 lofi 设备。该类型的 lofi 设备是使用带 -r 选项的 lofiadm 命令创建的。创建时不一定要指定文件名。在可移除 lofi 设备的生命周期内,可以将文件与空设备关联,或取消文件与非空设备的关联。一个文件可以同时与多个可移除 lofi 设备安全关联。可移除 lofi 设备是只读的。不能对已经映射到普通的读写 lofi 设备或可移除 lofi 设备的文件进行重新映射。潜在 lofi 设备的数量受 zone.max-lofi 资源控制的限制,可以在全局区域中使用 zonecfg(1M) 设置该资源控制。
可移除 lofi 设备在创建后是只读的。如果对可移除 lofi 设备执行任何写操作,lofi 驱动程序将返回错误。
lofiadm 命令还可用于列出可移除 lofi 设备。
示例 16-2 创建带关联文件的可移除 lofi 设备
# lofiadm -r /path/to/file /dev/lofi/1
示例 16-3 创建一个空的可移除 lofi 设备
# lofiadm -r /dev/lofi/2
示例 16-4 将文件插入可移除 lofi 设备
# lofiadm -r /path/to/file /dev/lofi/1 /dev/lofi/1
有关更多信息,请参见 lofiadm(1M)、zonecfg(1M) 和 lofi(7D) 手册页。另请参见区域范围的资源控制。
可通过 zonecfg 工具启用磁盘分区和使用 uscsi 命令。有关示例,请参见资源类型属性中的 device。有关 uscsi 命令的更多信息,请参见 uscsi(7I)。
仅 solaris 区域支持委托。
磁盘必须使用通过使用带 -D 选项的 prtconf 命令显示的 sd 目标。请参见 prtconf(1M)。
引导区域时,配置中包括安全特权的缺省集合。这些特权被视为安全特权,因为它们可以阻止区域中的特权进程影响系统中其他非全局区域或全局区域中的进程。您可使用 zonecfg 命令执行以下操作:
将特权添加至缺省特权集,需要了解此类更改可能允许一个区域中的进程通过控制全局资源来影响其他区域中的进程。
从缺省特权集中删除特权,需要了解此类更改可能会阻止某些进程正常运行(如果这些进程要求具有特定特权才能运行的话)。
注 - 目前,有些特权不能从区域的缺省特权集中删除,还有一些特权不能添加到缺省特权集中。
有关更多信息,请参见非全局区域中的特权、如何配置区域和 privileges(5)。
如果按第 13 章所述在系统中配置了资源池,则可在配置区域时使用 pool 属性将该区域与其中一个资源池相关联。
如果未配置资源池,还可使用 dedicated-cpu 资源来指定在某个非全局区域运行时将系统处理器的某个子集专用于该非全局区域。系统将动态创建一个临时池,以便在区域运行时使用。根据 zonecfg 的指定,池配置将在迁移期间进行传播。
注 - 使用通过 pool 属性设置的永久池的区域配置与通过 dedicated-cpu 资源配置的临时池不兼容。只能设置这两个属性中的其中一个。
全局管理员或具有相应授权的用户可以为区域设置区域范围的特权资源控制。区域范围的资源控制可限制区域内所有进程实体总的资源使用情况。
使用 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-processes。zone.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-ids、zone.max-sem-ids、zone.max-shm-ids 和 zone.max-shm-memory 资源控制可用于限制区域中的所有进程使用的 System V 资源。对区域中项目的 System V 资源的分配可使用这些资源控制的项目版本来进行控制。这些控制的全局属性名称是 max-msg-ids、max-sem-ids、max-shm-ids 和 max-shm-memory。
zone.max-swap 资源控制可限制区域中的用户进程地址空间映射和 tmpfs 挂载所占用的交换空间。prstat -Z 的输出将显示一个 SWAP 列。报告的交换是区域进程和 tmpfs 挂载所使用的总交换量。此值有助于监视每个区域预留的交换空间,可用于选择适当的 zone.max-swap 设置。
表 16-1 区域范围的资源控制
|
可以使用 prctl 命令为正运行的进程指定这些限制。如何使用 prctl 命令在全局区域中设置 FSS 份额中还提供了一个示例。通过 prctl 命令指定的限制不是持久的。在重新引导系统后,此限制将失效。
您可以使用 attr 资源类型为区域添加注释。有关更多信息,请参见如何配置区域。