6.6. 测试故障转储机制
![]()
测试故障转储机制将导致 系统重启。 在某些情况下,如果系统负载过重,这可能会导致数据丢失。 如果要测试该机制,请确保系统处于空闲状态或处于非常轻的负载下。
验证 系统请求 通过查看的值启用机制 / proc / sys /内核/ sysrq 内核参数:
cat / proc / sys /内核/ sysrq
如果一个值为 0 返回转储,然后重新启动功能被禁用。 值大于 1 表示启用了 sysrq 功能的子集。 看 /etc/sysctl.d/10-magic-sysrq.conf 有关选项和默认值的详细说明。 启用转储,然后使用以下命令重新启动测试:
须藤 sysctl -w kernel.sysrq=1
完成此操作后,您必须成为 root,就像使用 须藤 将是不够的。 作为 根 用户,您将不得不发出命令 echo c > /proc/sysrq-trigger. 如果您使用网络连接,您将失去与系统的联系。 这就是为什么最好在连接到系统控制台时进行测试。
这具有使内核转储过程可见的优点。 典型的测试输出应如下所示:
sudo -s
[sudo] ubuntu 密码:
# echo c > /proc/sysrq-trigger
[ | 31.659002] | SysRq : 触发崩溃 |
[ | 31.659749] | BUG:无法处理内核空指针取消引用 |
[ | 31.662668] | IP: [<ffffffff8139f166>] sysrq_handle_crash+0x16/0x20 |
[ | 31.662668] | PGD 3bfb9067 PUD 368a7067 PMD 0 |
[ | 31.662668] | 糟糕:0002 [#1] SMP |
[ | 31.662668] | CPU 1 |
[ | 31.659002] | SysRq : 触发崩溃 |
[ | 31.659749] | BUG:无法处理内核空指针取消引用 |
[ | 31.662668] | IP: [<ffffffff8139f166>] sysrq_handle_crash+0x16/0x20 |
[ | 31.662668] | PGD 3bfb9067 PUD 368a7067 PMD 0 |
[ | 31.662668] | 糟糕:0002 [#1] SMP |
[ | 31.662668] | CPU 1 |
(空值)
....
输出的其余部分被截断,但您应该看到系统重新启动,并且在日志中的某处,您将看到以下行:
开始:从内核崩溃中保存 vmcore ...
完成后,系统将重新启动到其正常操作模式。 然后,您将在 Kernel Crash Dump 文件和相关子目录中找到 /var/崩溃 目录 :
ls /var/崩溃
201809240744 kexec_cmd linux-image-4.15.0-34-generic-201809240744.crash
如果转储由于 OOM(内存不足)错误而不起作用,请尝试通过编辑增加保留内存量 /etc/default/grub.d/kdump-tools.cfg. 例如,要保留 512 兆字节:
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT 崩溃内核=384M-:512M"
运行 sudo update-grub 然后重新启动,然后再次测试。
文件记录