从 Solaris 10 8/07 发行版开始,可以使用标记区域。后续更新版本中添加的功能会注明相应的发行版本。
Solaris 操作系统中的标记区域功能是 Solaris Zones 的简单扩展。本章讨论标记区域概念和实现 Linux 标记区域功能的 lx 标记。Linux 标记区域也称为 Linux 应用程序的 Solaris Containers。
虽然可以在启用标签的 Trusted Solaris 系统上配置和安装标记区域,但不能在此系统配置中引导标记区域。
在 Solaris 操作系统中支持其他标记。
在运行 Solaris 10 8/07 操作系统或更高 Solaris 10 发行版的 SPARC 计算机上支持以下两个标记:
solaris8 标记,即《系统管理指南:Solaris 8 容器》中所述的 Solaris 8 Containers
solaris9 标记,即《系统管理指南:Solaris 9 容器》中所述的 Solaris 9 Containers
Solaris 10 发行版还支持 cluster 标记,该标记在 docs.sun.com 上的 Sun Cluster 3.2 1/09 Software Collection for Solaris OS 中进行了介绍。
有关在 Solaris 系统上使用区域的一般信息,请参见第 16 章。
您应熟悉以下区域和资源管理概念:
全局区域和非全局区域,在区域如何工作中介绍。
区域状态模型,在非全局区域状态模型中介绍。
区域隔离特征,在非全局区域特征中介绍。
权限,在非全局区域中的权限中介绍。
联网,在共享 IP 非全局区域中的联网中介绍。
Solaris Container 概念, 即将资源管理功能(如资源池)用于区域。区域以及资源管理功能的使用和交互在将资源管理功能用于非全局区域、设置区域范围的资源控制、第 27 章以及本手册第 1 部分“资源管理”中介绍每个资源管理功能的各章中介绍。例如,资源池在第 12 章和第 13 章中介绍。
公平份额调度器 (fair share scheduler, FSS),一个允许您基于份额来分配 CPU 时间的调度类,在第 8 章和第 9 章中介绍。
资源上限设置守护进程 (rcapd),可以用来从全局区域中控制标记区域驻留集大小 (resident set size, RSS) 的使用。zonecfg capped-memory 资源的属性可为区域设置 max-rss。此值由在全局区域内运行的 rcapd 执行。有关更多信息,请参见第 10 章、第 11 章和 rcapd(1M) 手册页。
词汇表为区域和资源管理功能涉及的术语提供定义。
在系统上使用标记区域所需的任何其他信息均在指南的本部分中提供。
本指南的下列章节不适用于标记区域:
标记区域 (BrandZ) 框架对本手册第 2 部分, Zones中介绍的 Solaris Zones 基础结构进行了扩展,从而包括标记的创建。术语标记可以指各种操作环境。通过 BrandZ 可以创建包含用于运行应用程序的非本机操作环境的非全局区域。标记类型用来确定安装和引导区域时执行的脚本。此外,区域的标记还可用来在应用程序启动时确定正确的应用程序类型。所有标记管理都通过扩展当前区域结构来执行。
标记能够提供简单或复杂环境。例如,简单环境可以用相应的 GNU 等效项来替换标准 Solaris 实用程序。复杂环境可以提供支持执行 Linux 应用程序的完整 Linux 用户空间。
每个区域都配有一个关联标记。缺省为 native 标记 Solaris。一个标记区域只支持一个非本地二进制命令标记,这意味着一个标记区域只提供一种操作环境。
BrandZ 通过以下方式来扩展区域工具:
配置区域时,使用 zonecfg 命令来设置区域的标记类型。
使用 zoneadm 命令来报告区域的标记类型并管理区域。
可在已配置状态下更改区域标记。一旦安装标记区域后,便不能更改或删除标记。
标记区域在内核中提供了一组插入点,这些插入点只应用于在标记区域中执行的进程。
这些点位于 syscall 路径、进程装入路径和线程创建路径之类的路径中。
在其中每个点处,标记可以选择补充或替换标准 Solaris 行为。
标记还能为 librtld_db 提供插件库。通过插件库,Solaris 工具(如 mdb(1) 中介绍的调试器和 dtrace(1M) 中介绍的 DTrace)可以访问在标记区域内运行的进程的符号信息。
每个区域支持的设备都在与该标记相关的手册页和其他文档中进行了介绍。设备支持由相应标记定义。标记可以选择不允许添加任何不受支持或无法识别的设备。
标记区域中可用的权限由相应标记定义。有关权限的更多信息,请参见非全局区域中的权限和lx 标记区域中的可配置权限。
lx 标记使用标记区域框架,使得 Linux 二进制应用程序无需修改,便可在具有 Solaris 操作系统内核的计算机上运行。
计算机的处理器类型必须为以下受支持的 i686 处理器类型之一:
Intel
Pentium Pro
Pentium II
Pentium III
Celeron
Xeon
Pentium 4
Pentium M
Pentium D
Pentium Extreme Edition
Core
Core 2
AMD
Opteron
Athlon XP
Athlon 64
Athlon 64 X2
Athlon FX
Duron
Sempron
Turion 64
Turion 64 X2
lx 标记包括在非全局区域中安装 CentOS 3.x 或 Red Hat Enterprise Linux 3.x 分发版所必需的工具。每种分发的3.5 到 3.8 版本均受支持。该标记支持在以 32 位或 64 位模式运行 Solaris 系统的 x86 和 x64 计算机上执行 32 位 Linux 应用程序。
lx 标记模仿由 Linux 2.4.21 内核提供的系统调用接口,Red Hat 在 RHEL 3.x 分发中对这些接口进行了修改。此内核提供由 Red Hat 发行的 glibc 2.3.2版本所使用的系统调用接口。
此外,lx 标记还部分模仿 Linux /dev 和 /proc 接口。
请注意,如果向 lx 标记区域中添加软件包,必须保留支持的配置。有关更多信息,请参见关于维护支持的配置。
Solaris 系统对于可在 lx 标记区域中运行的 Linux 应用程序数没有任何限制。必须提供足够的内存。另请参见系统和空间要求。
无论基础内核如何,都只能运行 32 位 Linux 应用程序。
lx 区域只支持用户级别的 Linux 应用程序。在 lx 区域中不能使用 Linux 设备驱动程序、Linux 内核模块或 Linux 文件系统。
有关已在 lx 标记下成功运行的一些应用程序的列表,请参见 http://hub.opensolaris.org/bin/view/Community+Group+brandz/applications。有关安装应用程序的示例,请参见如何在 lx 标记区域中安装应用程序。
不能在 lx 区域内运行 Solaris 应用程序。但通过 lx 区域可以使用 Solaris 系统来开发、测试和部署 Linux 应用程序。例如,可将一个 Linux 应用程序置于 lx 区域中并使用从全局区域运行的 Solaris工具对其进行分析。然后,可以在本地 Linux 系统上改进并部署优化后的应用程序。
Solaris 调试工具(如 DTrace 和 mdb)可以应用于在区域内执行的 Linux 进程,但工具本身必须在全局区域中运行。生成的任何核心转储文件都以 Solaris 格式生成,并且只能用 Solaris 工具进行调试。
Dtrace 由 DTrace lxsyscall 动态跟踪提供器为 Linux 应用程序启用。该提供器的行为与 DTrace syscall 提供器的行为相似。lxsyscall 提供器可提供在线程进入 Linux 系统调用入口点或从此处返回时触发的探测。
有关调试选项的更多信息,请参见《Solaris 动态跟踪指南》以及 dtrace(1M) 和 mdb(1) 手册页。《Solaris 动态跟踪指南》介绍了 DTrace 功能可以使用的公共记录接口。有关 syscall 提供器的文档也可用于 lxsyscall 提供器。
因为 NFS 依赖于区域特定的名称服务,所以不能访问在当前区域外挂载的任何 NFS 文件系统。因此,不能从全局区域中调试基于 NFS 的 Linux 进程。
命令参考 |
说明 |
---|---|
登录到非全局区域 |
|
管理系统上的区域 |
|
用于设置区域配置 |
|
用于在区域 ID 和区域名称之间进行映射 |
|
brands(5) |
提供标记区域功能的说明 |
lx(5) |
提供 Linux 标记区域的说明 |
提供区域功能的说明 |
|
lx_systrace(7D) |
DTrace Linux 系统调用跟踪提供器 |
区域控制台设备驱动程序 |
zoneadmd 守护进程是管理区域虚拟平台的主要进程。zoneadmd 守护进程的手册页为 zoneadmd(1M)。此守护进程并没有构成编程接口。
表 27–5 介绍了可在全局区域中用来显示所有非全局区域(包括标记区域)的相关信息的命令。表 27–4 介绍了用于资源上限设置守护进程的命令。
下表简要介绍了首次在系统上设置 lx 区域所涉及的任务。
任务 |
说明 |
参考 |
---|---|---|
确定要在区域中运行的每个 32 位 Linux 应用程序。 |
评估应用程序对系统的要求。 |
如有必要,请参阅您的业务目标和系统文档。 |
确定要配置的区域数。 |
评估:
| |
确定是否将资源池与区域结合使用,以便创建容器。 |
如果要使用资源池,请在配置区域前先配置资源池。 请注意,通过使用 zonecfg 属性可以向区域中快速添加区域范围的资源控制和池功能。 |
请参见如何配置 lx 标记区域和第 13 章。 |
执行预配置任务。 |
确定每个区域的区域名称和区域路径。如果需要网络连接,请获取 IP 地址。确定用于区域的调度类。确定在标准缺省权限集不充足的情况下,应为区域内的进程设置的权限集。 |
有关区域名称、区域路径、IP 地址和调度类的信息,请参见lx 标记区域配置组件。有关缺省权限和可在非全局区域中配置的权限的列表,请参见非全局区域中的权限。 有关资源池关联的信息,请参见区域如何工作和如何配置 lx 标记区域。 |
开发配置。 |
配置非全局区域。 |
请参见配置、检验并提交区域和 zonecfg(1M) 手册页。 |
以全局管理员身份检验和安装已配置的区域。 |
必须在引导区域之前检验和安装区域。在安装 Linux 标记区域前,必须获取 Linux 分发。 | |
以全局管理员身份引导非全局区域。 |
引导每个区域以将区域置于运行状态。 |
请参见第 35 章。 |
为生产使用准备新区域。 |
使用标准 Linux 系统管理工具和方法在区域内创建用户帐户、添加其他软件并自定义区域配置。 |
请参阅用于设置新安装的计算机和安装应用程序的文档。本指南包含适用于已安装区域的系统的特殊注意事项。 |