Kernel/watchdog: различия между версиями
Vt (обсуждение | вклад) мНет описания правки |
Vt (обсуждение | вклад) (ipmi_watchdog) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 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 должен учитывать эти '''риски''', например, регулярно делайте резервное копирование. ⚠️ }} | ||
= Пример настройки = | = Пример настройки = | ||
Строка 20: | Строка 20: | ||
запустите <code>sync</code>, вручную запустите <code>watchdog -F</code> и остановите этот процесс нажав <code>^Z</code>, после исчерпания <code>watchdog-timeout</code> система должна перезагрузиться. | запустите <code>sync</code>, вручную запустите <code>watchdog -F</code> и остановите этот процесс нажав <code>^Z</code>, после исчерпания <code>watchdog-timeout</code> система должна перезагрузиться. | ||
* Если всё прошло успешно, то разрешите и запустите watchdog сервис через systemctl. | * Если всё прошло успешно, то разрешите и запустите watchdog сервис через systemctl. | ||
== ipmi-watchdog == | |||
После запуска watchdog сервиса <code>wdctl</code> больше не сможет показать информацию по устройству: | |||
# wdctl /dev/watchdog | |||
wdctl: cannot read information about /dev/watchdog: No such file or directory | |||
Убедиться, что ipmi_watchdog запущен можно через <code>ipmitool</code>: | |||
# ipmitool mc watchdog get | |||
Watchdog Timer Use: SMS/OS (0x44) | |||
Watchdog Timer Is: Started/Running | |||
Watchdog Timer Logging: On | |||
Watchdog Timer Action: Hard Reset (0x01) | |||
Pre-timeout interrupt: None | |||
Pre-timeout interval: 0 seconds | |||
Timer Expiration Flags: None (0x00) | |||
Initial Countdown: 60.0 sec | |||
Present Countdown: 59.1 sec | |||
На не запущенном устройстве соответствующие строки будут такие: | |||
Watchdog Timer Is: Stopped | |||
Watchdog Timer Action: No action (0x00) | |||
... | |||
Present Countdown: 60.0 sec |
Текущая версия от 21:41, 26 августа 2024
Для автоматического восстановления работоспособности системы после зависания может быть полезно настроить 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.
ipmi-watchdog
После запуска watchdog сервиса wdctl
больше не сможет показать информацию по устройству:
# wdctl /dev/watchdog wdctl: cannot read information about /dev/watchdog: No such file or directory
Убедиться, что ipmi_watchdog запущен можно через ipmitool
:
# ipmitool mc watchdog get Watchdog Timer Use: SMS/OS (0x44) Watchdog Timer Is: Started/Running Watchdog Timer Logging: On Watchdog Timer Action: Hard Reset (0x01) Pre-timeout interrupt: None Pre-timeout interval: 0 seconds Timer Expiration Flags: None (0x00) Initial Countdown: 60.0 sec Present Countdown: 59.1 sec
На не запущенном устройстве соответствующие строки будут такие:
Watchdog Timer Is: Stopped Watchdog Timer Action: No action (0x00) ... Present Countdown: 60.0 sec