系统管理指南:高级管理

系统崩溃(概述)

系统崩溃可能是由于存在硬件故障、I/O 问题和软件错误而引起的。如果系统崩溃,则会在控制台中显示一条错误消息,然后向转储设备中写入物理内存的副本。然后,将自动重新引导系统。系统重新引导时,将执行 savecore 命令以从转储设备检索数据并将保存的故障转储文件写入 savecore 目录。保存的故障转储文件可向您的支持服务提供商提供宝贵的信息,从而辅助诊断问题。

故障转储信息以压缩格式写入 vmdump. n 文件中,其中 n 是标识故障转储的一个整数。随后,可在同一系统或其他系统中调用 savecore 命令以将压缩的故障转储文件扩展为名为 unix. nvmcore.n 的文件对。还可以使用 dumpadm 命令配置重新引导时保存故障转储文件的目录。

对于具有 UFS 根文件系统的系统,缺省转储设备配置为相应的交换分区。交换分区是保留为操作系统虚拟内存备份存储的磁盘分区。因此,永久信息不会位于将被故障转储覆写的交换分区中。对于具有 Oracle Solaris ZFS 根文件系统的系统,专用的 ZFS 卷将用于交换和转储区域。有关更多信息,请参见交换区域和转储设备的 Oracle Solaris ZFS 支持

交换区域和转储设备的 Oracle Solaris ZFS 支持

如果您在软件初始安装期间选择 Oracle Solaris ZFS 根文件系统,或使用 Oracle Solaris Live Upgrade 从 UFS 根文件系统迁移到 ZFS 根文件系统,则会在 ZFS 根池中的 ZFS 卷上创建交换区域。交换卷的大小可按照物理内存的一半计算,但不超过 2 GB 且不少于 512 MB。转储卷的大小由内核基于 dumpadm 信息和物理内存大小进行计算。可以在 JumpStart 配置文件中或初始安装期间将交换和转储卷的大小调整为您选择的大小(只要您选择的新大小支持系统操作)。 有关更多信息,请参见《Oracle Solaris ZFS 管理指南》中的“对于交换和转储设备的 ZFS 支持”

如果安装后需要修改 ZFS 交换区域或转储区域,可以像在先前的发行版中那样使用 swapdumpadm 命令。

有关本文档中管理转储设备的信息,请参见管理系统故障转储信息

x86: GRUB 引导环境中的系统崩溃

如果在 GRUB 引导环境中基于 x86 的系统发生系统崩溃,则管理 GRUB 引导归档文件的 SMF 服务 svc:/system/boot-archive:default 可能在下一次系统重新引导时失败。有关基于 GRUB 进行引导的更多信息,请参见《系统管理指南:基本管理》中的“使用 GRUB 引导基于 x86 的系统(任务图)”

系统故障转储文件

savecore 命令在系统崩溃后自动运行,以便从转储设备检索故障转储信息,并写入名为 unix.Xvmcore.X 的两个文件,其中 X 标识转储序列号。这些文件共同表示保存的系统故障转储信息。

故障转储文件有时容易与核心转储文件混淆,后者是在应用程序异常终止时写入的用户应用程序的映像。

故障转储文件保存在预先确定的目录中,该目录缺省为 /var/crash/hostname。在先前的发行版中,除非手动使系统将物理内存的映像保存到故障转储文件中,否则系统重新引导时会覆写故障转储文件。现在,缺省情况下便可保存故障转储文件。

使用 dumpadm 命令可以管理系统故障转储信息。有关更多信息,请参见dumpadm 命令

保存故障转储

使用 mdb 实用程序可以检查控制结构、活动表、正常运行或崩溃的系统内核的内存映像,以及有关内核运行的其他信息。要最大程度地发挥 mdb 的作用,需要具备有关内核的详细知识,这超出了本手册的范围。有关使用此实用程序的信息,请参见 mdb(1) 手册页。

此外,还可以将 savecore 保存的故障转储发送给客户服务代表,这有助于他们分析系统崩溃的原因。

dumpadm 命令

使用 dumpadm 命令可以管理 Oracle Solaris OS 中的系统故障转储信息。

下表介绍了 dumpadm 的配置参数。

转储参数 

说明 

转储设备 

在系统崩溃时临时存储转储数据的设备。当转储设备不是交换区域时,savecore 将在后台运行,这样可以加快引导过程进行的速度。

savecore 目录

存储系统故障转储文件的目录。 

转储内容 

要转储的内存数据的类型。  

最小空闲空间 

保存故障转储文件后 savecore 目录中所需的最小空闲空间量。如果未配置最小空闲空间,则缺省值为 1 MB。

有关更多信息,请参见 dumpadm(1M)

转储配置参数由 dumpadm 命令管理。

dumpadm 命令的工作原理

在系统启动过程中,svc:/system/dumpadm:default 服务调用 dumpadm 命令以配置故障转储参数。

具体地说,dumpadm 通过 /dev/dump 接口来初始化转储设备和转储内容。

完成转储配置后,savecore 脚本会查找故障转储文件目录的位置。然后,会调用 savecore 来检查故障转储,并检查故障转储目录中 minfree 文件的内容。

转储设备和卷管理器

由于可访问性和性能原因,请不要配置受卷管理产品(例如 Solaris Volume Manager)控制的专用转储设备。可以使交换区域受 Solaris Volume Manager 控制,这是推荐的做法,但应使转储设备保持独立。