解读SMF:Solaris系统服务管理好帮手

SMF(Solaris 10中 “可预测性自恢复技术- 包含了FMA和SMF两部分)提供了在传统 Unix 启动脚本、init 运行级和配置文件的基础上进行扩充的基础结构 。
一、SMF的概念
要理解 SMF 概念,必须先了解下面的这些术语 。
(1)SMF 服务
SMF 框架中的基本管理单元是服务实例 。每个 SMF 服务都有可能配置了多个版本 。而且,同一版本的多个实例也可以在一个 Solaris 10系统上运行 。实例是指服务的特定配置 。Web 服务器就是一种服务 。配置为在端口 80 侦听的特定 Web 服务器守护进程就是一个实例 。Web 服务器服务的每个实例都可以有不同的配置要求 。服务具有系统范围的配置要求,但是,每个实例都可以根据需要覆盖特定的要求 。单个服务的多个实例可作为服务对象的子对象进行管理 。服务不只表示长期运行的标准系统服务(如 dhcpd 或 nfsd),还表示包括 ISV 应用程序(如 Oracle 软件)的各种系统实体 。此外,服务还可能包括如下所示的较不传统的实体:
? 物理网络设备
? 配置的 IP 地址
? 内核配置信息
? 与系统 init 状态相对应的里程碑,如多用户运行级
通常,服务是一个向应用程序和其他服务(本地和远程)提供一系列功能的实体 。服务依赖于隐式声明的本地服务列表 。里程碑是特殊类型的服务 。里程碑服务表示系统的高级属性 。例如,构成运行级 S、2 和 3 的服务均由里程碑服务表示 。
(2)服务标识符
使用故障管理资源标识符 (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 命令手册页 。
服务名称中通常包括一个常规的功能类别 。这些类别包括:
application
device
milestone
network
platform
site
system
传统的 init.d 脚本也使用以 lrc(而不是 svc)开头的 FMRI 进行表示,例如:lrc:/etc/rcS_d/S35cacheos_sh 。可使用 SMF 对传统服务进行监视 。
(3)SMF 兼容性
尽管现在许多标准的 Solaris 服务由 SMF 来管理,位于 /etc/rc*.d 中的脚本仍能继续在运行级转换中执行 。包括在以前的 Solaris 发行版中的多数 /etc/rc*.d 脚本都已经作为 SMF 的一部分删除 。其余的脚本能够继续运行,从而在不必将服务转换为使用 SMF 的情况下,添加第三方应用程序 。另外,对于要使用安装后的脚本改正的软件包,/etc/inittab 和 /etc/inetd.conf 必须可用 。这些称为传统运行服务 。通过运行 inetconv 命令,可以将这些传统运行服务添加到服务配置系统信息库中 。您可以查看这些服务的状态,但是 SMF 不支持进行其他更改 。使用此功能的应用程序将不会受益于 SMF 所提供的精确的故障隔离 。转换为利用 SMF 的应用程序可能无法再修改 /etc/inittab 和 /etc/inetd.conf 文件 。已转换的应用程序将不使用 /etc/rc*.d 脚本 。同样,新版本的 inetd 不会在 /etc/inetd.conf 中查找项 。
(4)SMF 清单和SMF 配置文件
SMF 清单是一个 XML 文件,其中包含与服务或服务实例相关的一整套属性 。这些文件存储在 /var/svc/manifest 中 。不应当使用清单来修改服务的属性 。服务配置系统信息库是配置信息的授权来源 。要将清单中的信息引入到系统信息库中,必须运行 svccfg import 或者允许服务在系统引导过程中导入信息 。

推荐阅读