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

区域配置数据

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

资源和属性类型

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

区域名称

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

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

  • 区域名称区分大小写。

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

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

  • 名称不能超过 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 子命令在标准输出中列显区域配置。通过可以在命令文件中使用的格式保存配置。