扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
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 系统服务的方法。