1 自动修复已损坏的SMF系统信息库
系统信息库守护进程 svc.configd 在启动之后不会对配置系统信息库执行完整性检查。配置系统信息库存储在 /etc/svc/repository.db SMF系统信息库中。配置系统信息库可能会由于以下某种原因而损坏:磁盘故障,硬件错误,软件错误,无意中覆写文件。如果完整性检查失败,svc.configd 守护进程会向控制台写入一条消息,随后,svc.startd 守护进程将退出,并启动 sulogin,以便您进行维护。步骤如下:
在 sulogin 提示符处输入 root 密码。sulogin 使 root 用户能够进入系统维护模式来修复系统。
运行以下命令:
# /lib/svc/bin/restore_repository
运行此命令可指导您完成恢复未经损坏的备份所必需的步骤。SMF 会在系统的任何关键时刻自动提取系统信息库的备份。
2 手工修复已损坏的SMF系统信息库
步骤如下:
成为超级用户或者授权角色用户
3 在系统启动时如何交互式启动服务 停止svc.startd daemon
#pstop ‘pgrep svc.startd’
 停止svc.configd daemon
#pkill svc.configd
 保存当前数据库
#cp /etc/svc/repository.db /etc/svc/repository.bad
 用备份数据库替换当前库。
#cp /lib/svc/seed/global.db /etc/svc/repository.db
成为超级用户或者授权角色用户
不启动svc.startd daemon,但是在控制台启动sulogin
ok boot –m milestone=none
以root登陆到系统
启动所有服务:
#svcadm milestone –t all
查看那些服务没有启动:
#svcs -l
然后修复这些问题,检查这些服务是否启动。
a. 检查所有服务是否在线使用命令:
#svcs -l
b. 检查login进程是否在运行使用命令:
#svcs –l system/console-login:default
继续系统启动进程
4 当SMF服务没有启动时如何处理
假设打印服务处于禁用状态,处理步骤:
成为超级用户或者授权角色用户
查看问题服务信息
#svcs –xv
输出如图6 。

图6查看问题服务信息
修复后,重新启动问题服务。
#svcadm enable application/print/server
重新查看服务信息
使用svcs -a 命令查看服务,如图7 。

图7 使用svcs -a 命令查看
从图7 的最后三行已经处于online状态了。
总结:到此为止smf服务系列文章全部介绍完了,主要介绍了管理和监视服务管理工具 (Service Management Facility, SMF) 所需的任务。另外,本章还提供了与管理运行级脚本有关的信息。Solaris 10引入全新的后台服务管理机制,该机制被称为SMF,它包含了新的概念、管理工具和服务定义方式。比如用里程碑(milestone)代替了运行级别的概念;用服务配置库代替分散在/etc/rcx.d目录的服务启动脚本。通过使用SMF技术,系统中所有的服务可以在一个统一而强大的平台中进行配置和管理。同时,它也是预测性自愈技术的组成部分,可以自我侦测各服务的运行状态,尽可能地减少服务下线的机率。另外,利用SMF 技术系统管理员可以降低系统维护难度,减少人为出错机会。