Отправлено: 09.03.2013 17:53
В 2005 году был приобретён APC Back-UPS CS 350 для питания сетевого оборудования.
UPS подключили штатным кабелем к USB порту сервера, настроили Apcupsd и, казалось бы, - вот оно счастье. Да не тут то было - электричество тогда отключали пару раз в неделю и сервер, удивительным образом, всё время аварийно завершал свою работу. Тогда это списали на то, что подобный UPS почти не держит нагрузку (40 Вт) и заменили бесперебейник на APC SMART UPS 1000, подключённый через COM порт. Проблема была снята.
Спустя много лет понадобилось запитать через старый UPS ещё один роутер. Была куплена новая батарея CSB (UPS держит нагрузку 60 Вт почти 40 минут), бесперебойник подключили по той же схеме - через USB порт. В этот раз свет пропал в тот момент, когда я находился рядом. Каково же было моё удивление, когда сервер это событие вообще не увидел. Apcaccess выдавал 100% зарядку батареи и питание от сети в тот момент, когда UPS уже несколько минут работал от батарей . Первая мысль - "наверное мы тогда купили неисправный UPS". UPS был заменён на APC Back UPS CS 500. С ним вышла та же история - где-то через сутки (плюс / минус несколько часов) сервер начинает всегда получать одну и ту же информацию - "питание от сети, батарея заряжена на 100%". Даже если питание происходит от батареи. Слишком много для совпадений, не так ли?
Просмотр сообщений на форуме российской техподдержки APC показал, что с проблемой передачи неправильных данных через USB порт / отваливания USB столкнулся не только я: 1, 2. Кроме того выяснилось, что бесперебойники, имеющие прошивку вида 6.3.I, по сравнению с таковыми с прошивкой вида 808.q7.I, являются немного кастрированными: у них нельзя изменить никаких настроек (программой PowerChute или apctest). Соответствующего меню в PowerChute просто нет.
Было решено попробовать подключить такой UPS к COM порту сервера - в этом случае обычно не возникает проблем. Да только штатный COM шнур для UPS невозможно найти, несмотря на все обещания производителя. В паспорте UPS-а было написано: "обращайтесь в сервис центр и вам бесплатно выдадут шнур". Ага - щас... В конце концов, на просторах интернет была найдена нужная нам схема распайки кабеля:
CUSTOM-RJ45 CABLE
Signal Computer UPS UPS
DB9F RJ45-8 RJ45-10
RxD 2 ---------------- 1 2 TxD Send
TxD 3 ---------------- 7 8 RxD Receive
GND 5 ---------------- 6 7 Ground
FG Shield ---------------- 3 4 Frame Ground
The RJ45-8 pins are: looking at the end of the connector:
8 7 6 5 4 3 2 1
___________________
| . . . . . . . . |
| |
-------------------
|____|
The RJ45-10 pins are: looking at the end of the connector:
10 9 8 7 6 5 4 3 2 1
_______________________
| . . . . . . . . . . |
| |
-----------------------
|____|
Порт со стороны UPS похож на распространённый в локальных сетях разъём 8P8C (ошибочно называемый RJ45), только содержит не 8, а 10 контактов. К счастью - крайние контакты не задействованы и можно использовать стандартный для локальных сетей 8-контактный коннектор.
В результате, из аудио шнурка для CD/DVD привода (3 провода в общем экране) был изготовлен вот такой вот шнур (места паек покрыты защитным лаком):
Обратите внимание, что кабель должен быть экранированным, иначе наводящиеся на него помехи могут вызвать хаотическое переключение UPS с сети на батарею и обратно (см. англоязычный оригинал). В случае применения такого кабеля, в конфиге Apcupsd следует описать UPS как Smart:
UPSCABLE smart
UPSTYPE apcsmart
DEVICE /dev/cua01
В данном случае указан второй COM порт в OpenBSD.
Недельное тестирование показало устойчивость соединения и корректную передачу сигналов между сервером и UPS-ом.
Для корректного отключения UPS в OpenBSD следует запускать
/usr/local/sbin/apcupsd
без параметра "--kill-on-powerfail", предназначенного для настоящего SMART UPS. Команду выключения UPS следует добавить в /etc/rc.shutdown:
if [ -f /etc/apcupsd/powerfail ]; then
powerdown=YES
echo
echo "APCUPSD will now power off the UPS"
echo "Doing: /usr/local/sbin/apcupsd --killpower"
echo
/usr/local/sbin/apcupsd --killpower
echo
echo "Please ensure that the UPS has powered off before rebooting"
echo "Otherwise, the UPS may cut the power during the reboot!!!"
echo
fi
Путь к маркерному файлу:
/etc/apcupsd/powerfail
должен быть описан в apcupsd.conf.
Задержка между подачей команды на выключение UPS и, собственно, выключением составляет около 40 секунд (запрограммировано в прошивке). Чего обычно вполне достаточно.