Назад | Перейти на главную страницу

На моем сервере CentOS уже активен аппаратный сторожевой таймер?

я арендую выделенный сервер (с процессором 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