Что за устройство /dev/watchdog, что оно делает?
Также висит в процессах какой-то watchdog, процесс неубиваемый, это таймер какой-то?
- Вопрос задан более трёх лет назад
- 3696 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 1
/dev/watchdog — это интерфейс к сторожевому таймеру (если он у вас есть). Процесс watchdog — демон, с этим таймером работающий. Сторожевой таймер — это железяка, которой периодически шлётся сигнал «всё ок, система не зависла». Если этого сигнала долго нет, он аппаратно перезагружает систему.
lexpr.ru/node/513
Ответ написан более трёх лет назад
Комментировать
Нравится 6 Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Linux
- +1 ещё
Почему меняется разрешение arch linux?
- 1 подписчик
- 7 часов назад
- 101 просмотр
Watchdog (сторожевой таймер) в Linux
Watchdog (сторожевой таймер) — аппаратно реализованная схема контроля над зависанием системы.
Сторожевые таймеры используются в системах, которые должны работать без надзора человека. Такие системы должны быть само восстанавливающимися без участия оператора.
В контроллерах JetHome JetHub на базе процессоров Amlogic поддерживается драйвер аппаратного watchdog meson_wdt .
Проверка устройств
При корректно запущенном модулей watchdog в системе /dev должны быть видны устройства /dev/watchdog и /dev/watchdog0 :
$ ls -l /dev/watchdog* crw-rw---- 1 root root 10, 130 2019-01-01 00:00 /dev/watchdog crw-rw---- 1 root root 10, 130 2019-01-01 00:00 /dev/watchdog0
Установка сервиса Watchdog
В прошивках начиная с версии Armbian 22.02 watchdog предустановлен, ручная установка не требуется.
Для установки сервиса watchdog выполните следующие команды:
sudo apt-get update sudo apt-get install watchdog
Создайте папку для лог-файлов watchdog:
sudo mkdir -p /var/log/watchdog
Проверьте настройки для сервиса в файле /etc/default/watchdog :
# Start watchdog at boot time? 0 or 1 run_watchdog=1 # Start wd_keepalive after stopping watchdog? 0 or 1 run_wd_keepalive=1 # Load module before starting watchdog watchdog_module="none" # Specify additional watchdog options here (see manpage). watchdog_options="-s -v -c /etc/watchdog.conf"
Конфигурационные файлы
Внесите необходимые изменения в конфигурационный файл /etc/watchdog.conf :
- Раскомментируйте использование устройства /dev/watchdog (иначе сервис watchdog не будет использовать аппаратный таймер для перезагрузки контроллера).
- Установите необходимые проверки и таймауты.
Ниже приведен пример конфигурационного файла, с установленным таймаутом 15 секунд на зависание:
Примечание
Значение watchdog-timeout определяет через какое время после аварии сервиса watchdog аппаратный таймер перезагрузит контроллер.
$ cat /etc/watchdog.conf #ping = 172.31.14.1 #ping = 172.26.1.255 #interface = eth0 #file = /var/log/messages #change = 1407 # Uncomment to enable test. Setting one of these values to '0' disables it. # These values will hopefully never reboot your machine during normal use # (if your machine is really hung, the loadavg will go much higher than 25) #max-load-1 = 24 #max-load-5 = 18 #max-load-15 = 12 # Note that this is the number of pages! # To get the real size, check how large the pagesize is on your machine. #min-memory = 1 #allocatable-memory = 1 #repair-binary = /usr/sbin/repair #repair-timeout = 60 #test-binary = #test-timeout = 60 # The retry-timeout and repair limit are used to handle errors in a more robust # manner. Errors must persist for longer than retry-timeout to action a repair # or reboot, and if repair-maximum attempts are made without the test passing a # reboot is initiated anyway. #retry-timeout = 60 #repair-maximum = 1 watchdog-device = /dev/watchdog # Defaults compiled into the binary #temperature-sensor = #max-temperature = 90 # Defaults compiled into the binary #admin = root #interval = 1 #logtick = 1 #log-dir = /var/log/watchdog # This greatly decreases the chance that watchdog won't be scheduled before # your machine is really loaded realtime = yes priority = 1 # Check if rsyslogd is still running by enabling the following line #pidfile = /var/run/rsyslogd.pid watchdog-timeout = 15
Автозапуск и проверка сервиса
Для включения автозапуска сервиса выполните следующие команды:
sudo systemctl enable watchdog sudo systemctl start watchdog
Проверка работоспособности сервиса:
service watchdog status
● watchdog.service - watchdog daemon Loaded: loaded (/lib/systemd/system/watchdog.service; enabled; vendor pres> Active: active (running) since Mon 2022-02-21 17:29:24 UTC; 17h ago Process: 2718 ExecStartPre=/bin/sh -c [ -z "$watchdog_module>" ] || [ "$w> Process: 2720 ExecStart=/bin/sh -c [ $run_watchdog != 1 ] || exec /usr/sbin> Main PID: 2722 (watchdog) Tasks: 1 (limit: 977) Memory: 516.0K CPU: 3min 33.528s CGroup: /system.slice/watchdog.service └─2722 /usr/sbin/watchdog -s -v -c /etc/watchdog.conf Feb 22 10:52:23 jethubj100 watchdog[2722]: still alive after 62076 interval(s) Feb 22 10:52:24 jethubj100 watchdog[2722]: still alive after 62077 interval(s) Feb 22 10:52:25 jethubj100 watchdog[2722]: still alive after 62078 interval(s) Feb 22 10:52:26 jethubj100 watchdog[2722]: still alive after 62079 interval(s) Feb 22 10:52:27 jethubj100 watchdog[2722]: still alive after 62080 interval(s) Feb 22 10:52:28 jethubj100 watchdog[2722]: still alive after 62081 interval(s) Feb 22 10:52:29 jethubj100 watchdog[2722]: still alive after 62082 interval(s)
Настроенный и запущенный сервис watchdog постоянно сбрасывает аппаратный сторожевой таймер.
Если он не сможет этого сделать (например, в случае если зависла система или наступило любое другое настроенное в конфигурации условие), таймер сработает и перезагрузит контроллер.
Проверка сторожевого таймера
Будьте осторожны: команды в этом разделе приводят к панике ядра и полной остановке работы контроллера.
Используйте их только в тестовой среде!
Следующая команда приводит к искусственному сбою ядра linux. Если watchdog работает правильно, то он автоматически перезагрузит систему после таймаута:
echo c > /proc/sysrq-trigger
[63168.053150] sysrq: Trigger a crash [63168.053204] Kernel panic - not syncing: sysrq triggered crash [63168.056648] CPU: 3 PID: 65544 Comm: bash Not tainted 5.15.24-meson64 #trunk.0045.jethome.0 [63168.064838] Hardware name: JetHome JetHub J100 (DT) [63168.069670] Call trace: [63168.072082] dump_backtrace+0x0/0x200 [63168.075706] show_stack+0x18/0x68 [63168.078982] dump_stack_lvl+0x68/0x84 [63168.082605] dump_stack+0x18/0x34 [63168.085882] panic+0x164/0x324 [63168.088901] sysrq_handle_crash+0x1c/0x20 [63168.092869] __handle_sysrq+0x8c/0x160 [63168.096577] write_sysrq_trigger+0x88/0x120 [63168.100719] proc_reg_write+0xac/0xf8 [63168.104340] vfs_write+0xbc/0x398 [63168.107618] ksys_write+0x68/0xf0 [63168.110895] __arm64_sys_write+0x1c/0x28 [63168.114776] invoke_syscall+0x44/0x108 [63168.118485] el0_svc_common.constprop.3+0x94/0xf8 [63168.123143] do_el0_svc+0x24/0x88 [63168.126420] el0_svc+0x20/0x50 [63168.129439] el0t_64_sync_handler+0x90/0xb8 [63168.133579] el0t_64_sync+0x180/0x184 [63168.137206] SMP: stopping secondary CPUs [63168.141091] Kernel Offset: disabled [63168.144533] CPU features: 0x00001001,00000846 [63168.148845] Memory Limit: none [63168.151871] ---[ end Kernel panic - not syncing: sysrq triggered crash ]--- AXG:BL1:d1dbf2:a4926f;FEAT:E0DC318C:2000;POC:F;EMMC:0;READ:0;0.0;CHK:0; sdio debug board detected TE: 33151
Пауза 15 секунд (в соответствии с значением watchdog_timeout в конфигурационном файле), далее:
BL2 Built : 10:43:22, May 26 2021. axg g28b9431 - jenkins@walle02-sh set vcck to 1100 mv set vddee to 950 mv Board ID = 9 CPU clk: 1200MHz DDR low power enabled DDR3 chl: Rank0 16bit @ 912MHz bist_test rank: 0 1b 02 34 24 0b 3d 17 00 2f 27 0e 40 00 00 00 00 00 00 00 00 00 00 00 00 761 - PASS Rank0: 1024MB(auto)-2T-13 AddrBus test pass! eMMC boot @ 0 sw8 s storage init finish emmc switch 3 ok Authentication key not yet programmed get rpmb counter error 0x00000007 emmc switch 0 ok Load FIP TMP HDR from eMMC, src: 0x0000c200, des: 0x05100000, size: 0x00004000, part: 0 0001c000Load BL31 from eMMC, src: 0x0001c200, des: 0x05104000, size: 0x0002ac00, part: 0 bl2z: ptr: 05127358, size: 00001e18 Load FIP HDR from eMMC, src: 0x0000c200, des: 0x01700000, size: 0x00004000, part: 0 Load BL3x from eMMC, src: 0x00010200, des: 0x01704000, size: 0x0008e400, part: 0 NOTICE: BL31: v1.3(release):110e239 NOTICE: BL31: Built : 19:07:23, Jul 2 2018 NOTICE: BL31: AXG normal boot! NOTICE: BL31: BL33 decompress pass [Image: axg_v1.1.3326-d0bacc8 2018-07-05 11:21:34 jenkins@walle02-sh] OPS=0x43 25 0b 43 00 88 fc 1a 07 8d 24 0c 3a b2 65 16 59 bl30:axg ver: 9 mode: 0 bl30:axg thermal0 [0.015862 Inits done] secure task start! high task start! low task start! ERROR: Error initializing runtime service opteed_fast U-Boot 2022.01-armbian (Feb 08 2022 - 06:07:00 +0000) jethubj100
© Copyright 2023, JetHome. Обновлено: 26.01.2023 16:59:03 UTC.
Kernel/watchdog
Для автоматического восстановления работоспособности системы после зависания может быть полезно настроить 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.
Watchdog linux что это
Guido нравится Linux за возможность изучать работу компьютеров. Linux из-за своей открытости позволяет проводить такие исследования.
Перевод на Русский:
Gleba
- Что же это за устройство мониторинга (watchdog)?
- Использование мониторинга
- Аппаратная часть
- Принцип работы
- Программное обеспечение
- Тестирование
- Подключение устройства
- Заключение
- Ссылки
- Страница отзывов
Устройство мониторинга сервера «watchdog»
- Кнопка выключения сервера
- Устройство мониторинга состояния сервера
Что же это за устройство мониторинга (watchdog)?
Устройство мониторинга, ( оригинальное и более распространенное название watchdog — по-русски «сторожевой пес»), это такая штука, которая постоянно контролирует состояние системы и проверяет ее работоспособность. Нечто подобное установлено на зонде Mars Pathfinder (ведь никто не собирался отправлять на марс вместе с роботом человека, чтобы периодически перезагружать систему когда она зависнет) и на некоторых особо дорогостоящих серверах.
Принцип абсолютно простой — периодически система должна откликаться на посылаемые запросы, тем самым, подтверждая свою работоспособность. В случае если система перестает откликаться, она в принудительном порядке перезагружается.
Но тогда встает следующий вопрос: зачем тогда слежение за компьютером, если Linux до такой степени надежный и стабильный? Ответ так же прост — чтобы сделать его еще более надежным и стабильным. Всегда остается человеческий фактор, с которым всегда приходится считаться. Ведь если сервер в течении года работает без сбоев обслуживающий персонал и не знает о его существовании. И в случае поломки первый вопрос будет: «Где он находится?». А как насчет того что сервер полетел под новый год, когда все уже разбежались отмечать? В подобных случаях дополнительный мониторинг придется как нельзя кстати!
Да, подобное устройство мониторинга не решит всех проблем и не защитит от поломок железа, а если вы решили укомплектовать ваш сервер мониторингом, то вам также следует позаботиться и о дополнительном пространстве (имеется ввиду пространство для достаточной вентиляции помещения ).
Использование мониторинга
Нечто подобное поможет вам контролировать ресурсы сети, использование свопа и дискового пространства.
#!/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin
export PATH
#
# Мониторинг дискового пространства
# —————-
# проверяет диск на 80% заполненность.
# (crontab автоматически отправляет e-mail если скрипт
# выполнен)
df | egrep ‘ (8.%|9.%|100%) ‘
#
# Мониторинг свопа
# Обычно сервер не имеет свопа. Иначе
# своп должен быть строго фиксированным
# —————-
# Сообщает о заполнении свопа больше чем на 6 Mb
swpfree=`free | awk ‘/Swap:/< print $3 >‘`
if expr $swpfree \> 6000 > /dev/null ; then
echo «$0 warning! использование свопа составляет $swpfree»
echo » «
free
echo » «
ps auxw
fi
#
# Мониторинг сети
# ——————-
# Ваш IP или имя компьютера:
hostn=»linuxbox.your.supercomputer»
#
if ping -w 5 -qn -c 1 $hostn > /dev/null ; then
# ok host is up
echo «0» > /etc/pingfail
else
# подсчет не отвеченных запросов ping
if [ -r /etc/pingfail ]; then
pingfail=`cat /etc/pingfail`
else
# в случае отсутствия файла pingfail
# окончание программы
exit 0
fi
pingfail=`expr «$pingfail» «+» 1`
echo «$pingfail ping failures»
echo «$pingfail» > /etc/pingfail
if [ $pingfail -gt 10 ]; then
echo «не отвечено на более чем 10 запросов. Перезагрузка. «
/sbin/shutdown -t2 -r now
fi
fi
# — конец скрипта —
Можно использовать этот скрипт вместе с crontab так что он будет запускаться каждые 15 минут:
Аппаратная часть
Стандартных реле не бывает. У каждого производителя свои модели. Для нас существенно сопротивление катушки реле. Ниже представлены две схемы, одна с реле на 5V, 500 Oм, а вторая на 5V, 120 Oм. При покупке поинтересуйтесь сопротивлением катушки реле или просто измерьте его омметром. Кликните на картинку чтобы увеличить.
Кнопка выключения замыкает при нажатии RTS и CD. На схеме она выглядит несколько странно, но в Eagle других символов нет.
Я не привожу список необходимого оборудования. Все что будет необходимо купить есть на схеме, только не забудьте разъем DB9 для последовательного порта. Диоды подойдут любые, например 1N4148. Лично я считаю что лучше установить реле на 500 Oм, тогда вам не понадобятся R4 и конденсатор на 2000мкФ (или 2200мкФ). А для С1 можно использовать конденсатор меньшего номинала (1000мкФ).
Принцип работы
Схема построена на таймера NE555. Микросхема представляет из себя два компаратора, RS-триггер и делитель из 3 резисторов 5 кOм, задающий пороги срабатывания компараторов. Всякий раз, когда на ножке 6 (threshold) напряжение поднимается выше 2/3, выход RS-триггера переключается в состояние «1».
Теперь рассмотрим нашу схему. Выход RTS последовательного порта используется как источник питания нашей схемы. Уровни напряжений в канале RS232 составляют +/-10V, и поэтому нам понадобится диод перед конденсатором С1. Конденсатор C1 заряжается очень быстро и выступает в качестве аккумулятора энергии для последующего кратковременного включения реле. Конденсатор C2 медленно заряжается через резистор ( 4.7 MОм ). Транзистор Т1, управляемый по линии DTR последовательного порта, разряжает конденсатор C2.В случае пропадания сигнала, из-за того что компьютер подвис, конденсатор медленно ( примерно в течении 40 сек. ) начнет заряжаться до 2/3 питающего напряжения, после чего RS-триггер перейдет в состояние «1».
Цепь С1, R2, светодиод и реле должна быть рассчитана таким образом, чтобы реле включалось кратковременно и только за счет энергии запасенной на конденсаторе С1. Нам необходимо чтобы «кнопка сброса» была «нажата» пару секунд.
Светодиод должен гореть до полной перезагрузки компьютера.
На схеме также изображена кнопка выключения компьютера подключенная к линии CD последовательного порта. Если удерживать ее около 15 секунд, будет выполнена команда «shutdown -h now», которая и выключит сервер. Она не имеет ничего общего с мониторингом и предназначена исключительно для обслуживания компьютера.
Программное обеспечение
Драйвер представляет собой небольшую программу на С, которую можно запускать из /etc/init.d/. Она включит сигнал на линии RTS RS232, после чего начнет периодически ( каждые 12 сек. ) посылать импульсы по линии DTR (таймаут составляет 40 секунд). При нормальном выключении компьютера программа отключит RTS и передаст последний импульс на DTR. В результате конденсатор цепи питания С1 к моменту истечения таймаута полностью разрядится, исключая возможность принудительной перезагрузки. Для установки программы, распакуйте файл linuxwd-0.3.tar.gz и наберите
После этого скопируйте исполняемый файл linuxwd в /usr/sbin/linuxwd. Подправьте созданный linuxwd_rc скрипт (для redhat/mandrake, или linuxwd_rc_anydist для любого другого), укажите порт, к которому подключено наше устройство (ttyS1=COM2 или ttyS0=COM1). Скопируйте скрипт в
/etc/rc3.d/S21linuxwd
и
/etc/rc5.d/S21linuxwd
Тестирование
После того как вы все распаяли, проверьте систему на работоспособность перед тем как подключить ее к компьютеру. Подключите вывод, который будет позже подключен к линии RTS последовательного порта, на 40-50 секунд к блоку питания на 9-10V DC. Вы должны услышать щелчок при включении реле и должен загореться светодиод. Затем реле должно выключиться, а светодиод продолжать гореть до тех пор пока вы не подадите +10V на вывод, который будет позже подключен к линии DTR последовательного порта.
После того как вы все проверили, подсоедините все это к компьютеру. Программа linuxwd имеет режим тестирования, в этом режиме она может выводит данные на экран и останавливаться на время после выдачи импульса в линию DTR для эмулирования подвисания системы. Выполните команду:
linuxwd -t /dev/ttyS0
для запуска linuxwd в режиме теста (если оборудование подключено к COM2, укажите /dev/ttyS1).
Подключение устройства
Интерфейс RS232 имеет следующую распайку:
Нумерация 9-ти контактного разъема ( вилка ) на корпусе компьютера.
| 9-конт. | 25-конт. | Название | Направление | Описание |
|---|---|---|---|---|
| 1 | 8 | CD | вход | Детектор принимаемого сигнала |
| 2 | 3 | RXD | вход | Принимаемые данные |
| 3 | 2 | TXD | выход | Передаваемые данные |
| 4 | 20 | DTR | выход | Приемник готов |
| 5 | 7 | GND | — | Сигнальное заземление |
| 6 | 6 | DSR | вход | Передатчик готов |
| 7 | 4 | RTS | выход | Запрос передачи |
| 8 | 5 | CTS | вход | Готов к передаче |
| 9 | 22 | RI | ввод | Индикатор вызова |
Разъем RS232 устройства подключается непосредственно к последовательному порту компьютера. Для подключения кнопки сброса к реле, найдите провода от кнопки сброса компьютера и подключите реле параллельно.
Заключение
Подобная система мониторинга состояния системы не дает 100-процентную гарантию защиты вашей системы. Возможны нюансы, связанные с проверкой файловой системы после аварийного сбоя. Новые журналируемые файловые системы возможно и не будут иметь с этим проблем, но я с ними не экспериментировал. А устройство, которое предстаавлено здесь, это несложная и недорогая альтернатива аналогичным коммерческим продуктам.
Ссылки
- Программное обеспечение linuxwd : software download page
- Описание NE555 NE555.pdf 140K
Страница отзывов
У каждой заметки есть страница отзывов. На этой странице вы можете оставить свой комментарий или просмотреть комментарии других читателей :
| Webpages maintained by the LinuxFocus Editor team © Guido Socher, FDL LinuxFocus.org | Translation information: |
| en —> — : Guido Socher ( homepage ) |
| en —> ru: Gleba |
2002-12-03, generated by lfparser version 2.31