solaris - 10(200)(6)

2019-02-20 21:00

(fault management resource identifier)格式。 服务类型包括: Application Device Legacy Milestone Network Platform Site System

下面是一个FMRI为服务实例的一个例子: Svc:/system/filesystem/root: default 说明一下:

Svc 指示这个服务是由SMF来管理的。 服务类型是system 服务本身是filesystem 服务实例是root文件系统

Default是第一个标示,在这个例子中,只有一个服务实例。

另一个FMRI的例子:

Lrc:/etc/rc3_d/S90samba

Lrc(legacy run control)指示这个服务当前并不是通过SMF来管理的。 /etc/rc3_d是参考目录/etc/rc3.d是使用管理服务的脚本所在。 脚本的名字是S90samba。

显示服务信息

使用svc命令来显示服务信息的情况。 #svc

STATE STIME FMRI

Legacy_run Feb_10 lrc:/etc/rc2_d/S10lu

Online Feb_10 svc:/system/system-log:default 以下信息省略

服务状态

Svc命令可以列出服务标示和服务状态情况。服务状态包括以下类型: Online:服务实例是enable和成功启动的。

Offline:服务实例是enable的但是显现不是一个运行的服务。 Disable:服务实例并是enable和运行的。

Legacy_run:这个服务并不是通过SMF来管理的,但是可以通过svc来观察。 Uninitialized:在他们的配置可读之前,要初始化所有的服务。 Maintenance:这个服务发生了错误,必须等待管理员解决。 Degraded:这个服务是enable但是,现在是受限制运行。

里程碑

里程碑是指定类型的服务它可以构建和定义设置其他服务。 里程碑可以被看做是服务到达的一种状态。这种系统状态要求定义设置运行的服务。这些服务依靠于其他服务的运行才可用。因此这是一个层次依靠的关系。它是通过SMF进行核心管理的。当前有七种里程碑。 Single-user Multi-user

Multi-user-server Network

Name-services Sysconfig Devices

26

决定当前的里程碑。 Svcs |grep milestone

Svc.startd 进程

Svc.startd进程它的主要责任就是维持系统服务。Svc.startd进程确保系统启动为合适的里程碑方式。如果启动的时候没有指定里程碑,Svc.startd会启动建立包括所有系统服务的里程碑(all)。

当前系统启动时包括的里程碑为: None

Single-user Multi-user

Multi-user-server All

在启动系统的时候指定里程碑用-m参数。 Ok> boot –m milestone=single-user

关于SMF更多的详细的信息,在200上没有更多详细的介绍.在这里引用和转贴一下CU另一位朋友写的关于SMF的文档.

Solaris 10引入全新的后台服务管理机制,该机制被称为SMF,它包含了新的概念、管理工具和服务定义方式。比如用里程碑(milestone)代替了运行级别的概念;用服务配置库代替分散在/etc/rcx.d目录的服务启动脚本。

SMF相对于传统的Unix后台服务管理机制具备以下突出的功能: 1. 恢复由软件故障、硬件故障、管理错误终止的服务 2. 服务之间可以定义依赖关系 3. 服务可以有多个实例

3. 提供了比较全面基于命令行管理工具

4. 根据依赖关系可以并发启动服务,加快系统启动的速度 5. 引入服务配置库,提供服务配置库快照、备份、恢复功能

这些功能方便了服务的管理,服务的可用性。SMF提供了一定程度的服务自愈性,它也是Solaris 10系统可预测自愈功能(Predictive Self-Healing)的一部分。

SMF组成要素

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

3. repository(sqlite db)

4. CLI mgmt tool (svccfg, svcadm, svcprop, svcs, inetadm, inetconv, repoistory_restore)

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

svc.configd是负责管理服务配置库的进程。SMF命令行工具svccfg, svcprop, svcs, svcadm通过该进程访问服务配置库。

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

服务配置库存放在/etc/svc/repository.db文件中。服务配置库实际上是一个sqlite的关系数据库,它存放了服务的定义、配置等信息。

/var/svc目录下的manifest和profile文件和/etc/svc/repository.db文件都包含了服务的定义、配置等信息,后者的信息是权威的。

使用svccfg import命令可将SMF服务的manifest xml文件导入到repository中;

使用svccfg export命令可将repository中SMF服务的manifest信息导出到xml文件; 使用svccfg apply命令可将SMF服务的profile xml文件导入到repository中;

27

使用svccfg etract命令可将repository中SMF服务的profile信息导出到xml文件。

SMF中的服务 服务和服务实例

SMF中的服务可以有多个实例,服务实例继承服务的属性。 SMF中的服务命名

SMF中的服务命名方式和传统的Unix中的后台进程的命名方式有很大的差别,SMF服务名称是用FMRI(Fault Managed Resouce Identifier)表示的,FMRI是基于URI规范资源命名方式在Solaris系统的一个应用。对于SMF服务,其格式是:

scheme:/category1/category2.../categoryn/service[:instance] scheme有svc和lrc,lrc没有实例名。

svc模式的FMRI表示SMF服务,而lrc模式的FMRI表示旧的基于rc脚本的服务。 用svcs -a可以列出当前所有的服务: STATE STIME FMRI

legacy_run 1:58:26 lrc:/etc/rcS_d/S50sk98sol legacy_run 1:58:50 lrc:/etc/rc3_d/S50apache legacy_run 1:58:51 lrc:/etc/rc3_d/S75seaport legacy_run 1:58:55 lrc:/etc/rc3_d/S76snmpdx legacy_run 1:58:57 lrc:/etc/rc3_d/S90samba ...

disabled 1:58:06 svc:/network/iscsi_initiator:default disabled 1:58:06 svc:/system/metainit:default disabled 1:58:07 svc:/network/ipfilter:default

disabled 1:58:08 svc:/network/rpc/keyserv:default disabled 1:58:08 svc:/network/rpc/nisplus:default disabled 1:58:08 svc:/network/nis/client:default disabled 1:58:08 svc:/network/dns/client:default disabled 1:58:08 svc:/network/ldap/client:default disabled 1:58:09 svc:/network/nfs/cbd:default disabled 1:58:09 svc:/network/nfs/mapid:default ...

online 1:58:06 svc:/system/svc/restarter:default online 1:58:08 svc:/network/pfil:default

online 1:58:10 svc:/network/loopback:default

online 1:58:11 svc:/milestone/name-services:default online 1:58:12 svc:/system/filesystem/root:default online 1:58:14 svc:/system/boot-archive:default online 1:58:15 svc:/network/physical:default online 1:58:15 svc:/milestone/network:default

online 1:58:20 svc:/application/print/cleanup:default online 1:58:21 svc:/system/picl:default

online 1:58:21 svc:/system/sysevent:default

online 1:58:21 svc:/system/device/fc-fabric:default online 1:58:22 svc:/milestone/devices:default online 1:58:28 svc:/system/sysidtool:net online 1:58:30 svc:/system/sysidtool:system online 1:58:30 svc:/network/nfs/status:default online 1:58:45 svc:/network/ssh:default ...

第三列FMRI就是服务名称。上述输出中显示了在Solaris 10中捆绑的Samba、Apache 1.3.x服务名称,由于它们仍然沿用了rc脚本的启动方式,所以它们的名称是以lrc开头的,这类服务无法用svcadm来管理。比如试图运行命令svcadm enable lrc:/etc/rc3_d/S90samba,系统会报错。上述输出中显示了ssh服务的服务名为svc:/network/ssh:default。

用FMRI表示的服务名称可以唯一地标识一个服务,但是名称通常都比较冗长,不便记忆。所以SMF允许服务名称的缩写,只要可以唯一标识服务,scheme,instance,category都可以省。

28

所以ssh服务的名称可以简写成ssh。简写的服务名在SMF的命令行工具中都可以使用。

使用FMRI方法命名服务后使得原先的服务名称发生了变化,但通过以下方法可以找SMF服务的名称

1. 猜测法,根据该服务的关键词得一个可能的服务名(guess_service_name),如Apache web服务可以用apache,NFS文件服务可以用nfs。 然后用svcs -a |grep guess_service_name。

2. 查看该服务所属应用的文档。

以下是常见服务的名称

服务 最简缩写 FMRI

sshd ssh svc:/network/ssh:default cron cron svc:/system/cron:default

automount autofs svc:/system/filesystem/autofs:default Apache2 apache2 svc:/system/filesystem/autofs:default sendmail sendmail svc:/network/smtp:sendmail nfs nfs/server svc:/network/nfs/server:default

管理SMF服务

管理SMF服务包括配置、查看、启用/禁用、启动/停止服务等任务。这些任务分别可以用svccfg, svcs, svcadm命令完成。

svccfg命令

svccfg命令用来管理SMF repository。运行不带参数的svccfg命令进入一个交互式的shell,在该shell里可以对服务、服务实例进行配置、导入、导出、备份、恢复操作。 #TODO:增加使用svccfg shell的例子。

最常用的操作是新增一个SMF服务时导入该服务的manifest文件,可以使用svccfg import 的方法。使用svccfg import时要注意在目前版本的Solaris中(版本小于等于Solaris 10 1/06 ),如果manifest xml文件语法有错,该命令不会报告xml文件出错的具体位置,只会报一个笼统的错误信息。例如,postfix.xml文件的service元素没有闭合,运行以下命令:

-bash-3.00# svccfg -v import postfix.xml svccfg: couldn't parse document

会报无法解析文档的错误。因此,编写完manifest xml文件应当验证一下文件的有效性。

svcs命令

svcs用于查看服务的状态,

svcs -a用于查看所有状态的服务 svcs -x用于查看未正常启动的服务

svcs -l 用于查看单个服务的详细信息

svcadm命令

svcadm用来启用/禁用、启动/停止SMF服务。

svcadm enable fmri -- 启用一个SMF服务,同时运行该服务 svcadm disable fmri -- 禁用一个SMF服务,同时停止该服务 svcadm restart fmri -- 重启一个SMF服务

svcadm refresh fmri -- 刷新一个SMF服务,相当于让服务重新载入配置文件 svcadm mark fmri -- 将SMF服务标记为维护状态 svcadm clear fmri -- 清除SMF服务的维护状态

svcadm milestone milestone -- 进入指定的服务里程碑,相当于进入相应的运行级别 如果不指定参数,svcadm将输出该命令的使用方法。 如:

-bash-3.00# svcadm

Usage: svcadm [-v] [cmd [args ... ]]

29

svcadm enable [-rst] ... - enable and online service(s) svcadm disable [-st] ... - disable and offline service(s) svcadm restart ... - restart specified service(s) svcadm refresh ... - re-read service configuration svcadm mark [-It] ... - set maintenance state svcadm clear ... - clear maintenance state

svcadm milestone [-d] - advance to a service milestone

Services can be specified using an FMRI, abbreviation, or fnmatch(5) pattern, as shown in these examples for svc:/network/smtp:sendmail

svcadm svc:/network/smtp:sendmail svcadm network/smtp:sendmail svcadm network/*mail svcadm network/smtp svcadm smtp:sendmail svcadm smtp svcadm sendmail

SMF服务排错

使用svcs -xv可以查找未正常启动的服务。SMF对每个服务实例都在/var/svc/log目录创建了一个和服务FMRI对应的日志文件,比如apache2服务的FMRI为svc:/network/http:apache2,那么apache2服务状态变化的日志存放在名为network-http:apache2.log的文件中, 如运行以下命令

-bash-3.00# ls -l /var/svc/log |grep network

-rw-r--r-- 1 root root 534 Feb 9 00:08 milestone-network:default.log -rw-r--r-- 1 root root 77 Jan 30 15:25 network-dns-client:default.log -rw-r--r-- 1 root root 169 Jan 30 15:27 network-dns-server:default.log -rw-r--r-- 1 root root 803 Feb 13 01:17 network-http:apache2.log -rw-r--r-- 1 root root 2843 Jan 30 15:30 network-inetd-upgrade:default.log

-rw-r--r-- 1 root root 2929 Feb 12 01:58 network-inetd:default.log -rw-r--r-- 1 root root 2835 Feb 12 01:58 network-initial:default.log -rw-r--r-- 1 root root 77 Jan 30 15:25 network-ipfilter:default.log -rw-r--r-- 1 root root 77 Jan 30 15:25 network-iscsi_initiator:default.log

输出的第四行列出了apache2服务的日志文件名。通过查看这些文件可以获得服务未正常启动的线索。

SMF中的inetd服务

SMF包含了对inetd服务管理,除了标准的svccfg, svcadm, svcs命令外,SMF还提供了inetadm和inetconv专门管理inetd服务。inetadm命令用来查看、启用/禁用、修改inetd服务,inetconv则是用来将旧的inetd服务配置转化成SMF规范的服务。常用的inetadm选项如下

inetadm -e fmri 启用指定的inetd服务 inetadm -d fmri 禁用指定的inetd服务 inetadm -l fmri 列出指定inetd服务的属性 inetadm -p 列出默认inetd服务的属性

如果不指定参数inetadm将列出当前系统所有的inetd服务。如: -bash-3.00# inetadm

ENABLED STATE FMRI

enabled online svc:/application/x11/xfs:default

enabled online svc:/application/font/stfsloader:default enabled offline svc:/application/print/rfc1179:default

30


solaris - 10(200)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:-信息提示

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: