SMF 提供了在传统 UNIX 启动脚本、init 运行级别和配置文件的基础上进行扩充的基础结构。SMF 提供了下列功能:
自动按照相关性顺序重新启动失败的服务,无论服务失败的原因是管理员操作错误、软件错误还是无法纠正的硬件错误。相关性顺序由相关性语句定义。
可以使用新的 svcs 命令创建可查看的服务对象,用 svcadm 和 svccfg 命令创建可管理的服务对象。还可以使用 svcs -p 查看服务和进程之间的关系,这对于 SMF 服务和传统的 init.d 脚本均适用。
通过自动捕获服务配置的快照来简化对服务的备份、恢复及撤消更改操作。
使用 svcs -x 来解释服务没有运行的原因,这便于调试和询问有关服务的问题。此外,由于每个服务都有单独的持久性日志文件,因此该过程进一步得到了简化。
允许使用 svcadm 来启用和禁用服务。这些更改不会因升级或重新启动而失效。如果使用 -t 选项,则所做的更改将是临时更改。
管理员能够安全地将任务委托给非超级用户,这些任务包括在系统中修改属性以及启用、禁用或重新启动服务等任务。
依据服务的相关性并行启动服务,从而提高大型系统的引导速度。关机时过程相反。
可以对引导控制台输出进行自定义,尽可能采用静默方式(缺省设置);或使用 boot -m verbose 将其自定义为详细模式。
尽可能兼容现有的管理习惯。例如,多数客户和 ISV(独立软件开发商)提供的 rc 脚本仍可像往常一样工作。
依赖性声明定义服务之间的关系。使用这些关系,可以只重新启动那些在缺省情况下直接受到影响的服务(而不是重新启动所有的服务),从而提供精确的故障隔离。相关性语句的另一个优点是,允许针对可伸缩和可再现的初始化进程使用相关性语句。另外,通过定义所有的相关性,可以利用新式高度并行的机器,因为所有的相关性服务都可以并行启动。
SMF 定义了一组可以由管理员针对服务调用的操作。这些操作包括启用、禁用、刷新、重新启动和维护。每个服务都由执行管理操作的服务重新启动器来管理。通常,重新启动器通过执行服务的方法来执行操作。每个服务的方法都在服务配置系统信息库中定义。这些方法允许重新启动器更改服务的状态。
在每个服务成功启动时,服务配置系统信息库将按服务提供快照,这使回退成为可能。另外,系统信息库提供一致而持久的方法来启用或禁用服务,并提供一致的服务状态视图。此功能有助于调试服务配置问题。