心想事成 发表于 2005-2-27 15:05:09

一个按键用来停止系统服务器 一个看门狗监视系统服务器 硬件只是由很多有效的零件组成,您可以毫不费力地得到他们,所有的零件加起来不到5欧元 什么是看门狗?看门狗在计算机系统中是一个最忠实的可信赖的硬件,用来保证系统长久运行,您能够在火星发射器中(人们通过按复位键来发射一个人到火星上?)或者其他昂贵的装置中找到类似设备. 看门狗的使用思路很简单:计算机必须不时地对看门狗说"你好"以让看门狗知道它依然在运行,如果这种操作失败,看门狗的动作就会引起系统硬件复位。由于一个Linux服务器需要几个月不间断工作,平均大概1-2年不发生死机现象,如果您的机器每几周就会死机那么这台机器一定有异常并且看门狗不能解决问题,必须要检查使得CPU过热的错误的RAM(参见 memtest86.com),太长的IDE连接线...如果一个Linux系统能够在看门狗的监控下如此可靠地无故障运行一年,您还有什么理由不使用看门狗呢?答案很简单:看门狗让系统更可靠。就像人类解决自己的问题一样。 一台服务器无故障运行一年基本上不为人所知,如果它出了问题也没有人知道吗?那可能就是它刚好赶在圣诞节前所有人都在家里的时候死机。为了防止这些,看门狗就显得很有用. 但是看门狗不能解决所有问题,在有缺陷的硬件面前它也会显得无能为力,即使在你的系统有一个看门狗,你也应该注意确保一个良好的硬件环境(至少不应该是BIOS的BUG和芯片本身的BUG)以及适度的冷却系统。   如果使用看门狗?看门狗的设计仅仅为了保证用户区程序的运行,为了拥有一个确信的、稳定系统,您还必须监控您的应用程序(网络服务,数据库)和系统资源(磁盘空间,CPU温度)。您也可以通过其他的用户应用程序来达到目的(crontab),所有这些阐述都在LCD控制板主题,在此,我不详述了.例如:这是个小脚本它能够监控网络运行,内存交换以及磁盘应用情况。

CODE
#!/bin/shPATH=/bin:/usr/bin:/usr/local/binexport PATH## Monitor the disk# ----------------# check if any of the partitions are more than 80% full.# (crontab will automatically send an e-mail if this script# produces some output)df | egrep ' (8.%|9.%|100%) '## Monitor the swap# A server should normally be dimensioned such that it# does not swap. Swap space should therefore be constant# and limited.# ----------------# check if more than 6 Mb of swap are usedswpfree=`free | awk '/Swap:/{ print $3 }'`if expr $swpfree \> 6000 > /dev/null; then    echo "$0 warning! swap usage is now $swpfree"    echo " "    free    echo " "    ps auxwfi## Monitor the network# -------------------# your _own_ IP addr or hostname:hostn="linuxbox.your.supercomputer"#if ping -w 5 -qn -c 1 $hostn > /dev/null; then    # ok host is up    echo "0" > /etc/pingfailelse    # no answer count up the ping failures    if [ -r /etc/pingfail ]; then      pingfail=`cat /etc/pingfail`    else      # we do not handle the case where the      # pingfail file is missing      exit 0    fi    pingfail=`expr "$pingfail" "+" 1`    echo "$pingfail ping failures"    echo "$pingfail" > /etc/pingfail    if [ $pingfail -gt 10 ]; then      echo "more than 10 ping failures. System reboot..."      /sbin/shutdown -t2 -r now    fifi# --- end of monitor script ---
结合上面的这些和crontab入口来每隔15分钟运行这个脚本一次

CODE
1,15,30,45 * * * * /where/the/script/is
看门狗的硬件组成继电器并不标准,每一种产品都有他自己的设计特点,对我们的电路来说,最重要的是其内部电阻值,您可以看到下面两张图,一张为 5V,500 欧姆电阻的继电器,一组为5V,120欧姆电阻的继电器,你可以用你已有的欧姆表测量出继电器的电阻值,通过点击原理图放大查看大图.120 欧姆继电器:500 欧姆继电器:关闭按钮为一个接在RTS和CD上的轻触开关。电路图上看起来有点陌生是因为Eagle公司没有提供一个更好的图标。在这里我没有列出详细的元件清单,你可以在上面的原理图里面找到想要的一切(别忘记连接串口线的DB9插头 ),里面的二极管您可以使用任意型号的替换,如1N4148.我个人认为,500欧姆继电器的电路要好一些,因为您不需要R4和2000uF(或者2200uF)电容,电容C1只需要一个较小的1000uF电容就够了,请注意:在120欧姆的电路里你需要一个红灯,而在500欧姆电路里需要一个绿灯,这不是闹着玩的,因为绿灯的压降比红灯要大。线路板设计方面,Eagle文件和关于线路板腐蚀面的注释都在后面的软件包中Eagle CAD在Linux下的设计软件来自于 cadsoftusa.com电路是如何工作看门狗硬件电路围绕NE555时基芯片搭建,这个芯片包含两个比较器,一个RS触发器和三个5K电阻提供比较器的参考电压,只要门限引脚(6)超过2/3电源电压 就会引起RS触发器置位(状态有效)。 现在来看我们的电路图:我们利用串口的RTS引脚提供电源电压,由于RS232串口电压是+/-10V,因此,我们在电容C1前面必须要一个二极管。C1快速充放电以维持时刻提供系统能源。电阻C2则比较缓慢地通过4.7M 电阻充放电。RS232串口DTR引脚上的脉冲控制晶体管T1放掉电容C2上的电荷.如果这个脉冲没有(由于计算机死机)电容C2上的电压最终(大约40秒)就会超过2/3电源电压,从而引起RS触发器置位。 电容C1,电阻R2和LED发光管,继电器参数需要经过调试,由于让继电器快速闭合的能量来自C1,而C1提供的电流不足以让继电器长时间维持导通。我们必须通过"按下""复位"键1-2秒.来关闭继电器导通状态。 LED发光管一直保持发光直到系统在复位以后重新恢复运行. 您一定看到了原理图里面接在CD引脚上的关机按钮,只要您轻触它(保持15秒)之后驱动软件就会运行"shutdown -h now"命令并关闭系统服务器。这是给常规系统维护用的和看门狗毫无关系! 驱动软件驱动软件是一个小的C程序可以由/etc/init.d/脚本运行,它不停地翻转RS232的RTS引脚并且每隔12秒钟发送一个脉冲给DTR(看门狗的定时时间40秒),当您正常关闭计算机,程序就会关闭RTS信号并且给出最后一个DTR脉冲。这样的目的就是在超时发生之前放掉电容(C1)上的电荷.因此,正常情况下,看门狗就不会受到电流冲击。要安装这个软件请解开linuxwd-0.3.tar.gz压缩包,您可以从 文件下载链接 得到这个文件,然后解压缩运行make命令进行编译。 并且拷贝这个linuxwd可执行文件到/usr/sbin/linuxwd.编辑当前linuxwd_rc脚本(如redhat/mandrake,或者linuxwd_rc_anydist 如果是其他类型的系统),然后输入正确的串口地址(如 ttyS1=COM2 或者 ttyS0=COM1),然后拷贝这个rc脚本到 /etc/rc3.d/S21linuxwd和/etc/rc5.d/S21linuxwd即大告功成了.   系统测试当您已经焊接好了所有的元件以后,您必须在连接到计算机之前进行必要的测试。将接下来需要连接到串口RTS引脚的线接上9-10V直流电源,并且等待40-50秒钟.您就会听到继电器闭合的很轻的响声,同时发光管也会发亮。注意不能让继电器保持长时间导通。LED指示灯将会长亮,直到您把接DTR引脚的信号线接+10V。 当您经过上述检验以后,您就完全可以把它连接到电脑上去了,这个linuxwd程序有一个测试模式,在它输出一些打印信息并停留一段时间才发送脉冲给DTR,用来模拟系统死机现象,使用命令

CODE
linuxwd -t /dev/ttyS0
让 linuxwd 运行在测试模式 (使用 /dev/ttyS1 如果您的硬件连接在COM2上). 硬件安装 RS232接口信号如下:计算机方向的 9 针D型插头。线路板安装到RS232串口的时候一定要正,您必须先通过查找计算机的复位按钮来查找系统复位线,并且把它连接到继电器的输出端,继电器的输出端并联在复位按钮上。结论看门狗不是100%保证系统的稳定,但是,它会提高系统的安全性能,最主要的问题是在系统硬件复位以后,文件系统如何找到没有完成的工作的位置,最新的日志文件或许可以帮忙,但是我没有试图进行论述。这里介绍的看门狗非常便宜,也不难制作并且几乎和大部分商品一样好。linuxwd 驱动程序: 程序下载页面 NE555 数据手册NE555.pdf 140K

analyst 发表于 2005-2-27 15:14:30

老外的动手能力强啊!

DreamCat 发表于 2005-2-27 15:19:35

linuxfocus 上的好东东,可以扩展做很多事情的。有兴趣的玩玩哦。

EMP 发表于 2005-2-27 15:34:55

谁可以用portel画个电路板图直接可以晒版的?哈俾上skype 找你有事

analyst 发表于 2005-2-27 15:56:18

这个也有点意思。http://linuxfocus.vlsm.org/ChineseGB/May20...rticle236.shtml

DreamCat 发表于 2005-2-27 16:21:06

QUOTE (EMP @ Feb 27 2005, 03:34 PM)
谁可以用portel画个电路板图直接可以晒版的?哈俾上skype 找你有事
我现在懒得弄电路哦。还有个电容表电路没设计完呢。生病好难受,强挺着看小说中。

bow 发表于 2005-2-27 16:21:33

厉害

DreamCat 发表于 2005-2-27 16:46:21

我发现 bow 现在盯上了美女。。。。。

ycfei 发表于 2005-2-28 09:40:59

好东西..

samhui 发表于 2005-2-28 22:45:21

太好了

zhaocz 发表于 2005-3-1 12:13:35

太好了,很高兴看到这样有创造性的东西
页: [1]
查看完整版本: 制作一个硬件看门狗和一键关机系统