Posts tagged ‘watchdog’

Как работает watchdog в NetApp

Любая сложная электронная система подвержена аппаратным сбоям и ошибкам в ПО. Для того, чтобы предотвратить ее фатальное “зависание”, традиционно используется метод, под названием watchdog, или “сторожевой таймер”. Это аппаратное устройство, которое непрерывно “сбрасывается” в ходе нормальной работы устройства, а в случае его зависания, в свою очередь, сбрасывается им, либо выполняются какие-то специальные действия по немаскируемому прерыванию.

Таким устройством оснащен и NetApp. Его встроенный watchdog непрерывно мониторит состояние системной платы, памяти и карт ввода-вывода. Каждые 10ms Data ONTAP сбрасывает го таймер. Если таймер не сброшен в течение 1,5 секунд, то отдается команда Level 1, по которой формируется прерывание высокого приоритета, и начинается операция core dump. Если и на перывание Level 1 не получено реакции, то через полсекунды инициируется hard reset и перезагрузка системы. В случае перезагузки по Level 2 core dump уже не создается, так как перезагрузка происходит “жестко”.

В случае, если ваш контроллер оснащен RLM или BMC, то эти события регистрируются, и отсылается сообщение Autosupport.

Отмечу, что даже в случае “жесткой перезагрузки”, если часть данных, поступивших в систему на момент зависания еще не была занесена на диски (например, зависание системы произошло в интервал между сбросом одной consistency point в WAFL и другой, или в момент такого сброса), они останутся в памяти NVRAM, и будут перенесены на диски после рестарта, при переходе системы в нормальное состояние. Таким образом, даже “жесткая” перезагрузка не приводит к повреждению файловой системы дисков (пока сохранятся состояние NVRAM, в случае полностью заряженой батареи это примерно неделя).

Пример сообщения о срабатывании watchdog (из логов RLM):

Sat Feb 20 14:51:49 MST [slcsdcna02: mgr.boot.reason_abnormal:ALERT]: System
rebooted due to a watchdog reset.
System Alert from RLM of slcsdcna02 (REBOOT (watchdog reset)) CRITICAL
Record 600: Sun Oct 18 13:02:50 2009 [Agent Event.warning]: FIFO 0×8FFF - Agent
DrWho, L1_WD_TIMEOUT asserted.