我用一个低成本托pipe服务租用了一个专用服务器 (与Intel Haswell CPU和定制硬件),并将其与CentOS 6.4 / 64位Linux(库存内核:2.6.32-358.14.1.el6.x86_64)一起使用。
每隔几个星期它就会挂起,其他客户似乎也有类似的问题。
在我看到的dmesg
输出(这里是完整的dmesg输出 ):
CPU0: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz stepping 03 .... NMI watchdog enabled, takes one hw-pmu counter. .... iTCO_wdt: Intel TCO WatchDog Timer Driver v1.07rh iTCO_wdt: Found a Lynx Point TCO device (Version=2, TCOBASE=0x1860) iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)
并在stream程列表中看到:
# ps uawwwx|grep [w]atchdog root 6 0.0 0.0 0 0 ? S Aug22 0:00 [watchdog/0] root 10 0.0 0.0 0 0 ? S Aug22 0:00 [watchdog/1] root 14 0.0 0.0 0 0 ? S Aug22 0:00 [watchdog/2] root 18 0.0 0.0 0 0 ? S Aug22 0:00 [watchdog/3] root 22 0.0 0.0 0 0 ? S Aug22 0:00 [watchdog/4] root 26 0.0 0.0 0 0 ? S Aug22 0:00 [watchdog/5] root 30 0.0 0.0 0 0 ? S Aug22 0:00 [watchdog/6] root 34 0.0 0.0 0 0 ? S Aug22 0:00 [watchdog/7]
这是否意味着硬件看门狗在我的服务器上已经激活,并且会在被冻结的30秒内重启我的机器?
(在/etc/sysctl.conf中我已经把kernel.panic=10
,这样它就不会卡在kdb控制台了)。
还是必须安装并启动CentOS软件包watchdog
?
Linux有一个通用的看门狗接口。 您可以通过启用您的iTCO_wdt硬件支持的NMI看门狗,或通过安装和configuration不依赖于硬件的软件看门狗来使用它。
那么,这里有几个问题需要解决。
当服务器挂起时会发生什么? 屏幕上有什么? 日志里有什么? 你必须与托pipe服务提供商重新启动? 你可以自己执行重置吗?
你的服务器不应该挂起,拖延或崩溃! 在使用低端,DIY或定制硬件的环境中工作,我明白服务提供商的目标是降低成本。 但是,如果存在稳定性问题,提供者有责任纠正这些问题。 构build稳定的Linux服务器平台并不困难 。 然而,事情经常发生得比应该的多。 如果硬件/软件/操作系统/固件的组合是有毒的,这是一个不好的迹象。 提供商应该在一定的范围内运营,以便在影响多个客户之前就能够理解问题。
你的硬件是否有IPMI设备? 你有IPMI访问? 通常,看门狗是您的带外pipe理设备的一部分。 例如,HP ProLiant服务器将其自动服务器恢复(ASR)function设置为处理此问题。
您的系统检测到的设备是正在使用的英特尔芯片组的一部分。 所以在技术上看来是一个看门狗设备,并且有通用的内核支持(它看起来像是在CentOSPlus内核中,而不是你所拥有的内核)。 但是, 看门狗软件包可以作为软件级别的看门狗,除了硬件挂钩之外。
但是,再次,你在这里治疗症状。 find根本原因很重要。 如果其他客户遇到这些问题,您都需要与服务提供商解决此问题。
CentOS的
yum install watchdog
在Ubuntu上
apt-get install watchdog #optional #apt-get install das-watchdog
然后…
sudo vi /etc/watchdog.conf
当然,你应该知道在VIM中,冒号(:)button打开菜单(或者是命令行),w会告诉它写你的修改,或者w! 迫使它,并退出。 (也可以使用旧的ZX Spectrum光标键 – hjkl四处移动,字母d删除,我插入,转义停止插入。)
取消注释:
watchdog-device = /dev/watchdog
看到
man watchdog.conf
更多…当你完成…
service watchdog restart
是的,这些进程与看门狗有关,但是除非它们configuration正确,否则它们只是坐在那里无所事事。
这应该可以帮助您应对不可靠的电源,将随机locking转换为随机重启。
你可以用它来testing
echo *todo* placeholder while I test how to test it, in case I reboot...
如果仍然无法正常工作,那么您可能需要多花点心思,才能找出您的平台支持的驱动程序。
就个人而言,将尝试单独加载和testing每个看门狗定时器模块,像这样的东西,作为根在shell运行:
echo "Testing default... " | tee -a /var/log/watchdog-test.log; sync service watchdog stop echo Didn't work, we're still here... | tee -a /var/log/watchdog-test.log; sync # If the default watchdog does work, I bet stopping the service disabled the default watchdog then... *todo* test and update this echo Modules still loaded... DOGS=`lsmod|grep -e wdt -e dog|cut -d\ -f1` echo $DOGS for dog in $DOGS; do echo Unloading $dog rmmod $dog || { echo "Oops.. didn't work, $dog won't unload"; sleep 70; }; done; echo Did they all unload...? If not, I think the rest of this is a waste of time... reboot and skip that one next time sleep 63 DOGS=`find /lib/modules|grep watchdog|awk -F'\watchdog/' '{print $2}'|sed [email protected]@@g|sort|uniq` for dog in $DOGS; do echo "Testing $dog... " | tee -a /var/log/watchdog-test.log; sync modprobe -v $dog && if [ -e /dev/watchdog ]; then dmesg|tail -5 echo $dog Loaded. Ready for a reboot? | tee -a /var/log/watchdog-test.log; sync echo *todo* force a quicker timeout? *todo* read kernel source cat /dev/watchdog & test=$! sleep 0.5 [ -e /proc/$test ] && { sleep 63; kill $test; }; fi rmmod $dog echo $dog Didn't work, we're still here... | tee -a /var/log/watchdog-test.log; sync done
如果它只是通过,没有延迟…那么没有一个模块似乎工作。 如果您的电脑重新启动,启动时:
tail -1 /var/log/watchdog-test.log
将显示一个可能的候选人…现在请确保您的服务器加载它…
Ubuntu似乎使用你在这里注意到的模块:
sudo vi /etc/default/watchdog
我没有testing过这个。 如果你这样做,来更新这个答案。 todo这是SuSe的提示: https ://www.suse.com/support/kb/doc ? id = 7016880和Ubuntu: https : //github.com/miniwark/miniwark-howtos/wiki/Hardware-Watchdog-定时器设置在Ubuntu-12.04 http://odroid.com/dokuwiki/doku.php?id=en:odroid_linux_watchdog