Linuxwatchdog如何正确配置?(linuxwatchdog配置)

Linux Watchdog如何正确配置?

成都创新互联公司一直通过网站建设和网站营销帮助企业获得更多客户资源。 以"深度挖掘,量身打造,注重实效"的一站式服务,以成都网站设计、成都网站建设、移动互联产品、成都全网营销服务为核心业务。十余年网站制作的经验,使用新网站建设技术,全新开发出的标准网站,不但价格便宜而且实用、灵活,特别适合中小公司网站制作。网站管理系统简单易用,维护方便,您可以完全操作网站资料,是中小公司快速网站建设的选择。

随着现代计算机的不断发展,计算机系统的可靠性和稳定性也得到了不断提高。然而,即使是最为高端的计算机系统,也难免会出现一些突发的故障或崩溃情况。为了避免这种情况的发生,Linux内嵌有一项非常有用的工具——Watchdog,它可以监视系统状态、检测故障并自动重启系统。

在本文中,我们将着重探讨——Linux Watchdog如何正确配置。

一、Watchdog是什么?

Watchdog(或者叫看门狗,是一种硬件和软件结合的机制。它可以在系统异常的时候自动重启系统,从而避免由异常引起的整个系统崩溃。Watchdog常常被应用于数据中心、服务器等对系统稳定性要求较高的场景中。

Watchdog的精髓在于它可以自动侦测系统是否有异常。它可以监视软件运行状态、系统硬件状态、外部设备的连通性等,以此来确定系统是否正常运行。如果在预定义的时间内没有收到系统的“正常应答”,那么就会由Watchdog自动发起操作来重启系统。

二、如何在Linux系统上配置Watchdog?

要在Linux系统上配置Watchdog,需要经过以下步骤:

1. 检查Linux内核是否支持Watchdog

不是所有的内核都支持Watchdog,因此要确保当前的Linux内核支持Watchdog。在Linux内核的配置文件中可以找到这个选项。开启这个选项的方法是:首先使用cd命令进入linux内核的源代码目录,然后使用make menuconfig命令打开脚本配置工具,找到“Kernel Hacking”菜单下的“Watchdog Timer Support”选项,打开它并配置好相关参数。最终通过”save”命令完成配置。如果Watchdog Timer Support选项没有被促进,说明系统内核不支持Watchdog。

2. 检查是否已经安装Watchdog软件

在Linux系统中,我们需要一个工具来与硬件Watchdog进行通信,已知的工具有wdctl、wdkeepalive、watchdog等。其中,watchdog是一个比较流行的Watchdog工具,这里我们主要介绍watchdog的安装和配置。

使用命令sudo apt-get install watchdog或sudo yum install watchdog进行安装。此外,如果要启用watchdog服务,可以先使用sudo systemctl start watchdog并检查其状态。

3. 配置Watchdog

Watchdog的配置文件一般位于/etc/watchdog.conf中,其中配置很多,比如Watchdog Timer Driver的选择,向系统发送重启信号的时间阈值、检测系统状态的时间间隔等等。最常见的配置选项是:

watchdog-device: 这个选项指定Watchdog设备。在大多数情况下,Watchdog设备都是/dev/watchdog。

watchdog-timeout: 这个选项设定了信号的阈值时间,也就是在多长时间内没有收到系统的响应信号,Watchdog就会发生情况。单位是秒。

watchdog-core使用默认定义的内核。

4. 启动Watchdog

要启动Watchdog,一般有两种方式。

一是使用命令sudo systemctl start watchdog启动Watchdog服务。通过命令sudo systemctl status watchdog可以查看服务的状态。

二是在主机引导阶段,通过在/boot/grub/grub.conf文件中添加类似watchdog=60的选项来启动Watchdog(注意这里的时间是watchdog-timeout的值)。

5. 检查Watchdog功能是否正确

一旦完成了配置和启动Watchdog,就要检查其是否正常工作。有很多方式可以检查这个功能,比如说重新编译内核并给Watchdog发送信号来进行测试,或者等待系统自动重启以验证它是否起作用。

另一个常用的测试工具是watchdog-test,它会产生Watchdog信号,以测试系统是否自动重启。

三、注意事项

– Watchdog不是理想守卫。某些可能出现的临界条件、缓慢地失败条件或者非正常系统强制关闭等异常情况,都是Watchdog难以应对的。

– Watchdog的时间周期要尽量不要太短,不然会产生大量的Watchdog重置,从而增加了CPU的负载。

– Watchdog服务不能开启在不受控制的环境中。否则可能会被恶意利用,发起攻击。

– Watchdog服务需要定期进行检查和维护。例如,如果Watchdog服务在不正常的情况下被关闭,那么整个系统可能会失去保护。

综上所述,在Linux系统上使用Watchdog可以提高系统的可靠性和稳定性,可以一定程度避免出现系统故障和崩溃等问题。正确配置Watchdog,既可以提高系统的安全性和稳定性,又可以避免一些不必要的麻烦,有着重要的作用。

相关问题拓展阅读:

  • Linux下如何写可重启的多线程子系统

Linux下如何写可重启的多线程子系统

在开发内核模块或驱动时,如果处理失误,导致内核线程中出现死锁或者死循环,你会发现,除了重启之外,你没有任何可以做的。这时你的输入不起任何作用,终端(不是指远程的ssh工具)只会在那重复的输出类似“BUG: soft lockup – CPU#0 stuck for 67s! ”,更无奈的是你重启之后导致系统挂起的堆栈信息也看不到,你所能做的就是一遍遍的加调试信息,一遍遍的重启机器(这是我的经历,现在想想很傻)。

这种情况你肯定不是之一个遇到的,所以内核肯定会提供处理这种情况的一些机制。但是如何来找到这些机制在哪个地方,或者说根据什么信息去google呢?最有用的就是这句话“BUG: soft lockup – CPU#0 stuck for 67s! ”,因为这句话提供你的信息量很大。首先,这条信息可以输出,说明即使发生死锁或者死循环,还是有代码可以执行。第二,可以通过这个日志信息,找到对应的处理函数,这个函数所在的模块就是用来处理CPU被过度使用时用到的。所以通过这个事情,可以看到内核打印出的只言片语都有可能成为你解决问题的关键,一定要从重视这些信息,从中找出有用的东西。

我经常看的内核版本是官方的2.6.32内核,这个察悔纤版本中我找到的函数是softlockup_tick(),这个函数在时钟中断的处理函数run_local_timers()中调用。这个函数会首先检查watchdog线程是否被挂起,如果不是watchdog线程,会检查当前占有CPU的线程占有的时间是否超过系统配置的阈值,即softlockup_thresh。如果当前占有CPU的时间过长,则会在系统日志中输出我们上面看到的那条日志。接下来才是最关键的,就是输出模块信息、寄存器信息和堆前辩栈信息,检查softlockup_panic的值是否为1。如果softlockup_panic为1,则调用panic()让内核挂起,输出OOPS信息。代码如下所示:/** This callback runs from the timer interrupt, and checks

* whether the watchdog thread has hung or not:*/void softlockup_tick(void){int this_cpu = p_processor_id();

unsigned long touch_timestamp = per_cpu(touch_timestamp, this_cpu);

unsigned long print_timestamp;

struct pt_regs *regs = get_irq_regs();

unsigned long now;

/* Warn about unreasonable delays: */

if (now

per_cpu(print_timestamp, this_cpu) = touch_timestamp;

spin_lock(&print_lock);

printk(KERN_ERR BUG: soft lockup – CPU#%d stuck for %lus! \n,

this_cpu, now – touch_timestamp,

current-comm, task_pid_nr(current));

print_modules();

print_irqtrace_events(current);if (regs)show_regs(regs);elsedump_stack();

spin_unlock(&print_lock);

if (softlockup_panic)

panic(softlockup: hung tasks);}

但是softlockup_panic的值默认竟然是0,所以在出现死锁或者死循环的时候,会一直只输出日志信息,而不会宕机,这个真是好坑啊!所以你得手动修改/proc/sys/kernel/softlockup_panic的值,让内核可以在死锁或者败仿死循环的时候可以宕机。如果你的机器中安装了kdump,在重启之后,你会得到一份内核的core文件,这时从core文件中查找问题就方便很多了,而且再也不用手动重启机器了。如果你的内核是标准内核的话,可以通过修改/proc/sys/kernel/softlockup_thresh来修改超时的阈值,如果是CentOS内核的话,对应的文件是/proc/sys/kernel/watchdog_thresh。CentOS内核和标准内核还有一个地方不一样,就是处理CPU占用时间过长的函数,CentOS下是watchdog_timer_fn()函数。

这里介绍下lockup的概念。lockup分为soft lockup和hard lockup。 soft lockup是指内核中有BUG导致在内核模式下一直循环的时间超过10s(根据实现和配置有所不同),而其他进程得不到运行的机会。hard softlockup是指内核已经挂起,可以通过watchdog这样的机制来获取详细信息。这两个概念比较类似。如果你想了解更多关于lockup的信息,可以参考这篇文档:

注意上面说的这些,都是在内核线程中有效,对用户态的死循环没用。如果要监视用户态的死循环,或者内存不足等资源的情况,强烈推荐软件层面的watchdog。具体的操作可以参考下面的文章,都写的非常好,非常实用:

成都创新互联建站主营:成都网站建设、网站维护、网站改版的网站建设公司,提供成都网站制作成都网站建设、成都网站推广、成都网站优化seo、响应式移动网站开发制作等网站服务。

网页名称:Linuxwatchdog如何正确配置?(linuxwatchdog配置)
文章来源:http://www.gawzjz.com/qtweb/news9/172409.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联