Solaris 10 操作系统中的区域“附加时更新”功能和修补程序的应用Enda O'Connor,2009 年 6 月 简介从 Solaris 10 5/08 操作系统开始,系统管理员已能够分离和附加区域,即,从一个系统中分离某个区域,然后将该区域附加到另一个系统。最初,这项功能存在一些局限性,因为源系统和要附加非全局区域的目标系统必须在软件包版本、修补程序级别和体系结构方面具有相同的软件级别。也就是说,您无法将 sun4v 系统中的某个区域移至 sun4u 系统,或无法将早期 Solaris 发行版中的某个区域移至当前 Solaris 更新发行版。 在 Solaris 10 10/08 发行版中,通过“附加时更新”命令(即 本文将介绍该“附加时更新”功能,其中包括以下主题:
确定要更新软件包的标准在使用“附加时更新”功能时,要附加的区域会根据以下逻辑更新到与全局区域相同的软件级别,该逻辑可以确定更新哪些软件包:
一旦选择更新某个软件包,将会使用最初安装区域时对该软件包进行安装的过程,执行下列操作:
例如,如果更新 下面将举例说明上述第 3 项:如果软件包 A 具有 对于非全局区域使用的继承的软件包目录而言,该选择标准非常重要。完全根非全局区域没有继承的软件包目录。因此,与运行相同软件级别的稀疏区域相比,它需要更新的软件包更少。 此外,还值得注意的是,全局区域中任何具有 “附加时更新”与常规升级之间的区别在继续下面的部分之前,最好应了解一下使用任何支持的升级机制来执行标准升级与使用“附加时更新”功能之间的区别。执行标准升级时,所有本机 Solaris 非全局区域都会升级,即,它们会收到升级期间提供的任何新软件包和功能;过时软件包会被删除;并且就更新发行版中提供的修补程序和软件包版本而言,非全局区域和全局区域将处于相同的软件级别。 也就是说,更新映像会应用到全局区域和所有非全局区域。升级过程中,不执行任何与全局区域和非全局区域相关的依赖性检查,并且映像中包含的所有软件包会置于所有区域(包括全局区域)中。 与此不同,如果您使用“附加时更新”功能,将会获取全局区域和要更新的非全局区域的软件清单。然后,按照前面所述的三项标准, 因此,如果您从系统中分离出所有非全局区域,然后使用近期更新发行版对全局区域执行标准升级,之后您对非全局区域使用“附加时更新”功能,这样所获得的结果将不同于您对升级时附加有这些非全局区域的整个系统执行标准升级的情况。更新中提供的任何新软件包将不会传播到附加的非全局区域,除非至少满足以下条件之一:
任何过时软件包将不会删除,除非它们满足 “附加时更新”功能的主要用途是让用户以最少的交互操作,将一个系统中的非全局区域迁移到另一个系统。在 Solaris 10 10/08 发行版之前,用户必须确保要附加的非全局区域与将附加非全局区域的系统具有完全相同的系统软件级别。使用区域“附加时更新”功能,系统管理员现在可以附加具有较低修补程序级别的区域,并且该区域会自动更新到与要附加到的全局区域相同的修补程序级别。现在,用户还可以将 sun4v 系统中的非全局区域迁移到 sun4u 系统,反之亦然。 “附加时更新”功能的一个主要用途是允许快速、简便地在不同系统之间迁移 Solaris 容器。(容器是指非全局区域和资源控制的组合。)下面将举例说明该用途:如果 Sun Fire T2000 服务器运行了五个容器,每个容器都运行特定的数据库,其中一个数据库的大小随时间而增大以致于超出了其预期规模,这样便可能会使系统资源耗尽,从而导致性能问题。如果不能将受影响的容器迁移到具有更高性能的系统上,最终用户必须把该容器及其软件和软件配置复制到另一系统上,然后最终实现从旧容器到新容器的转换。但是,通过区域迁移,此任务便可大大简化,因为受影响的容器现在可以与其数据库、配置和关联的工作负荷一起移至新系统,从而为该容器以及旧系统中的其余四个容器均增加了可用资源。 修补程序的应用和区域“附加时更新”使用“附加时更新”功能可将非全局区域更新到与全局区域相同的修补程序级别,在使用该功能的同时也发现了许多有趣的事情。下面便是一个示例:在应用修补程序包之前,系统管理员可以分离所有非全局区域,然后将修补程序包应用到全局区域,应用修补程序包并重新引导系统之后,使用区域 执行此操作的主要原因是附加区域时对其更新要比连续修补区域快得多。此外,也可以运行多个 下面的示例(尽管该示例有些勉强)可能有助于解释这种差异是如何产生的。如果非全局区域中有一个是完全根区域,并且所应用的某个修补程序是修补 Mozilla Firefox(即修补程序 125539-05),则全局区域将应用 125539-05,但区域“附加时更新”功能将不更新该非全局区域中的 如果您改为在附加有该区域的情况下使用 此外,在完全根非全局区域中,除非安装了 这是因为,119254/119255 修补 因此, 通常情况下, 所有软件包在更新时将首先从非全局区域中删除,然后使用最初安装该区域时所用的相同功能从全局区域重新安装这些软件包。(由于 CR 6818813,计划在以后的更新发行版中更改此功能。在修复 CR 6818813 之后,如果选择更新的任何软件包版本与全局区域中安装的软件包版本匹配,将不会删除该软件包,而只是替换非全局区域中的软件包。这也会提升“附加时更新”功能的性能。) 因此,“附加时更新”功能也会用到最初安装区域时所用的功能。对于更新的软件包,其所有修补软件包 如果最终用户只是使用 完全根区域与稀疏根区域之间的区别如果使用“附加时更新”功能分别对某个稀疏根区域和某个完全根区域(这两个区域同时在同一系统上置备,因此它们具有相同的软件包和修补程序级别)进行更新并比较其结果,则会发现两个区域中选择更新的软件包数量有所不同。因此,对于创建于 Solaris 10 5/08 操作系统中并更新到 Solaris 10 10/08 级别的稀疏根区域,会选择更新 505 个软件包;而对于完全根区域,则会选择更新 311 个软件包。 鉴于此,在考虑使用区域“附加时更新”功能加快修补过程之前,您需要了解下列两种操作之间的差异:一种是使用“附加时更新”功能将非全局区域更新到与全局区域相同的修补程序级别,另一种是在附加了所有非全局区域并且可对这些区域应用修补程序的情况下仅使用 处理存在的临时诊断援助 (Interim Diagnostic Relief, IDR) 修补程序和特殊修补程序如果要附加的非全局区域中安装了 Sun 提供的 IDR 修补程序,则要么必须将完全相同的 IDR 应用到目标全局区域,要么必须在分离源非全局区域之前从该区域中删除 IDR。(Solaris 10 5/09 操作系统通过向zoneadm attach 命令提供 -b 参数,解决了这一问题,使用该参数可在附加非全局区域时删除 IDR。)
此外,对于存在的所谓“特殊修补程序”(仅在构建 Solaris 10 更新映像时使用且从未发行过的修补程序),也必须进行适当处理。当前发行的修补程序 140197 中的 CR 6743776 对特殊修补程序进行了说明。Solaris 10 5/09 操作系统的修补程序 139555-08 所提供的 CR 6791625 介绍了处理这些特殊修补程序的永久解决方案。 运行“附加时更新”的步骤1. 在源系统上,运行 2. 将 zonepath 移至目标系统。 3. 如果目标全局区域未处于内核修补程序级别 139555(Solaris 5/09 或更高更新级别),则运行以下命令,以强制重新生成源非全局区域软件包。相关 CR 为 6685069。 #rm <zonepath>/SUNWdetached.xml 4. 使用 5. 最后,运行以下命令: #zoneadm -z <zonename> attach -u 有关迁移区域所需执行步骤的完整描述,请参见 How to Migrate a Non-Global Zone(如何迁移非全局区域)。 Solaris 10 5/09 中的错误报告功能也进行了改进。在以前的发行版中,如果认为某个软件包需要降级(即,要附加的非全局区域中的软件包版本高于其附加到的源全局区域中的软件包版本),则会逐个报告每个实例。也就是说, 更多信息下面提供了一些其他资源:
Comments (latest comments first)Discuss and comment on this resource in the BigAdmin Wiki
Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License. |
BigAdmin SubscriptionsBigAdmin Areas
BigAdmin Sun Center
BigAdmin Topics | ||||