я арендую выделенный сервер (с процессором Intel Haswell и нестандартным оборудованием) на недорогой службе хостинга и используйте ее с 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)
и в списке процессов я вижу:
# 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 несложно. Однако это случается чаще, чем следует. Если комбинация оборудования / программного обеспечения / ОС / прошивки токсична, это плохой знак. Поставщик должен работать в таком масштабе, чтобы он мог понимать проблемы до того, как они повлияют на нескольких клиентов.
Есть ли у вашего оборудования устройство IPMI? У ВАС есть доступ по IPMI? Обычно сторожевые псы являются частью вашего внеполосное управление устройство. Например, у серверов HP ProLiant есть свои Автоматическое восстановление сервера (ASR) набор функций, чтобы справиться с этим.
Устройство, которое обнаруживает ваша система, является частью Набор микросхем Intel в использовании. Таким образом, технически существует сторожевое устройство и есть общая поддержка ядра для него (похоже, что оно находится в ядре CentOSPlus, а не в том, которое у вас есть). Однако сторожевая собака package может помочь в качестве сторожевого таймера программного уровня, помимо аппаратных перехватчиков, которые у вас могут быть.
Но опять же, здесь вы лечите симптом. Важно найти первопричину. Если другие клиенты сталкиваются с этими проблемами, вам всем необходимо решить их с поставщиком услуг.
Linux имеет общий сторожевой интерфейс. Вы можете использовать его либо включение сторожевого таймера NMI ваше оборудование iTCO_wdt поддерживает или путем установки и настройки программный сторожевой таймер который не зависит от оборудования.
CentOS
yum install watchdog
На Ubuntu
apt-get install watchdog
#optional
#apt-get install das-watchdog
Затем...
sudo vi /etc/watchdog.conf
Конечно, вы должны знать, что в VIM кнопка с двоеточием (:) открывает меню (или, скорее, командную строку), а w сообщает ему, что нужно записать ваши изменения, или w! заставляет его, и q завершает работу. (Также вы можете использовать старые клавиши курсора ZX Spectrum - hjkl для перемещения, букву d для удаления и i для вставки, escape, чтобы остановить вставку.)
Раскомментировать:
watchdog-device = /dev/watchdog
Видеть
man watchdog.conf
Для большего ... когда вы закончите ...
service watchdog restart
Да, эти процессы связаны со сторожевым псом, но если они не настроены должным образом, они просто сидят и ничего не делают.
Это должно помочь вам справиться с ненадежными источниками питания, превращающими случайные блокировки в случайные перезагрузки.
Вы можете проверить это с помощью
echo *todo* placeholder while I test how to test it, in case I reboot...
Если он по-прежнему не работает, возможно, вам придется немного попотеть и узнать, какой драйвер поддерживает ваша платформа.
Лично я бы попытался загрузить и протестировать каждый модуль сторожевого таймера по отдельности, примерно так, запустив в оболочке от имени пользователя root:
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 s@.ko@@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
Если он просто проходит, без задержек ... значит, ни один из модулей не работает. Если ваш компьютер перезагружается, когда он загружается:
хвост -1 /var/log/watchdog-test.log
Покажет вероятного кандидата ... Теперь убедитесь, что ваш сервер его загружает ...
Ubuntu, похоже, использует модуль, который вы здесь отметили:
sudo vi /etc/default/watchdog
Я не проверял это. Если да, приходите и обновите этот ответ. делать Вот подсказка для SuSe: https://www.suse.com/support/kb/doc?id=7016880 и для Ubuntu: https://github.com/miniwark/miniwark-howtos/wiki/Hardware-Watchdog-Timer-setup-on-Ubuntu-12.04 http://odroid.com/dokuwiki/doku.php?id=en:odroid_linux_watchdog