系统管理指南:高级管理

管理系统故障转储信息

在处理系统故障转储信息时,请记住以下几点重要内容:

Procedure如何显示当前的故障转储配置

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 显示当前的故障转储配置。


    # dumpadm
    Dump content: kernel pages
    Dump device: /dev/dsk/c0t3d0s1 (swap)
    Savecore directory: /var/crash/venus
     Savecore enabled: yes
      Saved compressed: on

    前面的示例输出表明:

    • 转储内容是内核内存页面。

    • 内核内存将在交换设备 /dev/dsk/c0t3d0s1 中转储。使用 swap -l 命令可以确定所有交换区域。

    • 系统故障转储文件将写入 /var/crash/venus 目录。

    • 已启用故障转储文件的保存。

    • 以压缩格式保存故障转储。

Procedure如何修改故障转储配置

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 确定当前的故障转储配置。


    # dumpadm
          Dump content: kernel pages
           Dump device: /dev/dsk/c0t3d0s1 (swap)
    Savecore directory: /var/crash/pluto
     Savecore enabled: yes
    	 Save commpressed: on

    此输出标识了运行 Oracle Solaris 10 发行版的系统的缺省转储配置。

  3. 修改故障转储配置。


    #  /usr/sbin/dumpadm  [-nuy] [-c content-type] [-d dump-device] [-m mink | minm | min%]
    [-s savecore-dir] [-r root-dir] [-z on | off]
    -c content

    指定要转储的数据类型。使用 kernel 转储所有内核内存,使用 all 转储所有内存,或使用 curproc 转储内核内存以及在发生崩溃时其线程正在执行的进程的内存页面。缺省转储内容是内核内存。

    -d dump-device

    指定在系统崩溃时临时存储转储数据的设备。主交换设备是缺省转储设备。

    -m nnnk | nnnm | nnn%

    通过在当前的 savecore 目录中创建 minfree 文件,指定用于保存故障转储文件的最小空闲磁盘空间。可以 KB (nnnk)、MB (nnnm) 或文件系统大小百分比 (nnn%) 的形式指定此参数。savecore 命令会在写入故障转储文件之前访问此文件。如果写入故障转储文件(根据大小)会减少空闲空间量并使其低于 minfree 阈值,则不写入转储文件,并记录一条错误消息。有关从此情况中恢复的信息,请参见如何从完整的故障转储目录中恢复(可选)

    -n

    指定重新引导系统时不应运行 savecore。不推荐使用此转储配置。如果已将系统故障转储信息写入交换设备并且未启用 savecore,则系统开始交换时将覆写故障转储信息。

    -s

    指定用于存储故障转储文件的备用目录。缺省目录为 /var/crash/hostname,其中 hostnameuname -n 命令的输出。

    -u

    强制更新基于 /etc/dumpadm.conf 文件内容的内核转储配置。

    -y

    修改转储配置以在重新引导时自动执行 savecore 命令,即此转储设置的缺省值。

    -z on | off

    修改转储配置以控制重新引导时 savecore 命令的操作。on 设置允许以压缩格式保存核心转储文件。off 设置会自动解压缩故障转储文件。由于故障转储文件可能非常大,而以压缩格式保存需要的文件系统空间较少,因此默认值为 on


示例 17–1 修改故障转储配置

在此示例中,所有内存都会转储到专用转储设备 /dev/dsk/c0t1d0s1 中,并且在保存故障转储文件后必须可用的最小空闲空间为文件系统空间的 10%。


# dumpadm
      Dump content: kernel pages
       Dump device: /dev/dsk/c0t3d0s1 (swap)
Savecore directory: /var/crash/pluto
  Savecore enabled: yes
   Save compressed: on
 # dumpadm -c all -d /dev/dsk/c0t1d0s1 -m 10%
      Dump content: all pages
       Dump device: /dev/dsk/c0t1d0s1 (dedicated)
Savecore directory: /var/crash/pluto (minfree = 77071KB)
  Savecore enabled: yes
    Save compressed: on

Procedure如何检查故障转储

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 使用 mdb 实用程序检查故障转储。


    # /usr/bin/mdb [-k] crashdump-file
    
    -k

    通过假定文件为操作系统故障转储文件来指定内核调试模式。

    crashdump-file

    指定操作系统故障转储文件。

  3. 显示崩溃状态信息。


    # /usr/bin/mdb file-name
    > ::status
       .
       .
       .
    > ::system
       .
       .
       .

示例 17–2 检查故障转储

以下示例显示 mdb 实用程序的样例输出,其中包括系统信息,并列出在此系统的 /etc/system 文件中设置的可调参数。


# /usr/bin/mdb -k unix.0 
Loading modules: [ unix krtld genunix ip nfs ipc ptm ]
> ::status
debugging crash dump /dev/mem (64-bit) from ozlo
operating system: 5.10 Generic (sun4u)
> ::system
set ufs_ninode=0x9c40 [0t40000]
set ncsize=0x4e20 [0t20000]
set pt_cnt=0x400 [0t1024]

Procedure如何从完整的故障转储目录中恢复(可选)

在此情况下,系统崩溃,但 savecore 目录中没有任何可用空间,并且您要保存一些关键的系统故障转储信息。

  1. 系统重新引导后,以超级用户身份登录或成为同等角色。

  2. 通过删除已发送给服务提供商的现有故障转储文件来清除 savecore 目录,通常为 /var/crash/hostname

    • 或者,手动运行 savecore 命令以指定拥有足够磁盘空间的备用目录。


      # savecore [ directory ]

Procedure如何禁用或启用故障转储的保存

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 在系统中禁用或启用故障转储的保存。


    # dumpadm -n | -y
    

示例 17–3 禁用故障转储的保存

此示例说明如何在系统中禁用故障转储的保存。


# dumpadm -n
      Dump content: all pages
       Dump device: /dev/dsk/c0t1d0s1 (dedicated)
Savecore directory: /var/crash/pluto (minfree = 77071KB)
  Savecore enabled: no
   Save Compressed: on


示例 17–4 启用故障转储的保存

此示例说明如何在系统中启用故障转储的保存。


# dumpadm -y
      Dump content: all pages
       Dump device: /dev/dsk/c0t1d0s1 (dedicated)
Savecore directory: /var/crash/pluto (minfree = 77071KB)
  Savecore enabled: yes
   Save compressed: on