Kernel/watchdog: различия между версиями

Материал из ALT Linux Wiki
мНет описания правки
мНет описания правки
Строка 3: Строка 3:
Watchdog модули ядра имеют в имени "wdt" (сокращение от watchdog timer). Следует понимать что даже успешно загрузившийся модуль может фактически не работать (его reset сигнал не перезагружает систему) - тут все зависит от производителя оборудования. Лучшим hardware watchdog драйвером (на мой взгляд) является ipmi_watchdog, так как iPMI умеет делать power cycle, а не просто reset. Если его нет, то вот неплохой список с чего начать поиск рабочего драйвера: it87_wdt it8712f_wdt w83627hf_wdt w83877f_wdt w83977f_wdt.
Watchdog модули ядра имеют в имени "wdt" (сокращение от watchdog timer). Следует понимать что даже успешно загрузившийся модуль может фактически не работать (его reset сигнал не перезагружает систему) - тут все зависит от производителя оборудования. Лучшим hardware watchdog драйвером (на мой взгляд) является ipmi_watchdog, так как iPMI умеет делать power cycle, а не просто reset. Если его нет, то вот неплохой список с чего начать поиск рабочего драйвера: it87_wdt it8712f_wdt w83627hf_wdt w83877f_wdt w83977f_wdt.


{{Attention|Важно, что watchdog делает ресет системе, это аналог внезапного нажатия кнопки ресет, это не мягкая перезагрузка как при shutdown! Поэтому, несохраненная информация может быть потеряна или может произойти сбой файловой системы. Ваш workflow должен учитывать эти '''риски''', например, регулярно делайте бакапы. ⚠️ }}
{{Attention|Важно, что watchdog делает ресет системе, это аналог внезапного нажатия кнопки ресет, это не мягкая перезагрузка как при shutdown! Поэтому, несохраненная информация может быть потеряна или может произойти сбой файловой системы. Ваш workflow должен учитывать эти '''риски''', например, регулярно делайте резервное копирование. ⚠️ }}


= Пример настройки =
= Пример настройки =

Версия от 03:08, 3 декабря 2023

Для автоматического восстановления работоспособности системы после зависания может быть полезно настроить hardware watchdog. Watchdog заменяет зависании на перезагрузку, что может быть полезно в случае, если работа оборудования или системы нестабильна, но нужно минимизировать простой, а reset помогает.

Watchdog модули ядра имеют в имени "wdt" (сокращение от watchdog timer). Следует понимать что даже успешно загрузившийся модуль может фактически не работать (его reset сигнал не перезагружает систему) - тут все зависит от производителя оборудования. Лучшим hardware watchdog драйвером (на мой взгляд) является ipmi_watchdog, так как iPMI умеет делать power cycle, а не просто reset. Если его нет, то вот неплохой список с чего начать поиск рабочего драйвера: it87_wdt it8712f_wdt w83627hf_wdt w83877f_wdt w83977f_wdt.

Внимание! Важно, что watchdog делает ресет системе, это аналог внезапного нажатия кнопки ресет, это не мягкая перезагрузка как при shutdown! Поэтому, несохраненная информация может быть потеряна или может произойти сбой файловой системы. Ваш workflow должен учитывать эти риски, например, регулярно делайте резервное копирование. ⚠️


Пример настройки

  • Установите пакет watchdog он содержит user-space компонент, который будет пингать драйвер. По умолчанию сервис watchdog будет не запущен.
  • Перекройте blacklist-watchdog.conf от kmod и далее работайте с новым файлом - так как файл из /lib/modprobe.d обновится при апдейте системы:
 # cp /lib/modprobe.d/blacklist-watchdog.conf /etc/modprobe.d/
  • Добавьте в новый конфиг файл оставшиеся wdt модули, которые могли загрузиться, но быть при этом нерабочими, часто это iTCO_wdt. Посмотреть список уже загруженных wdt модулей: lsmod | grep wdt
  • Найдите рабочий watchdog драйвер.
  • Удалите найденный рабочий модуль из созданного выше blacklist-watchdog.conf. Например, для w83627hf_wdt, удалите или закомментируйте там строку blacklist w83627hf_wdt. Это важно сделать для следующего шага.
  • Добавьте найденный модуль в автозагрузку после старта системы. Для этого создайте новый conf файл в /etc/modules-load.d/ например, wdt.conf с содержимым w83627hf_wdt. После ребута systemd-modules-load.service его загрузит (если он не в блэклисте).
  • Загруженный модуль создаст устройство /dev/watchdog0.
  • Для проверки - команда wdctl /dev/watchdog0 должна показать информацию по устройству. (Это работает только до того как загружен watchdog сервис, так как он захватывает устройство.)
  • Пропишите в /etc/watchdog.conf строку:
 watchdog-device         = /dev/watchdog0
  • Протестируйте, что watchdog работает - ⚠ предварительно закройте все приложения, чтоб не потерять данные ⚠,

запустите sync, вручную запустите watchdog -F и остановите этот процесс нажав ^Z, после исчерпания watchdog-timeout система должна перезагрузиться.

  • Если всё прошло успешно, то разрешите и запустите watchdog сервис через systemctl.