author:skate
time:2010-05-11
io隔离方式----watchdog
在oracle的rac中在9.2.0.2之前,io fecing(io隔离)Linux一直用watchdog来实现,在之后就用hangcheck-timer来替代
“Watchdog” 在实现上可以是硬件电路也可以是软件定时器,能够在系统出现故障时自动重新启动系统。
从字面上理解是“看门狗”的意思
watchdog工作原理:
在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去复位看门狗,
那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的芯片时要注意复位看门狗。
看门狗有硬件和软件的。常见的硬件看门狗是PCI接口和USB接口,体积很小。
Linux 自带了一个 watchdog 的软件程序,用于监视系统的运行,它包括一个内核 watchdog module
和一个用户空间的 watchdog 程序。
内核 watchdog 模块
通过 /dev/watchdog 这个字符设备与用户空间通信。用户空间程序一旦打开 /dev/watchdog 设备,
就会导致在内核中启动一个 1分钟的定时器,此后,用户空间程序需要保证在 1分钟之内向这个设备写入数据,每次写
操作会导致重新设定定时器。如果用户空间程序在 1分钟之内没有写操作,定时器到期会导致一次系统 reboot 操作。
用户空间程序可通过关闭 /dev/watchdog 来停止内核中的定时器。
用户空间的 watchdog 守护进程:
在用户空间,还有一个叫做 watchdog 的守护进程,它可以定期对系统进行检测,包括:
* Is the process table full?
* Is there enough free memory?
* Are some files accessible?
* Have some files changed within a given interval?
* Is the average work load too high?
* Has a file table overflow occurred?
* Is a process still running? The process is specified by a pid file.
* Do some IP addresses answer to ping?
* Do network interfaces receive traffic?
* Is the temperature too high? (Temperature data not always available.)
* Execute a user defined command to do arbitrary tests.
如果某项检测失败,则可能导致一次 soft reboot (模拟一次 shutdown 命令的执行),它还可以通过 /dev/watchdog 来触发内核 watchdog 的运行。
内核级”watchdog”与用户空间的”watchdog”的主要区别是,内核态的”watchdog”抗干扰能力强,运行稳定。
参考:
http://baike.baidu.com/view/280158.htm
http://www.ibm.com/developerworks/cn/linux/l-cn-watchdog/index.html
http://www.oschina.net/p/watchdog
http://www.linuxidc.com/Linux/2008-05/12747.htm
http://blog.chinaunix.net/u1/40912/showart_354070.html
-----end-----