02 May 19 00:12, Eugene Grosbein wrote to Semen Panevin:
SP>> У этого алгоритма есть только один видимый мне трудно обоходимый SP>> но редкий недостаток. Если питание успело восстановиться после SP>> завершения apcupsd но до killpower (флаг powerfail некому SP>> удалить) то получаем кирпич который надо включать руками. Один SP>> раз мне на такой кейз удалось наступить. Есть ещё один SP>> недостаток, при восстановлении питания после инициализации SP>> shutdown получаем включенный упс но выключенный комп. Обходится SP>> включением по таймеру или любому другому эвенту или патчем SP>> killpower скрипта на выполнение reboot при отсутствии powerfail SP>> флага.
EG> Все эти недостатки исчезают, если вместо shutdown делать ребут и EG> на ранней стадии загрузки проверять уровень заряда батареи EG> и приостанавливать загрузку, если уровень низок - до тех EG> пор, пока он не поднимется выше порога. Если питание успело EG> восстановиться, то батарея зарядится и загрузка просто продолжится.
Звучит красиво, но поскольку никто пока не предложил реализации этого в виде стартовых скриптов для FreeBSD (как минимум на уровне бета версии, которую можно было бы потестировать с реальной машиной и бесперебойником), оставляем этот алгоритм в области благопожеланий.
А я насколько хватило ума - настолько предложил простое и конкретное решение, которое устраняет хотя бы один - зато главный - race.
То, что это не реализовано в фирменных софтах от APC (лично я использовал под винду и под солярис) - тоже внушает определённые сомнения в реализуемости.
EG> Второго недостатка нет, потому что мы вообще никогда не выключаем UPS. EG> Он может только вырубиться сам из-за тотального разряда батареи и EG> комп отрубится, так и не смонтировав файловые системы EG> и не завершив загрузку, а потом включится как UPS снова подаст EG> питание.