跳过导航链接 | |
退出打印视图 | |
![]() |
Oracle Solaris 管理:Oracle Solaris Zones、Oracle Solaris 10 Zones 和资源管理 Oracle Solaris 11 Information Library (简体中文) |
共享 IP 非全局区域和专用 IP 非全局区域之间的安全差异
19. 安装、引导、关闭、停止、卸载和克隆非全局区域(任务)
23. 迁移 Oracle Solaris 系统和迁移非全局区域(任务)
24. 关于安装了区域的 Oracle Solaris 11 系统上的自动安装和软件包
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
区域配置数据由两种类型的实体组成:资源和属性。每个资源都有一种类型,并且每个资源还可以有一个包含一个或多个属性的集合。属性具有名称和值。属性集取决于资源类型。
唯一必需的属性是 zonename 和 zonepath。
区域的名称。以下规则适用于区域名称:
每个区域必须具有唯一的名称。
区域名称区分大小写。
区域名称必须以字母数字字符开头。
名称可以包含字母数字字符、下划线 (_)、连字符 (-) 和句点 (.)。
名称不能超过 63 个字符。
名称 global 和所有以 SYS 开头的名称均保留,不能使用。
zonepath 属性指定将在其下安装区域的路径。每个区域都具有一个与全局区域根目录相对的根目录路径。安装时,需要全局区域目录以提供限定的可见性。区域路径必须由 root 拥有,并且模式为 700。如果区域路径不存在,将在安装期间自动创建该路径。如果权限不正确,将自动进行更正。
非全局区域的根路径低一个级别。区域的根目录与全局区域中的根目录 (/) 具有相同的所有权和权限。区域目录必须由 root 所有,并且模式为 755。此分层结构可防止全局区域中的非特权用户遍历非全局区域的文件系统。
区域必须位于 ZFS 数据集中。在安装或连接区域时,将自动创建 ZFS 数据集。如果无法创建 ZFS 数据集,也无法安装或附加区域。
|
有关更多信息,请参见遍历文件系统。
如果此属性设置为 true,则引导全局区域时会自动引导该区域。缺省设置为 false。请注意,如果禁用了区域服务 svc:/system/zones:default,则无论如何设置此属性,区域都不会自动引导。您可以使用 svcadm(1M) 手册页中所述的 svcadm 命令来启用区域服务:
global# svcadm enable zones
有关在 pkg 更新期间进行此设置的信息,请参见区域包管理概述。
此属性用于为区域设置引导参数。除非被 reboot、zoneadm boot 或 zoneadm reboot 命令覆盖,否则将应用该引导参数。请参见区域引导参数。
此属性用于将区域与系统中的资源池相关联。多个区域可以共享一个池的资源。另请参见dedicated-cpu 资源。
此属性用于指定缺省特权集之外的特权掩码。请参见非全局区域中的特权。
通过指定特权名称可添加特权,特权名称中可包含或不包含前导 priv_。在特权名称前添加破折号 (-) 或感叹号 (!) 可以排除特权。特权值以逗号分隔,并放在引号 (") 内。
如 priv_str_to_set(3C) 中所述,特殊特权集 none、all 和 basic 对其标准定义进行了扩展。由于区域配置在全局区域内进行,因此不能使用特殊特权集 zone。由于常见用法是通过添加或删除某些特权来更改缺省特权集,因此特殊特权集 default 将映射为缺省特权集。当 default 出现在 limitpriv 属性开头时,它将扩展为缺省权限集。
以下条目增加了使用 DTrace 程序的功能,该程序只要求区域中具有 dtrace_proc 和 dtrace_user 特权:
global# zonecfg -z userzone zonecfg:userzone> set limitpriv="default,dtrace_proc,dtrace_user"
如果区域的特权集包含不允许的特权、缺少必需特权或包含未知特权,则检验、准备或引导该区域的尝试都将失败,并将显示错误消息。
此属性可为区域设置调度类。有关其他信息和提示,请参见调度类。
必须为所有非全局区域设置该属性。请参见专用 IP 非全局区域、共享 IP 非全局区域和如何配置区域。
此资源可在某个区域运行时使系统处理器的某个子集专用于该区域。dedicated-cpu 资源可为 ncpus 以及 importance(可选的)提供限制。有关更多信息,请参见dedicated-cpu 资源。
此资源对区域在运行时可占用的 CPU 资源量设置限制。capped-cpu 资源可为 ncpus 提供限制。有关更多信息,请参见capped-cpu 资源。
此资源可对为区域设置内存上限时使用的属性分组。capped-memory 资源可为 physical、swap 和 locked 内存提供限制。至少必须指定其中一个属性。要使用 capped-memory 资源,必须在全局区域中安装 service/resource-cap 软件包。
net 资源可将全局区域中的现有网络接口指定给非全局区域。网络接口资源是接口名称。当区域从已安装状态转换为就绪状态时,每个区域都可以具有可以设置的网络接口。
添加 ZFS 数据集可以将存储管理委托给非全局区域。如果委托数据集为文件系统,区域管理员可在该数据集内创建和销毁文件系统以及修改数据集的属性。区域管理员可创建快照、子文件系统和卷以及其后代的克隆。如果委托数据集为卷,则区域管理员可设置属性和创建快照。区域管理员无法影响尚未添加到区域的数据集,也无法超过对指定给区域的数据集设置的任何顶层配额。将数据集委托给非全局区域后,将自动设置 zoned 属性。zoned 文件系统不能挂载在全局区域中,因为区域管理员可能需要将挂载点设置为不可接受的值。
可以按以下方式将 ZFS 数据集添加到区域中。
作为一个 lofs 挂载文件系统(在目标单独与全局区域共享空间时)
作为一个委托数据集
请参见《Oracle Solaris 管理:ZFS 文件系统》中的第 10 章 "Oracle Solaris ZFS 高级主题"和文件系统和非全局区域。
有关数据集问题的信息,另请参见第 28 章。
当区域从已安装状态转换为就绪状态时,每个区域都可以拥有已挂载的各种文件系统。文件系统资源指定文件系统挂载点的路径。有关在区域中使用文件系统的更多信息,请参见文件系统和非全局区域。
注 - 要在非全局区域中通过 fs 资源使用 UFS 文件系统,必须在安装后或通过 AI 清单脚本将 system/file-system/ufs 软件包安装到区域中。
不能使用 quota(1M) 中所述的 quota 命令来检索通过 fs 资源添加的 UFS 文件系统的配额信息。
设置该属性后,区域管理员便能够挂载该类型的任何文件系统(不论是区域管理员创建的文件系统,还是使用 NFS 导入的文件系统),并可以管理该文件系统。正在运行的区域内的文件系统挂载权限也受 fs-allowed 属性限制。缺省情况下,区域内仅允许挂载 hsfs 文件系统和网络文件系统(如 NFS)。
该属性还可用于块设备或委托给区域的 ZVOL 设备。
fs-allowed 属性接受可以在区域中挂载的其他文件系统的逗号分隔列表,例如,ufs,pcfs。
zonecfg:my-zone> set fs-allowed=ufs,pcfs
该属性不会影响全局区域通过 add fs 或 add dataset 属性管理的区域挂载。
有关安全注意事项,请参见文件系统和非全局区域和非全局区域中的设备使用。
设备资源是与设备匹配的说明符。当区域从已安装状态转换为就绪状态时,每个区域都具有应配置的设备。
注 - 要在非全局区域中通过 device 资源使用 UFS 文件系统,必须在安装后或通过 AI 清单脚本将 system/file-system/ufs 软件包安装到区域中。
rctl 资源用于区域范围的资源控制。当区域从已安装状态转换为就绪状态时,将启用这些控制。
有关更多信息,请参见设置区域范围的资源控制。
可以使用 hostid 属性来设置不同于全局区域主机 ID 的主机 ID。
此通用属性可用于用户注释或其他子系统。attr 的 name 属性必须以字母数字字符开头。name 属性可以包含字母数字字符、连字符 (-) 和句点 (.)。以 zone. 开头的属性名称将保留,以供系统使用。
针对给定区域定义该用户的用户名和授权。
zonecfg:my-zone> add admin zonecfg:my-zone:admin> set user=zadmin zonecfg:my-zone:admin> set auths=login,manage zonecfg:my-zone:admin> end
auths 属性可以采用以下值:
login (solaris.zone.login)
manage (solaris.zone.manage)
clone (solaris.zone.clonefrom)
请注意,不能通过这些 auths 创建区域。该功能包含在区域安全性配置文件中。
ncpus、importance
指定 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
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
physical、swap、locked
为区域 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
要使用 capped-memory 资源,必须在全局区域中安装 resource-cap 软件包。
dir、special、raw、type、options
fs 资源参数提供的值可确定如何以及在何处挂载文件系统。fs 参数定义如下:
为文件系统指定挂载点
指定要从全局区域挂载的特殊块设备名称或目录
指定在挂载文件系统之前运行 fsck 所在的原始设备(不适用于 ZFS)
指定文件系统类型
指定挂载选项,这些选项类似于使用 mount 命令找到的挂载选项
以下示例中的行指定全局区域中名为 pool1/fs1 的数据集在所配置的区域中被挂载为 /shared/fs1。所使用的文件系统类型为 ZFS。
zonecfg:my-zone> add fs zonecfg:my-zone:fs> set dir=/shared/fs1 zonecfg:my-zone:fs> set special=pool1/fs1 zonecfg:my-zone:fs> set type=zfs zonecfg:my-zone:fs> end
有关参数的更多信息,请参见-o nosuid 选项、安全限制和文件系统行为、fsck(1M) 和 mount(1M) 手册页。另请注意,有关专用于特定文件系统的挂载选项的信息可以在 1M 手册页部分中找到。这些手册页名称的格式为 mount_filesystem。
name
以下示例的几行代码指定数据集 sales 将在非全局区域中可见并在该区域中进行挂载,但在全局区域中不再可见。
zonecfg:my-zone> add dataset zonecfg:my-zone> set name=tank/sales zonecfg:my-zone> end
委托数据集可以具有一个下例中所示的非缺省别名。请注意,数据集别名不能含有正斜杠 (/)。
zonecfg:my-zone> add dataset zonecfg:my-zone:dataset> set name=tank/sales zonecfg:my-zone:dataset> set alias=data zonecfg:my-zone:dataset> end
要恢复缺省别名,请使用 clear alias。
zonecfg:my-zone> clear alias
linkname、lower-link、allowed-address、configure-allowed-address、defrouter、mac-address、mac-slot、mac-prefix、mtu、maxbw、priority、vlan-id、rxfanout、rxrings、txrings、link-protection、allowed-dhcp-cids、bandwidth-limit
anet 资源会在区域引导时自动创建 VNIC 接口,并在区域停止时删除 VNIC。资源属性通过 zonecfg 命令进行管理。有关可用属性的完整信息,请参见 zonecfg(1M) 手册页。
为要创建的链路指定底层链路。如果设置为 auto,每次区域引导时,zoneadmd 守护进程都会自动选择用来创建 VNIC 的链路。
为自动创建的 VNIC 指定名称。
根据指定值或关键字设置 VNIC 的 MAC 地址。如果该值不是关键字,则将其解释为单点传送 MAC 地址。有关支持的关键字,请参见 zonecfg(1M) 手册页。如果选择随机 MAC 地址,则区域引导、区域分离和附加操作将保留生成的地址。
为专用 IP 区域配置 IP 地址,同时限制专用 IP 区域可以使用的可配置 IP 地址集。要指定多个地址,请使用逗号分隔的 IP 地址列表。
当非全局区域和全局区域驻留在单独的网络上时,可使用 defrouter 属性来设置缺省路由。
设置了 defrouter 属性的任何区域必须位于没有为全局区域配置的子网上。
zonecfg 命令使用 SYSdefault 模板创建区域时,将在区域配置中自动包括具有以下属性的 anet 资源。将在物理以太网链路上自动创建 linkname,该名称将设置为第一个可用名称,形式为 net N, net0。要更改这些缺省值,请使用 zonecfg 命令。
缺省值通过物理以太网链路(如 nxge0)创建自动 VNIC,并向 VNIC 指定出厂 MAC 地址。可选的 lower-link 属性设置为要创建的自动 VNIC 的底层链路 (nxge0)。可以使用 zonecfg 命令指定链路名称、底层物理链路、MAC 地址、带宽限制等 VNIC 属性以及其他 VNIC 属性。请注意,还必须指定 ip-type=exclusive。
zonecfg:my-zone> set ip-type=exclusive zonecfg:my-zone:anet> add anet zonecfg:my-zone:anet> set linkname=net0 zonecfg:my-zone:anet> set lower-link=auto zonecfg:my-zone:anet> set mac-address=random zonecfg:my-zone:anet> set link-protection=mac-nospoof zonecfg:my-zone:anet> end
有关属性的更多信息,请参见 zonecfg(1M) 手册页。有关链路属性的更多信息,请参见 dladm(1M) 手册页。
address、allowed-addressphysical、defrouter
注 - 对于共享 IP 区域,必须指定 IP 地址和物理设备这两项。或者设置缺省路由器。
对于专用 IP 区域,只需指定物理接口。
allowed-address 属性可以限制专用 IP 区域可以使用的可配置 IP 地址集。
当非全局区域和全局区域驻留在单独的网络上时,可使用 defrouter 属性来设置缺省路由。
设置了 defrouter 属性的任何区域必须位于没有为全局区域配置的子网上。
来自具有缺省路由器的区域的通信将在回到目标区域之前先进入路由器中。
当共享 IP 区域位于不同的子网上时,请不要在全局区域中配置数据链路。
在以下共享 IP 区域示例中,物理接口 nge0 被添加到 IP 地址为 192.168.0.1 的区域中。要列出系统上的网络接口,请键入:
global# ipadm show-if -po ifname,class,active,persistent lo0:loopback:yes:46-- nge0:ip:yes:----
除回送行以外的每一行输出将包含一个网络接口的名称。说明中包含 loopback 的行不适用于卡。46 持久性标志表示该接口已在全局区域中永久配置。yes 活动值表示当前已配置接口,ip 类值表示 nge0 是一个非回送接口。区域的缺省路由设置为 10.0.0.1。defrouter 属性的设置为可选的。请注意,ip-type=shared 为必需项。
zonecfg:my-zone> set ip-type=shared zonecfg:my-zone> add net zonecfg:my-zone:net> set physical=nge0 zonecfg:my-zone:net> set address=192.168.0.1 zonecfg:my-zone:net> set defrouter=10.0.0.1 zonecfg:my-zone:net> end
在以下专用 IP 区域的示例中,bge32001 链路用于物理接口,该接口是 bge1 上的 VLAN。要确定哪些数据链路可用,请使用命令 dladm show-link。allowed-address 属性可对区域可以使用的 IP 地址加以限制。defrouter 属性用于设置缺省路由。请注意,还必须指定 ip-type=exclusive。
zonecfg:my-zone> set ip-type=exclusive zonecfg:my-zone> add net zonecfg:myzone:net> set allowed-address=11.1.1.32/24 zonecfg:my-zone:net> set physical=bge32001 zonecfg:myzone:net> set defrouter=11.1.1.1 zonecfg:my-zone:net> end
在 add net 步骤中只会指定物理设备类型。physical 属性可以为 VNIC,具体请参见《Oracle Solaris 管理:网络接口和网络虚拟化》中的第 III 部分, "网络虚拟化和资源管理"。
注 - Oracle Solaris 操作系统支持所有以太网类型的接口,并且可以使用 dladm 命令来管理其数据链路。
match、allow-partition、allow-raw-io
要匹配的设备名称可以是匹配模式或绝对路径。allow-partition 和 allow-raw-io 都可以设置为 true 或 false。缺省值是 /。allow-partition 可执行分区。allow-raw-io 可以执行 uscsi。有关这些资源的更多信息,请参见 zonecfg(1M)。
在以下示例中,区域配置中包括对磁盘设备的 uscsi 操作。
zonecfg:my-zone> add device zonecfg:my-zone:device> set match=/dev/*dsk/cXtYdZ* zonecfg:my-zone:device> set set allow-raw-io=true zonecfg:my-zone:device> end
name、value
以下是可用的区域范围的资源控制。
zone.cpu-cap
zone.cpu-shares(首选:cpu-shares )
zone.max-locked-memory
zone.max-lofi
zone.max-lwps(首选: max-lwps)
zone.max-msg-ids(首选: max-msg-ids)
zone.max-processes(首选:max-processes)
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 资源类型由三个名称/值对组成。名称分别是 priv、limit 和 action。每个名称都有一个简单值。
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 章和在非全局区域中使用的资源控制。
name、type、value
在以下示例中,添加了有关区域的注释。
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 子命令在标准输出中列显区域配置。通过可以在命令文件中使用的格式保存配置。