Kernel/watchdog: различия между версиями
Vt (обсуждение | вклад) мНет описания правки |
Vt (обсуждение | вклад) мНет описания правки |
||
Строка 1: | Строка 1: | ||
Для автоматического восстановления работоспособности системы после зависания может быть полезно настроить hardware watchdog. Watchdog заменяет зависании на перезагрузку, что может быть полезно в случае если работа оборудования или системы нестабильна, но нужно минимизировать простой, а reset помогает. | Для автоматического восстановления работоспособности системы после зависания может быть полезно настроить hardware watchdog. Watchdog заменяет зависании на перезагрузку, что может быть полезно в случае, если работа оборудования или системы нестабильна, но нужно минимизировать простой, а reset помогает. | ||
Watchdog модули ядра имеют в имени "wdt" (сокращение от watchdog timer). Следует понимать что даже успешно загрузившийся модуль может фактически не работать (его reset сигнал не | 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:04, 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 он содержит 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.