Как отключить энергосбережение ИБП с помощью NUT?
У меня установлен ИБП Proline 650 (последовательный)
Дополнительные сведения: ИБП имеет последовательное соединение с одной батареей 12 В SLA. (Он не был указан в списке совместимости NUT, но после компиляции NUT-сканера он был обнаружен для работы с драйвером blazer_ser. Кажется, он работает отлично, если я оставлю монитор ups работающим, сервер автоматически отключится, когда ИБП время работы от батареи составляло 30 секунд или минуту, или что-то в этом роде. ОС: Debian 7 Wheezy. Аппаратное обеспечение представляет собой один маломощный сервер i5 без головы с 1 3,5"жестким диском.
ПРОБЛЕМА
ИБП выключается примерно через 5 минут, в то время как заявленная емкость батареи все еще составляет 65% (вероятно, она занижает емкость, потому что я только что установил новую батарею), а напряжение батареи сообщается NUT как 12,1 В непосредственно перед тем, как он включается. с нагрузки. ИБП выключается примерно через 5 минут независимо от того, опрашивается ли сервер сервером или нет, и независимо от того, есть ли небольшая нагрузка или нет нагрузки. (Я включаю питание сервера напрямую от сети во время некоторых испытаний, чтобы избежать непредвиденной потери питания, когда ИБП выполняет энергосбережение)
Я ожидал, что с NUT, опрашивающим ИБП каждые несколько секунд для обновления статуса, ИБП поймет, что в зависимости от него есть компьютер, но ИБП не умен. ИБП показывает, что сервер потребляет 12% от максимальной выходной мощности, которую он считает "без нагрузки". После того, как ИБП отключает нагрузку, напряжение на клеммах батареи (одиночная 12 В батарея) имеет напряжение холостого хода около 12,6 В, что свидетельствует о том, что оно почти полностью заряжено.
Такое поведение при отключении питания в документах NUT называется energy_saving (battery.energysave).
Драйвер blazer_ser, похоже, не предлагает способ отключения energy_saving. Это кажется сумасшедшим, что нет никакого способа держать выход нагрузки ИБП включенным. Как можно рекламировать ИБП как обеспечивающий x количество энергии, но преждевременно отключающий его без простого способа исправить поведение в программном обеспечении?
Это мой статус вывода
$ upsc nutdev1@127.0.0.1 Battery.charge: 100 Батарея. Напряжение: 13.60 battery.voltage.high: 13.00 battery.voltage.low: 10.40 Battery.voltage.nominal: 12,0 device.type: ups имя водителя: blazer_ser driver.parameter.pollinterval: 2 driver.parameter.port: / dev / ttyS0 версия драйвера: 2.6.4 Driver.version.internal: 1,55 input.current.nominal: 3.0 input.frequency: 50,1 input.frequency.nominal: 50 входное напряжение: 221,0 input.voltage.fault: 221,0 входное напряжение номинальное: 220 выходное напряжение: 221,0 ups.beeper.status: включено ups.delay.shutdown: 30 ups.delay.start: 180 ups.load: 12 ups.status: OL температура поднимается: 25,0 ups.type: оффлайн / линейный интерактив
Я тоже побежал upsrw -u admin -p mypass -s -l nutdev1
но не было энергосбережения или подобного варианта. Только такие вещи, как beeper.toggle (проверено, работает как положено) и другие базовые вещи. Был вариант мгновенной выгрузки. Оно работает. Была опция загрузки, я пытался вызвать ее несколько раз, надеясь задержать отсчет энергосбережения, но это не сработало. Была также опция отключения отключения, которая тоже не помогла.
Любые предложения приветствуются. Я подумал о нескольких вещах, которые мне не интересны:
- Я пытался отключить энергосбережение, хотя этот параметр не указан
upscmd -u upsadmin1 -p mypass nutdev1 battery.energysave
Unexpected response from upsd: ERR CMD-NOT-SUPPORTED
- Попробуйте другие драйверы
- Получите другой ИБП (без гарантии, что другие локально доступные ИБП работают хорошо с NUT)
- Подключите больше нагрузки (тратить электричество) только ради того, чтобы считаться нагрузкой
- Взломайте ИБП в электронном виде, чтобы обмануть обнаружение нагрузки (время, проведенное не очень хорошо)
Кажется, должно быть простое программное решение, поэтому я и спрашиваю.
================
Согласно предложению BillThor, я обновил свой файл upsmon.conf:
$ grep -v '^ #' /etc/nut/upsmon.conf МОНИТОР nutdev1@127.0.0.1 1 foo2 bar2 master ПРОДУКТЫ 1 SHUTDOWNCMD "/ usr / bin / logger fake shutdown" POLLFREQ 5 POLLFREQALERT 5 ХОСТСИНЦ 15 МЕРТВ 15 POWERDOWNFLAG / etc / killpower NOTIFYFLAG ONLINE SYSLOG+ СТЕНЫ NOTIFYFLAG ONBATT SYSLOG+WALL NOTIFYFLAG LOWBATT SYSLOG+WALL NOTIFYFLAG FSD SYSLOG+WALL NOTIFYFLAG COMMOK SYSLOG+WALL NOTIFYFLAG COMMBAD SYSLOG+WALL ВЫКЛЮЧЕНИЕ УВЕДОМЛЕНИЯ SYSLOG+ СТЕНА NOTIFYFLAG REPLBATT SYSLOG+ WALL NOTIFYFLAG NOCOMM SYSLOG+ WALL NOTIFYFLAG NOPARENT SYSLOG+ WALL RBWARNTIME 43200 NOCOMMWARNTIME 300 FINALDELAY 5
Я включил ИБП (без питания от сети) 3 раза подряд без зарядки. Емкость и напряжение аккумулятора не изменились. Статус LB никогда не возникал. Вот системные журналы
2 декабря 07:08:00 t upsmon[2000]: запуск прошел успешно 2 декабря 07:08:00 t upsd[1942]: пользователь Mongser1@127.0.0.1 вошел в ИБП [nutdev1] 2 декабря 07:08:30 t upsmon [2002]: UPS nutdev1@127.0.0.1 на батарее 2 декабря 07:13:34 t blazer_ser[1939]: связь с ИБП потеряна: чтение состояния не выполнено! 2 декабря 07:13:36 t upsd[1942]: данные для ИБП [nutdev1] устарели - проверьте драйвер 2 декабря 07:13:40 t upsmon [2002]: сбой опроса ИБП [nutdev1@127.0.0.1] - данные устарели 2 декабря 07:13:40 t upsmon [2002]: потеря связи с UPS nutdev1@127.0.0.1 2 декабря, 07:13:45 t upsmon[2002]: сбой опроса ИБП [nutdev1@127.0.0.1] - данные устарели 2 декабря 07:13:50 t upsmon[2002]: сбой опроса ИБП [nutdev1@127.0.0.1] - данные устарели 2 декабря 07:13:55 t upsmon[2002]: сбой опроса UPS [nutdev1@127.0.0.1] - данные устарели 2 дек. 07:13:55 t upsd[1942]: Клиент Mongser1@127.0.0.1 установил FSD на ИБП [nutdev1] 2 декабря 07:13:55 t upsmon[2002]: Выполнение автоматического отключения при сбое питания 2 декабря 07:13:55 t upsmon[2002]: автоматический выход из системы и завершение работы 2 дек. 07:14:00 t logger: ложное отключение 2 декабря 07:17:31 t blazer_ser[1939]: связь с ИБП восстановлена 2 декабря, 07:17:31 t upsd[1942]: данные UPS [nutdev1] больше не устарели 2 декабря 07:22:38 t blazer_ser[1939]: связь с ИБП потеряна: ошибка чтения состояния! 2 декабря 07:22:40 t upsd[1942]: данные для ИБП [nutdev1] устарели - проверьте драйвер 2 декабря 07:25:23 t blazer_ser[1939]: связь с ИБП восстановлена 2 декабря 07:25:23 t upsd[1942]: данные UPS [nutdev1] больше не устарели 2 декабря 07:29:54 t upsd[1942]: мгновенная команда: upsadmin1@127.0.0.1 сделала shutdown.stop на nutdev1 2 декабря 07:29:55 t blazer_ser[1939]: instcmd: команда [shutdown.stop] обработана 2 декабря 07:30:17 t upsd[1942]: мгновенная команда: upsadmin1@127.0.0.1 сделала shutdown.stop на nutdev1 2 декабря 07:30:18 t blazer_ser[1939]: instcmd: команда [shutdown.stop] обработана 2 декабря 07:30:25 t upsd[1942]: мгновенная команда: upsadmin1@127.0.0.1 сделала shutdown.stop на nutdev1 2 декабря 07:30:26 t blazer_ser[1939]: instcmd: команда [shutdown.stop] обработана 2 декабря 07:30:31 t blazer_ser[1939]: связь с ИБП потеряна: не удалось прочитать состояние! 2 декабря 07:30:33 t upsd[1942]: данные для ИБП [nutdev1] устарели - проверьте драйвер 2 декабря 07:31:32 t blazer_ser[1939]: восстановлена связь с ИБП 2 декабря 07:31:32 t upsd[1942]: данные UPS [nutdev1] больше не устарели
Как вы можете видеть, я попытался очистить флаг / состояние FSD, выполнив эту команду (ту же команду, которая может успешно отключить нагрузку или переключить звуковой сигнал) upscmd -u upsadmin1 -p mypass nutdev1 shutdown.stop
Но это не прояснило состояние ФСД.
Вот некоторая информация о статусе (я удалил ненужные строки)
# Я запустил это сразу после отключения питания от сети после 07:08:30 $ upsc nutdev1@127.0.0.1 battery.charge: 69 battery.voltage: 12.20 ups.delay.shutdown: 30 ups.delay.start: 180 ups.load: 0 ups.status: OB **$ date && upsc nutdev1@127.0.0.1** вт 2 дек. 07:11:29 EST 2014 battery.charge: 65 батарея. Напряжение: 12.10 ups.delay.shutdown: 30 ups.delay. начало: 180 ups.load: 0 ups.status: OB # ни одно из этих полей не менялось все время после этого, кроме ups.status **date && upsc nutdev1@127.0.0.1** вт 2 дек 07:12:29 EST Заряд батареи 2014 года: 65 батарей. Напряжение питания: 12,10 ups.status: OB $ date && upsc nutdev1@127.0.0.1 Вт 2 дек. 07:18:26 EST 2014 Батарея: зарядка: 65 батарей. Напряжение: 12.10 ups.status: FSD OB ups.teuration: 25,0 # было еще несколько, все идентичные, затем наконец ** $ date && upsc nutdev1@127.0.0.1** вт дек 2 07:30:28 EST 2014 battery.charge: 65 battery.voltage: 12.10 ups.status: FSD OB $ date && upsc nutdev1@127.0.0.1 вт 2 дек. 07:31:11 EST 2014 Ошибка: устаревшие данные
Это мгновенные команды, предположительно поддерживаемые моим ИБП
**upscmd -u upsadmin1 -p mypass -l nutdev1** Мгновенные команды, поддерживаемые на ИБП [nutdev1]: beeper.toggle - Переключатель звукового сигнала ИБП ** работает ** load.off - немедленно выключить нагрузку ** работает ** load.on - немедленно включить нагрузку ** кажется, ничего не делает ** shutdown.return - выключите нагрузку и вернитесь, когда питание вернется shutdown.stayoff - выключить нагрузку и остаться выключенным shutdown.stop - останавливать текущее завершение работы ** не предотвращает завершение работы или снимает флажок FSD ** test.battery.start - запустить тест батареи test.battery.start.deep - начать глубокий тест батареи test.battery.start.quick - начать быстрый тест батареи test.battery.stop - остановить тест батареи
Теперь я попробовал еще больше возможностей. Я попытался запустить test.battery.start.quick, чтобы немного откалибровать батарею, с нагрузкой 35%. Он работал в течение минуты или двух от батареи, а затем снова переключился на питание от сети. Тогда у меня было еще две идеи. Я попытался отключить бипер, надеясь, что ИБП останется включенным, но он выключился как обычно через 5 минут. Тогда у меня была другая идея. Я вытащил вилку из розетки и запустил test.battery.start, надеясь, что смогу провести "тест батареи" бесконечно. Но ИБП все еще выключился через 5 минут.
В основном этот ИБП хорош для выключения, и не намного. Я собираюсь получить еще один UPS.
1 ответ
Если вы не используете команды в upssched.conf
, NUT должен подождать, пока ИБП не сообщит о низком заряде батареи, прежде чем делать отключение Убедитесь, что у вас ничего не запланировано.
Как только NUT начинает отключение, ИБП запускается после истечения времени ожидания. Это необходимо для обеспечения восстановления работы сервера, если питание восстанавливается до того, как в ИБП разрядится батарея. Время указано как FINALDELAY
в upsmon.conf
,
Вы можете включить ведение журнала всех уведомлений для всех событий в upsmon.conf
, Это может позволить вам определить, почему система закрывается так быстро. Эти настройки я использую:
NOTIFYFLAG ONBATT SYSLOG+WALL
NOTIFYFLAG ONLINE SYSLOG+WALL
NOTIFYFLAG FSD SYSLOG+WALL
NOTIFYFLAG SHUTDOWN SYSLOG+WALL
NOTIFYFLAG LOWBATT SYSLOG
NOTIFYFLAG REPLBATT SYSLOG
NOTIFYFLAG COMMOK SYSLOG
NOTIFYFLAG COMMBAD SYSLOG+WALL
NOTIFYFLAG NOCOMM SYSLOG+WALL
NOTIFYFLAG NOPARENT SYSLOG+WALL
Если NUT завершает работу баз на сценарии таймера, такую строку я ожидаю увидеть в журнале. Похоже, что ИБП прекращает связь через 5 минут, и NUT выполняет FSD последнего канала (принудительное отключение). Это то, что я хотел бы сделать. Пять минут должно быть достаточно, чтобы указывать на то, что питание вряд ли быстро восстановится.
Dec 2 07:13:55 t upsd[1942]: Client monuser1@127.0.0.1 set FSD on UPS [nutdev1]
Я ожидал бы, что NUT использует shutdown.return
подать сигнал на отключение ИБП. Это должно вызвать перезапуск ИБП после восстановления питания и кратковременное отключение, если питание восстанавливается до завершения выключения.
Я бы ожидал ups.delay.shutdown
а также ups.delay.start
быть настраиваемыми для цикла перезапуска ИБП. ups.delay.shutdown
должно дать серверу время для завершения цикла выключения, и может потребоваться увеличение. ups.delay.start
должно быть время, необходимое для стабилизации питания после его возвращения. Это также позволяет подзарядить батареи до того, как нагрузка будет приложена.
Как правило, вы не хотите разряжать батареи до выключения. Вы хотите иметь достаточно батареи, чтобы пройти еще один или два цикла на случай, если снова произойдет сбой питания.
Многие ИБП имеют автоматическое отключение при низкой нагрузке. Если нагрузка составляет менее 10% от номинальной нагрузки ИБП, то через 5 минут он отключится. У меня та же проблема с моим ИБП Proline. Просто увеличьте нагрузку на ИБП, и он не отключится. Я знаю, это немного противоречит интуитивно, если вы пытаетесь сэкономить заряд батареи.
Я не смог найти настройки программного обеспечения, чтобы отключить эту функцию. Кажется, это жестко закодировано в прошивке.
Я установил интеллектуальный переключатель sonoff на стороне нагрузки и запрограммировал его на включение 10% нагрузки на 10 секунд каждые 4 минуты. Это не элегантно, но поддерживает взлеты.