科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航



ZDNet>服务器频道>ZD评测>解读SMF:Solaris系统服务管理好帮手

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

SMF(solaris 10中 “可预测性自恢复技术”- 包含了FMA和SMF两部分)提供了在传统 UNIX 启动脚本、init 运行级和配置文件的基础上进行扩充的基础结构。

来源: 2008年03月20日

关键字:ORACLE 服务管理 服务器 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 或者允许服务在系统引导过程中导入信息。

  SMF 配置文件是一个 XML 文件,其中列出了在系统引导时启用的一组服务实例。配置文件存储在 /var/svc/profile 中。下面是所包括的一些配置文件:

  generic_open.xml-此配置文件可启用在早期 Solaris 发行版中缺省启用的大多数标准 Internet 服务。这是缺省配置文件。

  generic_limited_net.xml-此配置文件禁用许多标准 Internet 服务。启动了 sshd 服务和 NFS 服务,但是其余的多数 Internet 服务处于禁用状态。

  (5)SMF 快照

  服务配置系统信息库中的数据包括快照以及可编辑的配置。每个服务实例的相关数据都存储在快照中。标准快照如下所示:

   initial-在首次导入清单时提取

   running-在执行服务的方法时使用

   start-在最后一次成功启动时提取

  SMF服务始终使用 running 快照执行 SMF 服务。如果此快照不存在,系统将自动创建。

  svcadm refresh 命令能够激活快照。svccfg 命令用于查看或恢复到以前快照中的实例配置。

  二、SMF命令行工具

  SMF 提供一组与 SMF 交互,并完成标准管理任务的命令行实用程序。下列实用程序可用来管理 SMF。管理SMF服务包括配置、查看、启用/禁用、启动/停止服务等任务。这些任务分别可以用svccfg, svcs, svcadm等命令完成。表 1 是SMF服务管理工具实用程序 。

三、SMF和系统启动的关系

   1. SMF和系统启动的关系如图1

  

  图1 SMF和系统启动的关系

  SMF 提供用来引导系统的新方法。如:

  (1)有另外一个与 all 里程碑相关联的系统状态。此里程碑不同于多用户 init 状态,因为 SMF 只能识别定义的服务。如果您添加了服务(如第三方产品),那么,除非您使用下面的命令,否则它们可能不会自动重新启动:

  ok boot -m milestone=all

  (2)如果使用某个里程碑引导系统,一定要同时使用 -s 选项。如果未包括 -s,则系统将停留在引导系统时所处的里程碑状态。通过按 Ctrl-D,系统将不会自动进入多用户状态。可以使用以下命令进入多用户状态:

  # svcadm milestone all

  (3)在引导系统时,可以选择使用 verbose 选项来查看更多的消息。缺省情况下,系统将不显示这些消息。要在详细模式下引导,请使用以下命令:

  ok boot -mverbose

  2. Solaris 10的运行级

  Solaris 10有八个运行级,表2对其进行了说明。在 /etc/inittab 文件中,缺省的运行级指定为运行级 3。

  表2 Solaris 10的运行级

 

   SMFde 组成要素

  SMF包含两个进程、服务定义的manifest和profile、服务配置库和命令行管理工具等内容:

  1. svc.startd, svc.configd

  svc.startd是SMF的主要进程,它根据系统管理员指令或者系统故障或应用故障来启动、停止、重启服务。svc.configd是负责管理服务配置库的进程。

  2. manifest, profile

  服务和服务的实例可以用xml文件定义,manifest定义服务,profile定义服务实例,这些xml文件通常存放在/var/svc目录下。

  3. repository(sqlite db)

  服务配置库存放在/etc/svc/repository.db文件中。服务配置库实际上是一个sqlite的关系数据库,它存放了服务的定义、配置等信息。 /var/svc目录下的manifest和profile文件和/etc/svc/repository.db文件都包含了服务的定义、配置等信息,后者的信息是权威的。

  4. CLI mgmt tool

  命令行管理工具包括:svccfg, svcadm, svcprop, svcs, inetadm, inetconv, repoistory_restore。

  到此为止笔者介绍了使用SMF来管理Solaris 系统服务的方法。

邮件订阅

如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅ZDNet技术邮件将是您的最佳途径之一。