系统崩溃可能是由于存在硬件故障、I/O 问题和软件错误而引起的。如果系统崩溃,则会在控制台中显示一条错误消息,然后向转储设备中写入物理内存的副本。然后,将自动重新引导系统。系统重新引导时,将执行 savecore 命令以从转储设备检索数据并将保存的故障转储文件写入 savecore 目录。保存的故障转储文件可向您的支持服务提供商提供宝贵的信息,从而辅助诊断问题。
故障转储信息以压缩格式写入 vmdump. n 文件中,其中 n 是标识故障转储的一个整数。随后,可在同一系统或其他系统中调用 savecore 命令以将压缩的故障转储文件扩展为名为 unix. n 和 vmcore.n 的文件对。还可以使用 dumpadm 命令配置重新引导时保存故障转储文件的目录。
对于具有 UFS 根文件系统的系统,缺省转储设备配置为相应的交换分区。交换分区是保留为操作系统虚拟内存备份存储的磁盘分区。因此,永久信息不会位于将被故障转储覆写的交换分区中。对于具有 Oracle Solaris ZFS 根文件系统的系统,专用的 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 交换区域或转储区域,可以像在先前的发行版中那样使用 swap 或 dumpadm 命令。
有关本文档中管理转储设备的信息,请参见管理系统故障转储信息。
如果在 GRUB 引导环境中基于 x86 的系统发生系统崩溃,则管理 GRUB 引导归档文件的 SMF 服务 svc:/system/boot-archive:default 可能在下一次系统重新引导时失败。有关基于 GRUB 进行引导的更多信息,请参见《系统管理指南:基本管理》中的“使用 GRUB 引导基于 x86 的系统(任务图)”。
savecore 命令在系统崩溃后自动运行,以便从转储设备检索故障转储信息,并写入名为 unix.X 和 vmcore.X 的两个文件,其中 X 标识转储序列号。这些文件共同表示保存的系统故障转储信息。
故障转储文件有时容易与核心转储文件混淆,后者是在应用程序异常终止时写入的用户应用程序的映像。
故障转储文件保存在预先确定的目录中,该目录缺省为 /var/crash/hostname。在先前的发行版中,除非手动使系统将物理内存的映像保存到故障转储文件中,否则系统重新引导时会覆写故障转储文件。现在,缺省情况下便可保存故障转储文件。
使用 dumpadm 命令可以管理系统故障转储信息。有关更多信息,请参见dumpadm 命令。
使用 mdb 实用程序可以检查控制结构、活动表、正常运行或崩溃的系统内核的内存映像,以及有关内核运行的其他信息。要最大程度地发挥 mdb 的作用,需要具备有关内核的详细知识,这超出了本手册的范围。有关使用此实用程序的信息,请参见 mdb(1) 手册页。
此外,还可以将 savecore 保存的故障转储发送给客户服务代表,这有助于他们分析系统崩溃的原因。
使用 dumpadm 命令可以管理 Oracle Solaris OS 中的系统故障转储信息。
使用 dumpadm 命令可以配置操作系统的故障转储。dumpadm 配置参数包括转储内容、转储设备和保存故障转储文件的目录。
转储数据以压缩格式存储在转储设备中。内核故障转储映像的大小可以是 4 GB 或更大。压缩数据意味着转储速度更快,且转储设备所需的磁盘空间更小。
当专用转储设备(而不是交换区域)属于转储配置的一部分时,会在后台运行故障转储文件的保存。这意味着引导系统不等待 savecore 命令完成,便转到下一步。在较大的内存系统中,可在 savecore 完成前使用系统。
缺省情况下,会保存 savecore 命令生成的系统故障转储文件。
savecore -L 命令是一个新增功能,通过该功能可以获取当前运行的 Oracle Solaris OS 的故障转储。此命令用于通过在某些发生故障的状态下(例如瞬态性能问题或服务故障)捕获内存快照,对正在运行的系统进行故障排除。如果系统已启动,并且您仍可以运行一些命令,则可执行 savecore -L 命令将系统快照保存到转储设备,然后立即将故障转储文件写入 savecore 目录。由于系统仍在运行,因此如果配置了专用转储设备,则只能使用 savecore -L 命令。
转储参数 |
说明 |
---|---|
转储设备 |
在系统崩溃时临时存储转储数据的设备。当转储设备不是交换区域时,savecore 将在后台运行,这样可以加快引导过程进行的速度。 |
savecore 目录 |
存储系统故障转储文件的目录。 |
转储内容 |
要转储的内存数据的类型。 |
最小空闲空间 |
保存故障转储文件后 savecore 目录中所需的最小空闲空间量。如果未配置最小空闲空间,则缺省值为 1 MB。 |
有关更多信息,请参见 dumpadm(1M)。
转储配置参数由 dumpadm 命令管理。
在系统启动过程中,svc:/system/dumpadm:default 服务调用 dumpadm 命令以配置故障转储参数。
具体地说,dumpadm 通过 /dev/dump 接口来初始化转储设备和转储内容。
完成转储配置后,savecore 脚本会查找故障转储文件目录的位置。然后,会调用 savecore 来检查故障转储,并检查故障转储目录中 minfree 文件的内容。
由于可访问性和性能原因,请不要配置受卷管理产品(例如 Solaris Volume Manager)控制的专用转储设备。可以使交换区域受 Solaris Volume Manager 控制,这是推荐的做法,但应使转储设备保持独立。