有关每个服务的信息都存储在服务配置系统信息库中,该系统信息库也称为 SMF 数据库。服务配置系统信息库存储系统上每个服务实例的当前状态以及每个服务和服务实例的属性等信息。
系统信息库用于存储服务的持久性配置信息以及 SMF 运行时数据。
持久性配置信息根据数据的来源存储在不同层中。请参见系统信息库层。
运行时数据(或者非持久性配置信息)在重新引导后不再有效,而且系统信息库不会存储非持久性数据的层信息。非持久性数据通常保存活动的程序状态。
系统信息库还存储服务模板数据,例如属性的类型、值约束和说明。模板数据定义在服务清单中:有关模板数据的更多信息,请参见 smf_template (5) 手册页。
只能使用 SMF 界面对服务配置系统信息库进行处理和查询。使用 svcs、svcprop、svcadm 和 svccfg 命令或者 libscf(3LIB) 手册页中列出的服务配置工具库函数。您可以在指定的层和快照中读取和写入属性值以及显示这些属性值。有关层的信息,请参见系统信息库层。有关快照的信息,请参见系统信息库快照。您可以仅显示选定服务实例或父服务的属性,也可以显示属性的复合视图。在复合视图中,同时显示对父服务设置的属性和对服务实例设置的属性;显示的值是对服务实例设置的值。
服务包是包含服务配置系统信息库中存储的服务或服务实例信息的 XML 文件。服务包提供的信息存储在服务配置系统信息库中,并且可以从系统信息库中导出。标准位置中的服务包在系统引导期间导入至系统信息库中。
两种类型的服务包分别为清单和配置文件。
清单包含与一组特定的服务或服务实例关联的完整属性集。
配置文件通常提供扩充或覆盖清单所提供信息的服务或服务实例定制信息。定制信息的示例包括附加属性和更改的属性值。
清单的标准位置为 /lib/svc/manifest。配置文件的标准位置为 /etc/svc/profile。
当系统引导或清单导入服务重新启动时,系统会导入清单和应用配置文件(如果它们是新的或更改过的清单和配置文件)。提供服务包的 IPS 软件包可以指定清单导入服务应该在安装软件包时重新启动。
本地定制信息可以通过 /etc/svc/profile/site 目录中带有 .xml 后缀的配置文件提供。如果多个清单或配置文件为同一服务或实例在同一系统信息库层定义了相同属性,则 SMF 无法确定要使用哪个值。如果检测到这种冲突,该实例将置于维护状态。有关层的更多信息,请参见系统信息库层。
除了为 Oracle Solaris 提供服务以外,服务包还为各种系统提供定制配置。
系统配置文件 /etc/svc/profile/generic.xml 在安装期间得到应用。请勿更改此配置文件。升级时会覆盖对此系统配置文件所做的任何更改。有关更多信息,请参见 smf_bootstrap(5) 手册页。
服务配置系统信息库可以为一个属性存储不同的值。系统信息库根据数据的来源在层中存储数据。数据来源可以是清单、系统配置文件、站点配置文件以及使用 SMF 命令和库接口进行的定制。您可以查看不同层中的值以了解运行中的配置值的来源:值是在清单或配置文件中指定的,还是由管理员更改过的。
使用 SMF 命令和库接口所做的配置更改仅显示在 admin 层中。其他层中的配置定义在位于标准位置的配置文件和清单文件中。将属性从文件添加到系统信息库中时,有关该属性的信息将包括该文件的名称。
|
任何层中都不能存在属性冲突。admin 层中的冲突属性会覆盖之前的属性。如果任何其他层中有多个文件提供相同的属性,而且未在更高的层中设置该属性,则实例会被标记为存在冲突并且直到删除冲突定义或者在更高的层中设置该属性时才启动。
您可以指定要查看的配置数据层,从而确定哪些数据为管理定制项以及哪些数据随软件提供。当客户机未指定从哪个层检索配置数据时,则提供顶层的数据。顶层将按照下面的优先级顺序进行确定(从上到下):admin 层、site-profile 层、system-profile 层、manifest 层。如果某个属性在 admin 层中有值,则该值是系统信息库提供的值。这样,本地定制项优先于安装系统时提供的值。
每次成功启动服务时,系统信息库都会捕获该服务的只读快照。通过这些快照可以轻松返回之前的工作状态(如果需要)。任何指定的实例都可能存在以下快照:
首次导入服务及其实例时的初始配置。如果配置文件在清单导入之前启动了服务或实例,则不创建 initial 快照。
为已提供的服务执行清单导入时捕获的当前配置。服务可能已由正在导入的清单或其他清单提供。
服务实例的运行中配置。当您更改配置数据时,请使用 svcadm refresh 或 svccfg refresh 命令将新值提交至运行中的快照。
成功转换为 online 状态期间捕获的配置。
SMF 自动对服务配置系统信息库执行以下备份:
每次系统启动过程中,在即将对系统信息库进行首次更改之前,会执行 boot 备份。
manifest_import 的备份在 svc:/system/early-manifest-import:default 或 svc:/system/manifest-import:default 完成之前进行(如果该服务导入了任何新清单或运行了任何升级脚本)。
每种类型的四个备份都由系统进行维护,并根据需要删除最早的备份。
您可以从其中一个备份恢复系统信息库。请参见如何从备份恢复系统信息库。