跳过导航链接 | |
退出打印视图 | |
在 Oracle Solaris 11.1 中管理服务和故障 Oracle Solaris 11.1 Information Library (简体中文) |
以下过程说明如何对 SMF 服务进行故障排除或修复。其中的部分过程还说明了如何更改引导参数来改变系统的引导方式。
以下任务列表中包含的一些过程可用于对系统中的问题进行故障排除。每行都包含一个任务、关于执行该项任务的时间说明,以及指向该任务的链接。
|
在该过程中,打印服务处于禁用状态。
# svcs -xv svc:/application/print/server:default (LP Print Service) State: disabled since Wed 13 Oct 2004 02:20:37 PM PDT Reason: Disabled by an administrator. See: http://support.oracle.com/msg/SMF-8000-05 See: man -M /usr/share/man -s 1M lpsched Impact: 2 services are not running: svc:/application/print/rfc1179:default svc:/application/print/ipp-listener:default
-x 选项提供有关受到影响的服务实例的其他信息。
# svcadm enable application/print/server
以下过程显示如何将已损坏的系统信息库替换为缺省的系统信息库副本。系统信息库守护进程 svc.configd 在启动之后不会对配置系统信息库执行完整性检查。配置系统信息库存储在 /etc/svc/repository.db 中。配置系统信息库可能会由于以下某种原因而损坏:
磁盘故障
硬件错误
软件错误
无意中覆盖文件
如果完整性检查失败,svc.configd 守护进程会向控制台写入一条以下类似的消息:
svc.configd: smf(5) database integrity check of: /etc/svc/repository.db failed. The database might be damaged or a media error might have prevented it from being verified. Additional information useful to your service provider is in: /system/volatile/db_errors The system will not be able to boot until you have restored a working database. svc.startd(1M) will provide a sulogin(1M) prompt for recovery purposes. The command: /lib/svc/bin/restore_repository can be run to restore a backup version of your repository. See http://support.oracle.com/msg/SMF-8000-MY for more information.
随后,svc.startd 守护进程将退出,并启动 sulogin,以便您进行维护。
借助 sulogin 命令,root 用户可以进入系统维护模式来修复系统。
# /lib/svc/bin/restore_repository
运行此命令可指导您完成恢复未经损坏的备份所必需的步骤。SMF 会在系统的任何关键时刻自动提取系统信息库的备份。有关更多信息,请参见SMF 系统信息库备份。
在启动 /lib/svc/bin/restore_repository 命令之后,会显示一条以下类似的消息:
See http://support.oracle.com/msg/SMF-8000-MY for more information on the use of this script to restore backup copies of the smf(5) repository. If there are any problems which need human intervention, this script will give instructions and then exit back to your shell.
在使用写入权限挂载了 root ( /) 文件系统之后,或者如果该系统是本地区域,则系统将提示您选择要恢复的系统信息库备份:
The following backups of /etc/svc/repository.db exists, from oldest to newest: ... list of backups ...
基于备份类型和备份时间来确定备份的名称。以 boot 开头的备份在系统引导之后、首次更改系统信息库之前完成。以 manifest_import 开头的备份在 svc:/system/manifest-import:default 完成其进程之后完成。备份时间以 YYYYMMDD_HHMMSS 格式提供。
通常会选择最新的备份选项。
Please enter either a specific backup repository from the above list to restore it, or one of the following choices: CHOICE ACTION ---------------- ---------------------------------------------- boot restore the most recent post-boot backup manifest_import restore the most recent manifest_import backup -seed- restore the initial starting repository (All customizations will be lost, including those made by the install/upgrade process.) -quit- cancel script and quit Enter response [boot]:
如果在未指定要恢复的备份的情况下按 Enter 键,则会选择括在 [] 中的缺省响应。选择 -quit- 会退出 restore_repository 脚本,并返回到 shell 提示符。
注 - 选择 -seed- 会恢复 seed 系统信息库。此系统信息库设计用于初始安装和升级过程。如非绝对必要,请勿使用 seed 系统信息库进行恢复。
在选择了要恢复的备份之后,系统将对其进行验证并检查其完整性。如有任何问题,restore_repository 命令会列显错误消息并提示您进行其他选择。在选择了有效的备份之后,系统会列显如下信息,并提示您进行最终确认。
After confirmation, the following steps will be taken: svc.startd(1M) and svc.configd(1M) will be quiesced, if running. /etc/svc/repository.db -- renamed --> /etc/svc/repository.db_old_YYYYMMDD_HHMMSS /system/volatile/db_errors -- copied --> /etc/svc/repository.db_old_YYYYMMDD_HHMMSS_errors repository_to_restore -- copied --> /etc/svc/repository.db and the system will be rebooted with reboot(1M). Proceed [yes/no]?
在 restore_repository 命令执行了列出的所有操作之后,系统将重新引导。
如果在启动服务时出现问题,有时系统会在引导过程中挂起。以下过程显示如何解决此问题。
此命令指示 svc.startd 守护进程临时禁用所有的服务并在控制台上启动 sulogin。
ok boot -m milestone=none
# svcadm milestone all
在引导过程挂起时,通过运行 svcs -a 来确定哪些服务未在运行。在位于 /var/svc/log 中的日志文件中查找错误消息。
# svcs -x
以下命令检验控制台上的 login 进程是否将运行。
# svcs -l system/console-login:default
缺省情况下,引导过程中的消息显示级别设置为静默模式,这将只在服务启动时出现错误时才生成消息。对系统引导时出现的问题进行故障排除时,您可能希望看到更多消息。以下过程说明如何在系统引导过程中显示所有错误消息。
# boot -m verbose
示例 2-22 将引导消息保存在日志中
在 boot 命令中提供 -m debug 选项会导致将有关每个服务以及服务启动的所有消息都记录在日志文件中。
引导系统时不需要的本地文件系统由 svc:/system/filesystem/local:default 服务挂载。当其中的任何文件系统无法挂载时,该服务将进入维护状态。系统将继续启动,并将启动不依赖 filesystem/local 的任何服务,而要求 filesystem/local 联机才能通过依赖性启动的服务将不会启动。
要更改系统的配置,以在该服务失败后立即出现 sulogin 提示符(而不是允许系统继续启动),请按照下面的过程操作。
# svccfg -s svc:/system/console-login svc:/system/console-login> addpg site,filesystem-local dependency svc:/system/console-login> setprop site,filesystem-local/entities = fmri: svc:/system/filesystem/local svc:/system/console-login> setprop site,filesystem-local/grouping = astring: require_all svc:/system/console-login> setprop site,filesystem-local/restart_on = astring: none svc:/system/console-login> setprop site,filesystem-local/type = astring: service svc:/system/console-login> end
# svcadm refresh console-login
故障排除
当 system/filesystem/local:default 服务失败时,应当使用 svcs -vx 命令来标识该失败。在错误得以修复之后,可以使用下面的命令来清除错误状态并允许系统继续引导:svcadm clear filesystem/local。