Назад | Перейти на главную страницу

FreeBSD определяет, была ли перезагрузка из-за потери питания

Мы запускаем FreeNAS (который построен на FreeBSD) для работы наших систем хранения данных. Он работает на APC Smart-UPS 750 ВА X.

Несколько раз я был предупрежден о том, что сервер не работает нашими системами мониторинга. Через несколько минут сервер заработает без проблем.

Когда я бегу last Я вижу, что сервер только что загрузился и проверяет /var/log/messages Я вижу, что он прошел через весь процесс загрузки, но я не вижу паники или каких-либо причин для его выключения. Он буквально переходит от простого к выводу загрузочной информации.

Это заставило меня задуматься, не вызвано ли это отключением электроэнергии, но как я могу точно определить, что это так? Думаю, одним из способов было бы получить интерактивную карту для ИБП APC и подключить ее к сети ... Каким-либо другим способом я прямо сейчас узнаю, почему это произошло?

Я думаю, что есть несколько очевидных способов узнать больше:

  • Подключите дополнительное устройство к тому же выходу ИБП. Если оба устройства перезагрузятся одновременно, это будет свидетельством проблемы с питанием.
  • Подключите некоторое оборудование, которое может отслеживать фактическое выходное напряжение на выходе ИБП и записывать изменения с течением времени.

Я не чувствую, что ты сделал минимум устранения неполадок здесь. Это стало плохим вопросом из-за представленных пугающих деталей.

  • Возможно, ваш сервер дает сбой.
  • Какой тип серверного оборудования вы используете?
  • У вас есть внеполосное управление на этом сервере? (МОТ, IPMI, DRAC) Если да, то что там написано?
  • Как часто это происходит?
  • Сбрасываются ли какие-либо другие устройства в той же комнате? Переключатели? Другие серверы? Что еще затронуто?
  • Где расположена ваша система мониторинга по отношению к серверу, если у нее явно нет проблем?

Очевидно, что нужно сделать ...

  • Подключите черный последовательный кабель APC к ИБП и серверу FreeNAS.
  • Посмотрите логи вашей службы apcupsd. (/var/log/serviceapcupsd.events в Linux)

(легко)

2014-10-27 05:18:35 -0400  Power failure.
2014-10-27 05:18:38 -0400  Power is back. UPS running on mains.
2014-10-27 13:20:22 -0400  Power failure.
2014-10-27 13:20:25 -0400  Power is back. UPS running on mains.
2014-10-29 08:00:51 -0400  Power failure.
2014-10-29 08:00:54 -0400  Power is back. UPS running on mains.
2014-10-29 08:02:13 -0400  Power failure.
2014-10-29 08:02:16 -0400  Power is back. UPS running on mains.
2014-11-01 10:05:41 -0400  Power failure.
2014-11-01 10:05:44 -0400  Power is back. UPS running on mains.
  • Проверьте состояние вашей батареи. Они длятся 3-5 лет. Если старше, он не удерживает вашу силовую нагрузку при переключении на питание от батареи.
  • Проверьте чувствительность вашего ИБП к колебаниям напряжения. По умолчанию они установлены на ВЫСОКИЙ. Я обычно меняю это значение на LOW в дрянной среде.
  • Есть ли у вашего сервера FreeNAS два источника питания? (если нет, это должно) Подключите один к стене, чтобы обойти ИБП и устранить причину возникновения ИБП. Это также может помочь при регистрации, если сервер перезагружается.
  • Обновите прошивку вашего ИБП.
  • Обновите прошивку вашего сервера.
  • Вызов APC служба поддержки.

(тоже легко)

[root@General /var/log]# apcaccess status localhost:3551
APC      : 001,052,1316
DATE     : 2014-11-17 08:24:55 -0500
HOSTNAME : General
VERSION  : 3.14.10 (13 September 2011) redhat
UPSNAME  : UPS_IDEN
CABLE    : Custom Cable Smart
DRIVER   : APC Smart UPS (any)
UPSMODE  : Stand Alone
STARTTIME: 2014-09-24 14:14:05 -0400
MODEL    : SMART-UPS 2200 RM XL
STATUS   : ONLINE LOWBATT
LINEV    : 119.6 Volts
LOADPCT  :  60.8 Percent Load Capacity
BCHARGE  : 100.0 Percent
TIMELEFT :   3.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
MAXLINEV : 120.9 Volts
MINLINEV : 118.9 Volts
OUTPUTV  : 119.6 Volts
SENSE    : High
DWAKE    : 000 Seconds
DSHUTD   : 180 Seconds
DLOWBATT : 02 Minutes
LOTRANS  : 103.0 Volts
HITRANS  : 132.0 Volts
RETPCT   : 000.0 Percent
ITEMP    : 44.5 C Internal
ALARMDEL : 5 seconds
BATTV    : 56.1 Volts
LINEFREQ : 60.0 Hz
LASTXFER : No transfers since turnon
NUMXFERS : 11
XONBATT  : 2014-11-15 09:05:48 -0500
TONBATT  : 0 seconds
CUMONBATT: 44 seconds
XOFFBATT : 2014-11-15 09:05:52 -0500
SELFTEST : NO
STESTI   : 336
STATFLAG : 0x07000048 Status Flag
DIPSW    : 0x00 Dip Switch
REG1     : 0x00 Register 1
REG2     : 0x00 Register 2
REG3     : 0x00 Register 3
MANDATE  : 11/05/05
SERIALNO : QS0545111716
BATTDATE : 11/05/05
NOMOUTV  : 115 Volts
NOMBATTV :  48.0 Volts
EXTBATTS : 0
FIRMWARE : 83.14.D
END APC  : 2014-11-17 08:25:04 -0500

FreeBSD имеет отличный порт под названием sysutils/apcupsd предназначены для взаимодействия с ИБП APC smart-UPS.

Подключите ваш ИБП с помощью USB-кабеля к хосту. Отредактируйте /usr/local/etc/apcupsd/apcupsd.conf:

###
UPSCABLE usb
UPSTYPE usb
DEVICE 
POLLTIME 60
LOCKFILE /var/spool/lock
BATTERYLEVEL 15
MINUTES 10
TIMEOUT 0
ANNOY 300
ANNOYDELAY 60
KILLDELAY 120
UPSCLASS standalone
STATTIME 60
STATFILE /var/log/apcupsd.status
###

Эта конфигурация означает следующее поведение:

  • когда питание пропадает менее чем на ЕЖЕДНЕВНО, ИБП просто переходит на питание от батареи без сигнала

  • через ANNOYDELAY секунд ИБП подаст звуковой сигнал.

  • когда (уровень заряда становится ниже BATTERYLEVEL в процентах) ИЛИ (расчетное время работы от батареи меньше МИНУТ), apcupsd будет ждать KILLDELAY секунд и начнется shutdown -h now обработать.

  • после этого ИБП отключит нагрузку и перейдет в режим гибернации.

  • при восстановлении питания ИБП включает нагрузку, и, если он настроен на загрузку после сбоя питания, он запускается в обычном режиме и цикл завершается.

Ваша машина не может точно сказать, что произошло при отключении электроэнергии: эти электроны просто перестают появляться. ИБП может знать (если вы теряете питание, а не из-за нестабильного источника питания или чего-то еще), но я не думаю, что у вас есть большие надежды на то, что сервер сможет вам сказать.

Сохраните свои журналы на диск. Вы можете изменить путь журнала к диску с помощью эта утилита или изменить путь вручную. При следующей перезагрузке вы сможете узнать причину.