Fork me on GitHub

daydayup863

人生就像一杯茶,不会苦一辈子,但总会苦一阵子。

0%

内核Softdog测试

Watchdog的功能

Linux内核watchdog于监视系统是否正在运行。由于存在不可恢复的软件错误,应该自动重新启动挂起的系统。

看门狗模块特依赖所使用的硬件或芯片。个人计算机用户通常不需要看门狗,因为他们可以手动重置系统。但是,watchdog对于任务关键型系统和需要无需人工干预即可自行重启的系统很有用。

例如,需要自动硬件重置功能的远程位置的服务器。

Watchdog的实现

看门狗功能设置了一个计时器在预定时间后超时。然后看门狗软件定期喂狗(刷新硬件计时器)。如果停止喂狗,到达设定时间后,将会出现狗咬人(执行设备的硬件重置)。

可以分为hardware watchdog 和 software watchdog。
hardware watchdog 是主板芯片的功能。不同的芯片使用不同的模块,例如:Intel 主板使用 “iTCO_wdt”, HP 通常使用 “hpwdt”,IBM 使用 “vmwatchdog”,Xen VM 使用 “xen_wdt”。
software watchdog 是Linux内核提供使用内核计时器实现的软件监视程序。

测试Linux自带watchdog

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[root@server6 ~]# ls /dev/watchdog*              #查看watchdog设备文件
/dev/watchdog /dev/watchdog0
[root@server6 ~]# lsmod |grep -i soft #查看softdog是否加载
[root@server6 ~]# modinfo softdog #查看softdog模块信息
filename: /lib/modules/3.10.0-957.10.1.el7.x86_64/kernel/drivers/watchdog/softdog.ko.xz
alias: char-major-10-130
license: GPL
description: Software Watchdog Device Driver
author: Alan Cox
retpoline: Y
rhelversion: 7.6
srcversion: 250C077ED39E75BF25AD8D1
depends:
intree: Y
vermagic: 3.10.0-957.10.1.el7.x86_64 SMP mod_unload modversions
signer: CentOS Linux kernel signing key
sig_key: 17:EA:5F:B9:16:4B:C2:26:55:5C:00:43:FA:D4:E5:86:CC:E8:A2:05
sig_hashalgo: sha256
parm: soft_margin:Watchdog soft_margin in seconds. (0 < soft_margin < 65536, default=60) (uint)
parm: nowayout:Watchdog cannot be stopped once started (default=0) (bool)
parm: soft_noboot:Softdog action, set to 1 to ignore reboots, 0 to reboot (default=0) (int)
parm: soft_panic:Softdog action, set to 1 to panic, 0 to reboot (default=0) (int)

[root@server6 ~]# modprobe softdog #加载softdog 可以设置 soft_margin soft_noboot soft_panic nowayout等参数
[root@server6 ~]# ls /dev/watchdog* #查看watchdog设备文件
/dev/watchdog /dev/watchdog0 /dev/watchdog1
[root@server6 ~]# wdctl /dev/watchdog1 #查看softdog设备文件信息
Device: /dev/watchdog1
Identity: Software Watchdog [version 0]
Timeout: 60 seconds
Pre-timeout: 0 seconds
FLAG DESCRIPTION STATUS BOOT-STATUS
KEEPALIVEPING Keep alive ping reply 1 0
MAGICCLOSE Supports magic close char 0 0
SETTIMEOUT Set timeout (in seconds) 0 0
[root@server6 ~]# ehco a >/dev/watchdog #追加除V以外任意字符到softdog 60秒后系统将重启
watchdog watchdog0 watchdog1
[root@server6 ~]# echo V >/dev/watchdog1 #取消测试

警告

1
2
3
4
5
错误的watchdog配置可能导致以下情形
无限重启
硬重置导致文件损坏
不可预测的重启
线上服务器慎用。

参考

1
https://linuxhint.com/linux-kernel-watchdog-explained/
-------------本文结束感谢您的阅读-------------
听说,打赏我的人都找到了真爱

欢迎关注我的其它发布渠道