Hlavní navigace

Správa systému s Upstart

Petr Krčmář 3. 7. 2007

V předchozím článku jsme se zmínili o tom, co je to Upstart, jak dokáže vylepšit náš systém a jaké jsou jeho výhody proti tradičnímu sysvinit. V tomto slibovaném pokračování plynule navážeme a ukážeme si, jak přesně Upstart funguje, co nabízí a jak zajišťuje konzistenci celého systému a jeho služeb.

Rekapitulace

Tento článek přímo navazuje na téma Upstart zpřehlední a zrychlí start systému. V předchozím článku jsme si stručně představili inicializační systém Upstart a vysvětlili jsme si jeho výhody proti klasickému sysvinit.

Upstart nahrazuje tradiční inicializační skripty, které předem určují, který proces se bude v jakou chvíli spouštět a pevně tak plánuje všechny systémové akce. Proti tomu Upstart jen definuje seznam akcí a ty pak zcela dynamicky a asynchronně spouští podle potřeb a aktuální situace.

To nejvíce oceníme zejména ve chvíli, kdy je potřeba „za jízdy” změnit některé důležité události a systém vnitřně přenastavit. Taková situace často nastává například při dodatečném přidání hardware, který je dnes podporován nejen technickými prostředky, ale také novými jádry.

Kromě zmíněné dynamiky je možno celkově urychlit řadu systémových akcí, protože asynchronní práce dovoluje mnoho nezávislých činností paralelizovat. To zabraňuje zbytečným prostojům, které často vznikají v případě klasického zavádění s použitím předem připravených skriptů.

Dnes se podíváme na to, jak přesně to v Upstart pracuje, jak vypadají jednotlivé akce a jaké události je mohou spouštět.

Události

Princip samotného Upstart můžeme velmi dobře pochopit, pokud se podáme na jednotlivé události, které systém spravuje. Na jejich základě se pak mohou spouštět jednotlivé akce. Vše je v tomto případě rekurzivní, takže spuštěná akce může opět vyvolat události, ty pak nastartují další akce a podobně. Události jsou tedy pro celý Upstart klíčové.

Běžné události, se kterými se můžeme setkat, jsou:

  • systém nastartoval
  • kořenový svazek je zapisovatelný
  • bylo přidáno blokové zařízení
  • souborový systém byl připojen
  • uběhla předem nastavená časová perioda
  • soubor byl pozměněn
  • byla spuštěna nebo zastavena jiná akce
  • v adresáři jsou nějaké soubory
  • bylo nalezeno síťové zařízení
  • změnila se konfigurace sítě
  • a další

Jak vidíte, událostí je poměrně hodně a jsou z mnoha různých kategorií. Navíc jejich počet není konečný a je možno definovat další podle situace a jednotlivých akcí. Díky tomu je možno reagovat v podstatě na každou důležitou změnu, která se uvnitř systému udá.

Události jsou vyvolávány jednak přímo samotným Upstart, mohou je ovšem spustit i samotné systémové procesy. K tomuto účelu má Upstart speciální informační rozhraní, které pochopitelně zohledňuje i práva jednotlivých programů k vyvolávání událostí. Chaos tedy nehrozí.

Stavy systémových procesů

Každá akce se může nacházet v jednom z pěti různých předem definovaných stavů. Mezi nimi je možné (a nutné) se během „života” služby přepínat. Možnosti jsou:

  • Startuje
  • Běží
  • Čeká
  • Znovuspuštění
  • Končí

Stavy Běží a Čeká jsou nejběžnější a proces se většinu času nachází právě v nich. Obvykle tento stav trvá do chvíle, než je vyvolána nová událost, která činnost konkrétního procesu změní. V takovém případě je obvykle stav změněn.

Všechny zbývající stavy (tedy kromě Běží a Čeká) jsou jen stavy dočasnými. Znamená to, že po dokončení určité činnosti dojde ke změně. Po přípravě na běh (stav Startuje) se stav změní na Běží a poté co za sebou proces uklidí (stav Končí), dojde k jeho ukončení.

Speciální stav Znovuspuštění se týká procesů, které mají být obnoveny, pokud dojde k jejich nenadálému zastavení. To znamená, že takové služby nemohou být zabity nebo jinak zrušeny. Neprojde-li proces před definitivním ukončením stavem Končí, automaticky se znovu nastartuje. Předtím však může na situaci reagovat tím, že během stavu Znovuspuštění provede například opravnou akci, zaloguje tuto událost a podobně.

Vyvolání událostí

Řekli jsme si, že události může vyvolávat samotný Upstart nebo mohou být vytvořeny některou z dříve spuštěných akcí. Tyto události pak ovlivňují stavy dalších akcí. Je samozřejmě možné, aby událost měnící stav vyvolala událost sama na sebe. Je tak možno v případě dokončení určité činnosti zastavit nadále nepotřebný proces.

Komunikace mezi Upstart a jednotlivými procesy je obousměrná, takže je možno se dotazovat na doplňkové informace, kterými se pak může vedle událostí služba řídí. Často se tak využívá možnosti dotazu na změnu stavu jiné akce, na důvod jejího pádu a podobně. Můžeme tak opět provázat více různých akcí.

Jak Upstart nahrazuje některé služby

Díky velmi široké paletě událostí je možno reagovat na mnoho stavů a vyřizovat práci místo dodatečných démonů. Akce může například definovat své spuštění po určitém časovém úseku (spusť mě za 20 minut) nebo v konkrétní dobu (spusť mě zítra v poledne). Tímto způsobem můžeme pohodlně nahradit cron atd.

Velmi podobně můžeme reagovat na změny ve správě napájení a provádět akce, které jsou jinak zajišťovány démony acpid a apmd. Takto můžeme například změnit nastavení hardware, pokud dojde k odpojení notebooku od napájení.

Dalším dobrým příkladem je správce sítí (Network Manager), který obvykle reaguje na události samostatně a spouští vlastní sadu skriptů pro správu sítí. Bez problémů jej dokáže nahradit Upstart reagující na standardní síťové události.

Integrace těchto systémových služeb má několik velmi pozitivních výhod. Jednak můžeme opět veškerou činnost paralelizovat a tím urychlit například start systému. Dále také ušetříme systémové prostředky, protože místo deseti různých démonů nám běží jen jeden. Největší výhoda tkví ovšem v centrálnosti veškeré konfigurace. Jedním způsobem tak dokážeme kontrolovat většinu systémových služeb.

Za normálních okolností (tedy při použití sysvinit) má každý démon vlastní konfigurační soubory, jejichž syntaxi musíme ovládat, pokud chceme provádět změny v jejich chování. Cron, apmd, Network Manager a další a další konfigurace a skripty. Pokud nasadíme Upstart, najdeme veškeré nastavení v /etc/event.d. Tam je vše na jednom místě a především zapsáno jedním způsobem.

Závěrem

Přestože se některým vývojářům princip Upstart nelíbí a dávají přednost klasickému init, je zřejmé, že je tento nový systém na dobré cestě nahradit standardní systémové skripty. Přestože není prvním ani posledním projektem tohoto druhu, díky čistému návrhu a podpoře tak velkého hráče, jakým je Canonical, má šanci uspět.

Běžný uživatel ocení rychlejší start systému a dobrou podporu pro hotplug zařízení, případně adekvátní reakce na nové stavy systému. Administrátor přivítá čistou a přímočarou konfiguraci, oddělení jednotlivých akcí a bezproblémovou správu závislostí.

Anketa

Líbí se vám Upstart?

Našli jste v článku chybu?

4. 7. 2007 18:23

Podle článku jsem získal dojem, že to bude "jednoúčelový" nástroj (tedy podle unixové "filosofie") -- bude sloužit pro zpracování nejrůznějších událostí. Ale tahle "jednoúčelovost" půjde využít řadou způsobů. Pokud někdo (distribuce, uživatel) bude _chtít_, bude si tím moct nahradit třeba acpid, který slouží pro ošetřování omezené množiny událostí, nebo crond a atd, které slouží pro ošetřování časových událostí (opakovaných, jednorázových).

4. 7. 2007 12:49

Zrychlení startu je jenom jeden use case. Okolo které se točí tahle hate-new-stuff diskuze.

Výhoda upstartu je v tom, že kombinuje možnosti init a rc skriptů dohromady.

Kolik z vás má puštěného apache z /etc/inittab? A při tom to dává perfektně smysl. Je potřeba, aby existoval proces, který službu restartuje pokud zdechne.

Pokud si dobře přečtete ten FAQ, tak generování časových událostí v initu dává smysl.

Jestli se to opravdu použije pro nahrazení klasického crona/atd/anacron, tak to je…







DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

Lupa.cz: Slevové šílenství je tu. Kde nakoupit na Black Friday?

Slevové šílenství je tu. Kde nakoupit na Black Friday?

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu