手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

dumpadm(1M)

名称

dumpadm - 配置操作系统的故障转储

用法概要

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

描述

dumpadm 程序是管理操作系统故障转储工具配置的管理命令。故障转储是指发生严重系统错误时对计算机物理内存的磁盘复制。当发生严重操作系统错误时,会在控制台上输出描述错误的消息。然后操作系统通过将物理内存的内容写入预定的转储设备(通常为本地磁盘分区)来生成故障转储文件。转储设备可以通过 dumpadm 进行配置。将故障转储文件写入转储设备之后,系统将重新引导。

严重的操作系统错误可能因操作系统、其关联的设备驱动程序和可装入的模块中的错误,或有故障的硬件而造成。不管原因是什么,故障转储本身都可为您的支持工程师提供宝贵的信息以帮助其诊断问题。因此,请务必检索故障转储并将其提供给您的支持提供商。操作系统发生故障之后,引导期间将自动执行 savecore(1M) 实用程序从转储设备检索故障转储,并将其以压缩格式写入您的文件系统,文件名为 vmdump.X,其中 X 是用于识别转储的整数。之后,可以在相同系统或其他系统上调用 savecore(1M) 以将压缩的故障转储展开为名为 unix.Xvmcore.X 的一对文件。可以使用 dumpadm 配置重新引导时保存故障转储的目录。

对于采用 UFS 根文件系统的系统,缺省转储设备将配置为相应的交换分区。交换分区是作为操作系统的虚拟内存后备存储而保留的磁盘分区。因此,交换分区中不会有可被转储覆盖的永久信息。请参见 swap(1M)。对于采用 ZFS 根文件系统的系统,专用的 ZFS 卷将用于交换区域和转储区域。有关设置采用 ZFS 的转储区域的详细信息,请参见《Oracle Solaris ZFS 管理指南》。要查看当前的转储配置,请使用不带参数的 dumpadm 命令:

example# dumpadm

      Dump content: kernel pages
       Dump device: /dev/dsk/c0t0d0s1 (swap)
Savecore directory: /var/crash
  Savecore enabled: yes
   Save compressed: yes

当未指定选项时,dumpadm 显示当前的故障转储配置。上面的示例显示了缺省值集:转储内容设置为仅限内核内存页面,转储设备是交换磁盘分区,savecore 文件的目录设置为 /var/crash/savecore 设置为重新引导时自动运行,并以压缩格式保存故障转储。

当指定一个或多个选项时,dumpadm 将验证您的更改是否有效,如果有效,将重新配置故障转储参数并显示生成的配置。您必须是 root 用户才能查看或更改转储参数。

系统安装时,dumpadm 会根据内核内存和其他内部信息建立足够大的转储设备,以容纳转储文件。如果您随后尝试创建的转储设备太小而无法存储转储文件,那么 dumpadm 将发出错误消息并且操作失败。

选项

支持以下选项:

–c content-spec

修改转储配置以便故障转储包含指定的转储内容。content-spec 包含可选的内容类型和内容修饰符:

[ content-type ] [ content-modifier | -content-modifier.. ]

content-type 提供基础,内容修饰符进一步更改要转储的内容。如果包含 +,内容修饰符将添加要转储的额外数据,如果包含 -,将忽略相应数据。

内容类型可以是以下类型之一:

kernel

仅内核内存页面。请注意,这仅包含基本的内核页面集,即,不包含可以使用内容修饰符指定的页面。

all

所有内存页面。请注意,生成的转储将包含用于文件系统缓冲区的页面。

curproc

内核内存页面(如通过 'kernel' 指定)以及其线程当前在启动故障转储的 CPU 上执行的进程的内存页面。如果在该 CPU 上执行的线程是内核线程,不与任何用户进程关联,则仅转储内核页面。

allproc

内核内存页面(如通过 'kernel' 指定)以及所有进程页面。

content-modifier 可以为以下值之一:

zfs

存储 ZFS 元数据的内核页面。

content-modifier 影响内核内存的哪些部分将被转储以及哪些不会被转储。当设置 'all' 内容类型时,内容修饰符不会产生任何效果。

如果未指定 content-type,则会修改当前配置的内容类型。

–d dump-device

修改转储配置以使用指定的转储设备。转储设备可以是下列之一:

dump-device

当系统运行 UFS 根文件系统时,指定为绝对路径名(例如 /dev/dsk/cNtNdNsN)的特定转储设备。当系统运行 ZFS 根文件系统时,指定 ZFS 卷(例如 /dev/zvol/dsk/rpool/dump)。

swap

如果将特殊标记 swap 指定为转储设备,dumpadm 会检查活动交换条目,然后选择最合适的条目将其配置为转储设备。请参见 swap(1M)。有关用于选择合适交换条目的算法的详细信息,请参见下文的“附注”部分。当系统首次安装 UFS 根文件系统时,dumpadm 使用 swap 的值确定初始转储设备设置。一个给定的 ZFS 卷不能同时配置为交换区域和转储设备。

–e

输出存储压缩的故障转储所需的磁盘空间估计值。该值是使用当前配置和当前运行的系统计算的。

–m mink | minm | min%

在当前的 savecore 目录中创建 minfree 文件,指示 savecore 在 savecore 目录所在的文件系统中至少应保留指定大小的可用空间。min 参数可以为下列值之一:

k

后缀为单位 k 的正整数,用于指定千字节值。

m

后缀为单位 m 的正整数,用于指定兆字节值。

%

% 符号,指示应按照 savecore 目录所在文件系统的当前总大小乘以指定百分比来计算 minfree 值。

savecore 命令将在写入转储文件之前查询 minfree 文件(如果有)。如果这些文件的大小会使可用磁盘空间大小减少到 minfree 阈值之下,那么将不写入转储文件,并且会记录错误消息。管理员应立即清理 savecore 目录以提供足够的可用空间,然后手动重新执行 savecore 命令。管理员也可以在 savecore 命令行上指定备用目录。

–n

修改转储配置以在重新引导时不自动运行 savecore。这不是建议的系统配置;如果转储设备是交换分区,那么当系统开始交换时,将覆盖转储数据。如果引导后没有立即执行 savecore,那么可能无法检索故障转储。

–p

生成计算机可解析的输出。

–r root-dir

指定 dumpadm 应相对于哪个备用根目录创建文件。如果未指定 –r 参数,则使用缺省的根目录 /

–s savecore-dir

修改转储配置以使用指定的目录保存 savecore 写入的文件。目录应采用绝对路径形式,且该目录应存在于系统上。如果重新引导时该目录不存在,那么将在执行 savecore 之前创建该目录。有关访问 savecore 目录的安全问题的讨论,请参见下文的“附注”部分。缺省 savecore 目录为 /var/crash/

–u

根据 /etc/dumpadm.conf 的内容强制更新内核转储配置。通常此选项仅在必须恢复之前引导中的 dumpadm 设置的情况下使用,此选项在重新引导时启动 svc:/system/dumpadm:default 时使用。您的转储配置保存在配置文件中以实现此目的。如果缺少配置文件或配置文件中有任何无效的转储属性值,则替换成缺省值。更新后,将重新同步配置文件与内核转储配置。

–y

修改转储配置以在重新引导时自动运行 savecore。这是此转储设置的缺省值。请参见“附注”部分

–z on | off

修改转储配置以控制重新引导时 savecore 的运行方式。选项为 on 时允许以压缩格式保存核心文件,为 off 时自动解压缩故障转储文件。缺省值为 on,因为故障转储文件可能会非常大,如果以压缩格式保存,所需的文件系统空间较少。

示例

示例 1 将转储设备重新配置为专用的转储设备

以下命令可将转储设备重新配置为专用的转储设备:


example# dumpadm -d /dev/zvol/dsk/rpool/wasteland
                   Dump content: kernel pages with ZFS metadata
                    Dump device: /dev/zvol/dsk/rpool/wasteland (dedicated)
             Savecore directory: /var/crash
               Savecore enabled: yes
                Save compressed: on

示例 2 重新配置转储设备以存储进程页面

以下命令将存储出现紧急情况时其线程正在 CPU 上执行的进程页面,并避免存储包含 ZFS 元数据的内核页面:


example# dumpadm -c curproc-zfs
                   Dump content: kernel and current process pages without ZFS metadata
                    Dump device: /dev/zvol/dsk/rpool/wasteland (dedicated)
             Savecore directory: /var/crash
               Savecore enabled: yes
                Save compressed: on

退出状态

将返回以下退出值:

0

转储配置有效,并且已成功进行指定的修改(如果有)。

1

获取或修改转储配置时发生致命错误。

2

指定的命令行选项无效。

文件

/dev/dump

转储设备。

/etc/dumpadm.conf

包含 dumpadm 的配置参数。仅可以通过该命令进行修改。

savecore-directory/minfree

包含 savecore-directory 的最小可用空间大小。请参见 savecore(1M)

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os

另请参见

svcs(1)uname(1)savecore(1M)svcadm(1M)swap(1M)attributes(5)smf(5)

附注

系统故障转储服务由服务管理工具 smf(5) 管理,其服务标识符为:

svc:/system/dumpadm:default

可以使用 svcadm(1M) 来对此服务执行管理操作(如启用、禁用或请求重新启动)。可以使用 svcs(1) 命令来查询服务的状态。

转储设备选择

将特殊标记 swap 指定为 dumpadm –d 的参数时,实用程序会尝试将最适合的交换设备配置为转储设备。dumpadm 将最大的交换块设备配置为转储设备;如果没有可用于交换的块设备,那么将最大的交换条目配置为转储设备。如果不存在交换条目,或者交换条目都不能配置为转储设备,那么将显示警告消息。虽然本地和远程交换文件可以配置为转储设备,但是不建议这样做。

转储设备/交换设备交互(仅限 UFS 文件系统)

在转储设备同时为交换设备的情况下,如果管理员使用 swap –d 命令删除交换设备,那么 swap 命令将自动调用 dumpadm –d swap 以尝试将其他合适的交换设备配置为转储设备。如果没有其他交换设备或者其他交换设备都不能配置为转储设备,那么将禁用故障转储并显示警告消息。类似地,如果故障转储处于禁用状态,并且管理员使用 swap –a 命令添加新的交换设备,那么将调用 dumpadm –d swap 以使用新的交换设备重新启用故障转储。

发出 dumpadm –d swap 命令后,会将新的转储设备存储在配置文件中以用于之后的重新引导。如果管理员添加了更大的或更适合的交换设备,转储设备不会发生更改;管理员必须重新执行 dumpadm –d swap 以从新的交换设备列表中重新选择最适合的设备。

最小可用空间

使用 dumpadm –m 选项基于 savecore 目录所在文件系统总大小的百分比创建 minfree 文件时,如果在之后更改了文件系统大小,并不会自动重新计算该值。在这种情况下,管理员必须重新执行 dumpadm –m 以重新计算 minfree 值。如果 savecore 目录中不存在此类文件,那么 savecore 将可用空间阈值的缺省值设置为 1 兆字节。如果不需要可用空间阈值,那么可以创建大小设置为 0 的 minfree 文件。

安全问题

如果重新引导时指定的 savecore 目录不存在,那么将在执行 savecore 之前使用 0700 权限(仅允许所有者读取、写入和执行)和 root 所有者权限创建该目录。建议也使用类似的权限创建备用 savecore 目录,因为操作系统故障转储文件本身可能包含安全信息。

savecore 的缺省值

系统安装软件可能会保留专用的转储设备(例如,某个磁盘分片或 ZFS 卷)。在这种情况下,dumpadm 缺省值可以设置为 –n,表示 savecore 在系统重新引导时不自动运行。故障映像将保留在转储设备上。以 root 用户身份手动运行 /usr/bin/savecore 可检索故障映像并将其复制到 /var/crash 下的一组文件中。故障映像将保留在转储设备上,直到被后一个映像所覆盖。