- předchozí článek - následující článek - obsah - úvodní stránka -

Linuxové noviny 07-08/2001

Apcupsd - free obslužný software záložních zdrojů APC

David Häring, 29. července 2001

Proč používat UPS

Každý uživatel, který s počítači pracuje delší dobu, již nepochybně zažil výpadek elektrického proudu. V lepším případě člověk přijde pouze o rozpracovaná data, v horším případě může dojít i k poškození souborového systému a ztracený čas i data pak mohou znamenat nezanedbatelnou finanční ztrátu. Výpadky napájení, ale i jeho kolísání se také v neposlední řadě podepisují na životnosti hardware počítače. Řešení představují záložní napájecí zdroje (UPS, z angl. "Uninterruptible Power Supply"), které jsou schopny v případě výpadku napájení v rozvodné síti po určitou dobu poskytovat napájení z baterií.

Typy záložních zdrojů

Pokud se rozhodneme záložní zdroj pořídit, máme na výběr z několika druhů. Nejjednodušší modely zajišťují pouze základní ochranu před výpadkem napájení - v případě přerušení dodávky el. proudu přepnou na napájení z baterie. Lepší modely současně poskytují ochranu před podpětím či přepětím v rozvodné síti. Dále se jednotlivé typy liší možností komunikace s počítačem: levnější modely pouze signalizují přerušení a obnovení dodávky napájení v síti, "chytřejší modely" umožňují mimo jiné monitorovat stav baterie - takže je možné přizpůsobit spuštění shutdownu aktuálnímu stavu baterie. Některé UPS komunikují pouze přes sériový port, i když v dnešní době se už pomalu přechází na USB, jiné mohou být navíc spravovány přes síť pomocí SNMP či přes modem.

Záložní zdroje a software pro Linux

Většina výrobců záložních zdrojů dnes buď podporuje Linux přímo a dodává obslužný software spolu s UPS nebo jej dává k dispozici prostřednictvím Internetu (příkladem budiž např. APC, Victron, Best Power, Fenton). Řada UPS je pod Linuxem podporována také "free" softwarem třetích stran (NUT, Apcupsd). V každém případě je zapotřebí se před zakoupením ujistit, zda je UPS a daný typ komunikačního kabelu pod Linuxem skutečně plně podporován.

Apcupsd a podporované typy UPS

Firma American Power Conversion Corporation, zkráceně APC, zpočátku dlouhou dobu nebyla ochotna poskytnout technické informace týkající se popisu komunikačních protokolů svých UPS. Což byla škoda, zejména vzhledem k tomu, že záložní zdroje APC byly poměrně rozšířené a i cenově patřily mezi přístupnější kategorie. Proto vznikl projekt Apcupsd, jehož autoři se rozhodli i za absence technických specifikací vytvořit alternativní obslužný software pro tyto UPS. Apcupsd podporuje všechny běžné modely: např. Back-UPS, Back-UPS Pro, Smart-UPS v/s, Smart-UPS a další. Kabel pro komunikaci s počítačem přes sériový port je zpravidla součástí dodávky UPS. Apcupsd zatím nepodporuje komunikaci přes USB.


webové rozhraní Apcupsd

Alternativní software

Podívejme se nejprve na software, který poskytuje přímo APC:

APC Simple Signaling Daemon je software pro komunikaci s UPS v základním "simple" nebo "basic signaling" režimu pomocí kabelu 940-0020B. Uplatnění nalezne zejména pro ovládání záložních zdrojů typu BackUPS, které komunikují pouze v režimu "basic signaling". Součástí instalace je kromě vlastního démona ssd i skript apcssd, který akceptuje volby start/stop a je určen pro instalaci do adresáře /etc/rc.d/init.d v distribucích Red Hat. Konfiguruje se pouze sériový port a doba po jejímž uplynutí se spustí shutdown v případě, že nedojde k obnovení dodávky el. proudu. Software je možné získat na serveru APC.

APC také vyvíjí obslužný software PowerChute a PowerChute Plus, který je k dispozici i pro Linux. PowerChute je ve srovnání s apcupsd zbytečně rozsáhlý a má také výrazně větší nároky na systémové prostředky. To je dáno mimo jiné tím, že na rozdíl od apcupsd (který se ovládá z příkazové řádky nebo přes webové rozhraní) poskytuje grafické rozhraní v prostředí X Window System.

PowerChute network shutdown je software pro modely UPS sloužící pro napájení většího počtu počítačů komunikující přes síť pomocí protokolu SNMP.

Pokud jde o software třetích stran, kromě Apcupsd záložní zdroje APC komfortně podporuje také NUT. Další software jako genpowerd anebo upsd podporují záložní zdroje APC pouze v omezené míře (nepodporují "smart" režim a fungují pouze s některými typy kabelů).

Komunikace mezi UPS a počítačem

Modely BackUPS a ShareUPS komunikují s počítačem pomocí již krátce zmíněného "simple signaling" protokolu. U těchto modelů se komunikace omezuje na několik signálů (výpadek napájení, obnovení napájení, vybití baterie, vypnutí UPS). Modely BackUPS Pro, SmartUPS, MatrixUPS používají tzv. "subsmart signaling" nebo "smart signaling" protokol, který umožňuje monitorovat stav baterie, teplotu či vlhkost uvnitř UPS, dotazovat se na nastavení UPS apod. Detailní popis protokolů je součástí dokumentace apcupsd.

Jak apcupsd funguje?

Apcupsd může běžet buď ve samostatném ("standalone") nebo síťovém ("net") režimu. Pokud máme k UPS připojen pouze jeden počítač, je situace jednoduchá. Apcupsd s UPS komunikuje přes sériový port a v případě potřeby zajistí včasné spuštění shutdownu (a případných dalších akcí definovaných uživatelem). Máme-li silnější záložní zdroj, ke kterému je připojeno napájení více počítačů, pak jeden počítač funguje jako tzv. master - monitoruje stav UPS přes sériový port, přes síť pak komunikuje s ostatními počítači a v případě potřeby iniciuje ukončení běhu systému (shutdown) nejen na systému, ke kterému je UPS připojena, ale i na všech ostatních.

Po startu se apcupsd nejprve pokusí zjistit, zda je k nakonfigurovaném portu skutečně připojena UPS. Pokud se podaří navázat komunikaci s UPS, spustí další proces, nebo více procesů v závislosti na dané konfiguraci. Pokud je UPS připojena přes sériový port, spustí apcupsd proces apcser ("apc serial"), který obstarává vlastní komunikaci s UPS. Je-li apcupsd konfigurován tak, aby sdílel informace o stavu UPS přes síť, spustí apcser dále proces apcnis ("apc network information server"). Pokud je počítač napájen z UPS, která je ovládána z jiného počítače, spustí apcupsd místo apcser proces apcslv ("apc slave"). Ten pak komunikuje přes síť s procesem apcmst ("apc master"), který je spuštěn na počítači, ke kterému je UPS připojena. Proces apcmst informuje o stavu UPS a případných výpadcích napájení ostatní podřízené počítače.

Instalace

Apcupsd je dostupný jak formou zdrojových kódů, tak předkompilovaných verzí ve formě RPM instalačních souborů. Pokud chceme instalovat ze zdrojových kódů, je použit autoconf, takže kompilace je přímočará (./configure; make; make install). Po instalaci je důležité se ujistit, zda-li byly správně instalovány skripty v /etc/rc.d/init.d apod.


Webové rozhraní Apcupsd, detailní statistika

Konfigurace

Konfigurace je standardně ukládána v souboru /etc/apcupsd/apcupsd.conf. Podívejme se na nejdůležitější konfigurovatelné parametry:
  • UPSCABLE - typ sériového kabelu je nutné zadat, zjistíme buď z potisku na kabelu, nebo z popisky produktu.
  • UPSTYPE - zadáme typ ups, platná klíčová slova jsou popsána v manuálové stránce apcupsd.
  • LOCKFILE - cesta k souboru, který slouží jako zámek, aby se více instancí aplikace nepokoušelo současně přistupovat k sériovému portu.
  • NETSERVER - pokud je zapnuto, apcupsd bude poskytovat informace o stavu UPS přes síť.
  • FACILITY - apcupsd standardně zapisuje do systémového logu pod kategorií zpráv daemon, pokud chceme mít zprávy apcupsd ve zvláštním souboru, můžeme použít některou z kategorií local0local7.
  • BATTERYLEVEL - tato direktiva udává minimální nabití baterie (v procentech), pokud nabití baterie klesne pod tuto mez, spustí se shutdown systému.
  • MINUTES - chytřejší modely záložních zdrojů umějí odhadnout, na jak dlouhou dobu jsou při výpadku rozvodné sítě ještě schopny zajistit napájení. Pokud tato doba klesne pod mez zadanou parametrem MINUTES, iniciuje UPS shutdown systému.
  • TIMEOUT - tato direktiva se na rozdíl od předchozích dvou používá u jednoduchých typů UPS, které průběžně neinformují o stavu baterie. Udává čas v sekundách, po jehož vypršení při výpadku napájení bude spuštěn shutdown systému. Direktivy BATTERYLEVEL, MINUTES a TIMEOUT mohou být nastaveny současně, apcupsd pak inicializuje shutdown při překročení libovolného z těchto tří kritérií.

Direktivy UPSCLASS a UPSMODE slouží k nastavení, zda se jedná o UPS využívanou pouze jedním počítačem, nebo je z jedné UPS napájeno více strojů a apcupsd pak běží v síťovém režimu apod. Se síťovým režimem dále souvisejí direktivy NETTIME, NETPORT, MASTER a SLAVE.

Otestování instalace

Testování instalace je velmi důležité. Abychom se vyhnuli nepříjemnostem při chybném nastavení, je vhodné nejprve UPS připojit k sériovému portu, ale počítač nechat zapojený přímo do rozvodné sítě. Nejdříve se ujistíme, že komunikace s UPS funguje podle našich představ:
  • ověříme si výpisem procesů, že apcupsd skutečně běží,
  • v systémovém logu by mělo být hlášení o úspěšném startu,
  • utilita apcaccess musí vypsat status záložního zdroje,
  • pokud přerušíme napájení UPS ze sítě, UPS se musí přepnout na baterie a apcupsd to musí zaregistrovat.

Teprve v případě, že vše funguje tak jak má, můžeme zapojit napájení počítače přes UPS a simulovat výpadek napájení naostro. Zpočátku je vhodné volit kritéria opatrně tak, aby se inicializoval shutdown s rezervou. V opačném případě by UPS vypnula napájení dříve než celá shutdown sekvence stihne proběhnout. Dodatečně pak parametry můžeme upravit.

Sledování stavu UPS

Součástí distribuce apcupsd je několik utilit pro monitorování stavu UPS:
  • apcaccess: je utilita pro příkazovou řádku, která podrobně vypíše stav a konfiguraci UPS, případně hodnoty parametrů uložených v paměti EEPROM UPS;
  • powerflute: je jednoduchá terminálová aplikace pro monitorování stavu UPS;
  • webové rozhraní multimon.cgi: umožňuje monitorovat přes síť jednu či více UPS.

Bezpečnost

Pokud se rozhodneme zpřístupnit informace o stavu UPS přes síť, (což je nezbytné např. pro funkčnost CGI rozhraní), tedy se zapnutou direktivou NETSERVER, je třeba počítat s tím, že ve výchozím nastavení může stav UPS číst kdokoliv. Apcupsd od verze 3.8.2 obsahuje podporu balíčku tcp_wrappers, takže můžeme přístup omezit patřičnou konfigurací v souborech /etc/hosts.deny a /etc/hosts.allow. Další možností (dostupnou i ve starších verzích apcuspd) je použít místo apcupsd pro publikaci stavu UPS samostatný démon apcnetd, který můžeme startovat přes inetd. (Tedy v konfiguračním souboru apcupsd.conf uvedeme NETSERVER off a nakonfigurujeme inetd tak. aby po příchozím požadavku spojení na port 7000 spouštěl apcnetd. Opět můžeme využít tcp_wrappers pro omezení přístupu.)

Pokud provozujeme více počítačů napájených přes jeden záložní zdroj a tyto počítače apcupsd kontroluje přes síť, je potřeba zajistit, aby nebylo možné simulovat falešný master apcupsd server, který by pak mohl kontaktovat systémy, které fungují jako slave a iniciovat neoprávněně shutdown. V konfiguraci slave počítačů je možné direktivou USERMAGIC nastavit heslo, které apcslv pošle při prvním kontaktu master procesu apcupsd. Tímto heslem pak master proces prokazuje svou totožnost. Ani toto řešení ovšem není ideální, protože heslo po síti putuje v nezašifrované podobě.


Powerflute - nástroj pro konzoli

Shrnutí

Záložní zdroje APC patří mezi ty nejrozšířenější a cenově přístupné. Pod Linuxem jsou dobře podporovány - uživatel má na výběr mezi software od APC (PowerChute) a volně šiřitelným sofware (zejména Apcupsd a NUT). Může si tedy podle vlastních potřeb vybrat takový software, který mu svým ovládáním nejvíce vyhovuje. Obslužný software Apcupsd je co do možností konfigurace velmi flexibilní a pro monitorování stavu UPS poskytuje nástroje jak pro příkazovou řádku / konzoli tak i webové rozhraní. Výhodou je i rozsáhlá a velmi přehledná dokumentace ve formě manuálu, článku v Linux Journalu a dalších informací. *


- předchozí článek - následující článek - obsah - úvodní stránka -