Spolupráce GNU/Linuxu se zařízením UPS III. - Spuštění
Plné zabezpečení serveru pomocí UPS (Uninterruptable Power Supply) není výhradně pro udržení chodu stroje během krátkých výpadků elektrické energie. Důležité je nastavení serveru, aby provedl operaci zastavení systému před vybitím energie z akumulátorů. Nikdy nemůžeme vědět jak dlouho bude trvat výpadek elektrické energie a náhlé odpojení napájení může způsobit katastrofální zničení dat.
Spuštění
V distribucích
GNU/Linuxu najdeme hotový skript umístěný v adresáři
/arc/init.d/, který automaticky spustí v odpovídajícím pořadí všechny tři démony, tj.
upsdrvctl, upsd a upsmon. Někdy se můžeme setkat s dvěma skripty – jeden spouští server (ovladač a
upsd) a druhý
upsmon. Pro diagnostiku můžeme ručně spustit postupně všechny programy a sledovat co se děje v systémových log souborech.Když už démon pracuje, první program, který můžeme použít pro zjištění stavu UPS, je
upsc. Zavoláme ho s parametrem jména UPS (ze souboru
ups.conf) a jménem počítače, na kterém běží
upsd. Například na mém systému se zařízením
Active Power 400 dostanu následující odpověď:
$upsc mojeups@localhost
battery.voltage: 13.9
driver.name: masterguar
ddriver.version: 2.0.0
driver.version.internal: 0.23
input.frequency: 49.9
input.voltage: 216.5
output.voltage: 216.5
ups.load: 087
ups.mfr: MASTERGUARD
ups.model: unknown
ups.status: OL
ups.temperature: 37.8
Toto je fungující konfigurace, kdy se náš systém bude automaticky vypínat v momentě vyčerpání baterií UPS. Jak jsem již dříve uvedl, shození systém v pravou chvíli zajišťuje démon
upsmon. V jeho konfiguračním souboru už musíme mít zapsáno:
SHUTDOWNCMD "/sbin/shutdown -h +0"
POWERDOWNFLAG /etc/killpower
Nyní můžeme zapsat všechna data a odpojit napájení od UPS. Systém se musí automaticky vypnout okamžitě po zjištění nízkého stavu baterií.
Vypínání UPS
Máme již konfiguraci, která náš server bezpečně odpojí před vybitím baterií v UPS. V této konfiguraci po vypnutí serveru, se baterie UPS musí vyčerpat úplně a úplně odřízne počítač od napájení. Následně při obnově napájení do UPSse náš počítač zapne automaticky (díky odpovídajícímu nastavení v BIOSu nebo speciálního propojení na desce). Je to kompletní konfigurace? Jak se určitě většina čtenářů domyslela – ne.
Co se, ale stane, když náš server začne proceduru vypínání a v tom momentě se obnoví napájení? Samozřejmě se vypne a opětovně se nezapne. Z toho důvodu mají i velmi levné UPS možnost programového vypnutí z počítače ke kterému jsou připojeny, pomocí sériového kabelu nebo USB. Samotné vypnutí UPS je realizováno
zadáním příkazu upsdrvctl shutdown. Když ho zadáme, za několik sekund bude napájení vypnuto. Samozřejmě tento příkaz musíme provést když jsou všechny procesy zastaveny a všechny disky odpojeny. Pokud jsme nainstalovali binární balíčky
NUT, tato procedura by měla být zkonfigurována okamžitě. Pokud ji chceme konfigurovat ručně nebo dokonale rozumět jak pracuje, musíme najít skript pro zastavení systému (např.
/etc/init.d/halt) nebo poslední prováděný skript při shození systému. Do toho skriptu musí dopsat něco takového:
if (test -f /etc/killpower)
then
echo "Vypínám UPS a loučím se!"
/usr/local/ups/bin/upsdrvctl shutdown
sleep 120
fi
Tento skript vypíná napájení pouze v situaci kdy upsmon vytvořil dříve soubor
/etc/killpower. Takže při normálním ukončení systému bude UPS nedotknuta.
Více počítačů
Nejčastěji se vyskytuje situace, kdy máme napájeno více počítačů z jedné UPS a pouze jeden z nich je připojen řídícím kabelem nebo USB. V tom případě na počítači připojeném k UPS konfigurujeme ovladač (
ups.conf) a upsd (upsd.conf, upsd.users). V
upsd konfigurujeme tolik uživatelů kolik je počítačů napájeno z této UPS, ale pouze jeden z nich (ten, který se bude připojovat z localhostu) bude pracovat v modu
master. Na všech ostatních počítačích konfigurujeme pouze
upsmon, pro mod
slave. Upsmon pracuje v modu slave v momentě, kdy obdrží informaci ze vzdálené UPS o vybité baterii, okamžitě začne proceduru vypínání svého systému. Pokud pracuje jako master nezačne vypínat okamžitě, ale bude čekat až se všichni klienti připojení na mateřského
upsd odpojí, což by mělo být současně s vypnutím systému. Teprve pak vypne sám sebe.
Pokud jeden počítač monitoruje více UPS, konfigurace je ještě jednodušší – prostě definujeme více strojů v
ups.conf a odvoláváme se na ně nezávisle, zadáním
jejich jména.
Další klienti
Jak jsem již dříve uvedl, hlavním programem, který čte data z našeho zařízení je
upsc. V balíčku najdeme také
upsrw, umožnující nastavení parametrů práce UPS. Vykonáním příkazu
upsrw mojeups@localhost nám ukáže všechny proměnné které můžeme nastavit. V případě mého zařízení je tento seznam prázdný... Další program z balíčku NUT je
upscmd, který slouží provádění různých příkazů na UPS, např. testování baterií. Příkaz
./upscmd -l mojeups@localhost ukáže seznam všech přístupných příkazu – na mém levném zařízení je tento seznam také prázdný.
Stav UPS můžeme monitorovat taképřes internetový prohlížeč. V balíčku
nut-client-cgi najdeme mimo jiné i program
upsstats.cgi. Díky němu rychle získáme informace o stavu havarijního napáječe z libovolného počítače, vybaveného internetovým prohlížečem. Abychom spustili
up-sstat.cgi, musíme:
- v souboru /etc/ups/hosts.conf připsat jména monitorovaných strojů, např.: MONITOR mejeups@loclhost „Nejaka UPSka“
- na tom samém místě musíme mít soubor upsstats.html a upsstats-single.html
- všechny tyto konfigurační soubory musí mít práva pro čtení pro uživatele, který pracuje na serveru http
- samotné programy upsstats.cgi a upsimage.cgi se musí nacházet v adresáři cgi-bin našeho serveru (nebo jiném s odpovídajícími právy)
Program v akci můžeme vidět na obrázku 1. Myslím, že může být užitečný v různých situacích :)
Pokud chceme monitorovat naši UPS v grafickém prostředí, můžeme použít program
Knutclient. Ne vždy ho najdeme v naší distribuci (hotové binární balíčky jsou pouze v Mandrakelinux, Debian Sarge a Sid), ale můžeme si stáhnout binární balíčky nebo zdroje ze stránek projektu. Program se ze zdrojů kompiluje velmi jednoduše (./configure, make, make install). Samotná konfigurace je taky velmi jednoduchá – zadáme pouze jméno adresu UPS a proměnné, které semají zobrazit.
Zakončení
Napájení naše počítačového systému je zabezpečeno teprve tehdy, když je naše UPS připojena a ovládána z počítače. Když konfigurujeme nějaký důležitý server, je třeba na to pamatovat od začátku. Testování zařízení typu NUT vyžaduje vypnutí stroje, což ne vždy bývá žádoucí.
Mimo to pomocí NUT máme přístup k mnoha datům, jako například stav nabití baterií nebo aktuální zatížení zařízení, které často nemůžeme zkontrolovat jiným způsobem, zvláště na levných zařízeních bez LCD displejů.
NUT nemá žádné velké požadavky na hardware, oproti tomu například program, který nabízí distributor mého zařízení – jeho aplikace napsaná v Java měla tak velké nároky, že se mi ji ani nepovedlo nainstalovat.
Odkazy:
Autor: Piotr Wolny
Publikováno z časopisu LINUX+
Rubrika: Hardware
Vydáno: 15.01.2006
Počítadlo: 8900 čtenářů