本节提供 SMF 框架中的术语及其定义。这些术语应用于整个文档。要理解 SMF 概念,必须先了解这些术语。
SMF 框架中的基本管理单元是服务实例。每个 SMF 服务都有可能配置了多个版本。而且,同一版本的多个实例也可以在一个 Oracle Solaris 系统上运行。实例是指服务的特定配置。Web 服务器就是一种服务。配置为在端口 80 侦听的特定 Web 服务器守护进程就是一个实例。Web 服务器服务的每个实例都可以有不同的配置要求。服务具有系统范围的配置要求,但是,每个实例都可以根据需要覆盖特定的要求。单个服务的多个实例可作为服务对象的子对象进行管理。
服务不只表示长期运行的标准系统服务(如 in.dhcpd 或 nfsd),还表示包括 ISV 应用程序(如 Oracle 软件)的各种系统实体。此外,服务还可能包括如下所示的较不传统的实体:
物理网络设备
配置的 IP 地址
内核配置信息
与系统 init 状态相对应的里程碑,如多用户运行级别
通常,服务是一个向应用程序和其他服务(本地和远程)提供一系列功能的实体。服务依赖于隐式声明的本地服务列表。
里程碑是特殊类型的服务。里程碑服务表示系统的高级属性。例如,构成运行级别 S、2 和 3 的服务均由里程碑服务表示。
使用故障管理资源标识符 (Fault Management Resource Identifier, FMRI) 对每个服务实例进行命名。FMRI 包括服务名称和实例名称。例如,rlogin 服务的 FMRI 是 svc:/network/login:rlogin,其中 network/login 标识服务,rlogin 标识服务实例。
FMRI 的等效格式如下所示:
svc://localhost/system/system-log:default
svc:/system/system-log:default
system/system-log:default
另外,一些 SMF 命令可以使用下面的 FMRI 格式: svc:/system/system-log。一些命令将推断要使用哪个实例,以及何时没有多义性。有关选择适当的 FMRI 格式的说明,请参见 SMF 命令手册页,如 svcadm(1M) 或 svcs(1)。
服务名称中通常包括一个常规的功能类别。这些类别包括:
application
device
milestone
network
platform
site
system
传统的 init.d 脚本也使用以 lrc(而不是 svc)开头的 FMRI 进行表示,例如: lrc:/etc/rcS_d/S35cacheos_sh。可使用 SMF 对传统服务进行监视。但是,您无法管理这些服务。
首次使用 SMF 引导系统时,列在 /etc/inetd.conf 中的服务会自动转换为 SMF 服务。这些服务的 FMRI 稍有不同。已转换的 inetd 服务的语法如下所示:
network/<service-name>/<protocol> |
另外,使用 RPC(远程过程调用)协议的已转换服务的语法如下所示:
network/rpc-<service-name>/rpc_<protocol> |
其中,<service-name> 是在 /etc/inetd.conf 中定义的名称,<protocol> 是服务的协议。例如,rpc.cmsd 服务的 FMRI 是 network/rpc-100068_2-5/rpc_udp。
svcs 命令显示服务实例的状态、开始时间和 FMRI。每个服务的状态都为下列状态之一:
degraded-服务实例处于启用状态,但是以有限的功能运行。
disabled-服务实例处于禁用状态且尚未运行。
legacy_run-传统服务不由 SMF 进行管理,但是可查看服务。此状态只能由传统服务使用。
maintenance-服务实例遇到错误,必须由管理员解决。
offline-服务实例处于启用状态,但是尚未运行或者无法运行。
online-服务实例处于启用状态,并且已成功启动。
uninitialized-此状态是所有服务在配置经过读取之前的初始状态。
SMF 清单是一个 XML 文件,其中包含与服务或服务实例相关联的一整套属性。这些文件存储在 /var/svc/manifest 中。不应当使用清单来修改服务的属性。服务配置系统信息库是配置信息的授权来源。要将清单中的信息引入到系统信息库中,必须运行 svccfg import 或者允许服务在系统引导过程中导入信息。
有关 SMF 清单内容的完整说明,请参见 service_bundle(4) 手册页。如果需要更改服务属性,请参见 svccfg(1M) 或 inetadm(1M) 手册页。
SMF 配置文件是一个 XML 文件,其中列出了一组服务实例以及每个服务是应当处于启用状态还是禁用状态。下面是随 Oracle Solaris 发行版提供的一些配置文件:
/var/svc/profile/generic_open.xml-此配置文件可启用早期 Solaris 发行版在缺省情况下启动的标准服务。
/var/svc/profile/generic_limited_net.xml-此配置文件可禁用早期 Solaris 发行版在缺省情况下启动的许多 Internet 服务。将启用 network/ssh 服务,以提供网络连通性。
/var/svc/profile/ns_*.xml-这些配置文件可启用与配置为在系统上运行的名称服务相关联的服务。
/var/svc/profile/platform_*.xml-这些配置文件可启用与特定硬件平台相关联的服务。
在全新安装或升级到 Oracle Solaris OS 之后的首次引导过程中,将自动应用某些 Solaris 配置文件。具体来说,会应用 /var/svc/profile/generic.xml 配置文件。此文件通常以符号形式链接到 generic_open.xml 或 generic_limited_net.xml。同样,如果名为 site.xml 的配置文件在系统首次引导期间位于 /var/svc/profile 中,或者是在两次引导之间添加的,则将应用该配置文件的内容。管理员可以使用 site.xml 配置文件来自定义初始启用服务集。
有关使用配置文件的更多信息,请参见如何应用 SMF 配置文件。
服务配置系统信息库存储服务的持久性配置信息以及 SMF 运行时数据。系统信息库在本地内存和本地文件之间分布。SMF 旨在最终可以用网络目录服务表示服务数据。网络目录服务尚不可用。服务配置系统信息库中的数据可实现许多 Solaris 实例之间的配置信息共享和管理简化。服务配置系统信息库只能使用 SMF 界面进行处理和查询。有关处理和访问系统信息库的更多信息,请参见 svccfg(1M) 和 svcprop(1) 手册页。svc.configd(1M) 手册页中对服务配置系统信息库守护进程进行了说明。libscf(3LIB) 手册页中对服务配置库进行了说明。
SMF 自动对系统信息库执行下列备份操作:
在每次系统启动过程中,在即将对系统信息库进行首次更改之前,会执行引导备份。
在 svc:/system/manifest-import:default 完成之后,如果 manifest_import 备份导入了任何新的清单,或者运行了任何升级脚本,则将发生此备份。
系统将为上述两种类型各维护四个备份。系统会在必要时删除最旧的备份。备份存储为 /etc/svc/repository -type-YYYYMMDD_HHMMSWS,其中 YYYYMMDD(年、月和日)和 HHMMSS(小时、分钟和秒)是执行备份的日期和时间。请注意,小时格式基于 24 小时制。
在发生错误时,可以从这些备份中恢复系统信息库。为此,可使用 /lib/svc/bin/restore_repository 命令。有关更多信息,请参见如何修复已损坏的系统信息库。
服务配置系统信息库中的数据包括快照以及可编辑的配置。每个服务实例的相关数据都存储在快照中。标准快照如下所示:
initial-在首次导入清单时提取
running-在执行服务的方法时使用
start-在最后一次成功启动时提取
始终使用 running 快照执行 SMF 服务。如果此快照不存在,系统将自动创建。
svcadm refresh 命令(有时后跟 svcadm restart 命令)能够激活快照。svccfg 命令用于查看或恢复到以前快照中的实例配置。有关更多信息,请参见如何恢复到另一个 SMF 快照。