Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Upstart zpřehlední a zrychlí start systému

Operační systémy unixového typu se obvykle zavádějí za pomoci procesu nazvaného init. To je tradiční způsob, který se už používá desítky let. Nyní je tu ovšem jeho náhrada, která dokáže nejen zrychlit start systému, ale především vnést do správy procesů tolik potřebnou dynamiku a plnou automatizaci.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Jak pracuje klasický init

Init je „první systémový proces”. To znamená, že je spouštěn bezprostředně po startu jádra a má na starosti spouštění systému, zastavení systému a správu veškerých interních procesů. On se stará o zavedení příslušných služeb, nastavení sítě, aktivaci hardware a podobně.

Aktuálně používaná implementace init vychází ze systému UNIX System V a je proto známá jako sysvinit. Tento klasický init vytváří systém úrovní běhu (runlevelů), které jsou obvykle označeny číslem. V případě změny úrovně je spuštěna příslušná sada skriptů. Rovněž při ukončování úrovně je spuštěná jiná sada, která se postará o správné zastavení služeb. Tolik stručná rekapitulace, a pokud vás zajímají podrobnosti, můžete je najít například v jednom z našich starších článků.

Tento způsob správy systému samozřejmě funguje už několik desítek let a zřejmě by fungoval i dále. Problém je, že z dnešního pohledu už přináší řadu omezení. Není tedy divu, že se řada vývojářů snaží najít nový způsob.

Proč init nestačí?

Statické zavádění konkrétní skupiny skriptů a aplikací funguje velmi dobře, pokud jste schopni zajistit dodržení všech závislostí. Ano, i startovací skripty je potřeba spouštět v konkrétním pořadí. Pokud například chceme inicializovat síťové služby, musíme předem zajistit získání IP adresy od DHCP serveru. Stejně tak například před spuštěním hudebního démona musíme nejprve aktivovat ALSA a podobně.

Potíž je v tom, že řada aktuálně prováděných akcí už není „dostatečně předvídatelná” na to, abychom byli schopni předem říci, co je třeba zavést. Paradoxně tak problém zhoršují moderní jádra řady 2.6, která nabízejí hotplug funkce, umožňující přidávat a odebírat zařízení během práce. Během startu systému tedy nemáme jistotu, že je hardware připojen a my můžeme zavádět příslušný software.

Situací, kdy dochází ke změnám důležitých systémových součástí, je dnes poměrně hodně. Konkrétně se může jednat o odpojení/při­pojení nějakého hardware, uspání systému, snaha připojit některé souborové systémy a podobně.

Dobrým příkladem jsou například USB disky, se kterými nemůžeme na počátku nijak počítat, protože nejsou jednoduše k dispozici. Zavedení příslušných ovladačů, zapsání do /etc/fstab a připojení tedy můžeme provádět až ve chvíli, kdy je disk zapojen.

Podobný problém přichází například v případě adresáře /usr. Pokud se během práce pokusíme takový disk přidat, je potřeba detekovat síťové zařízení, nahrát do něj firmware, zapojit třeba bezpečnostní vrstvy, zavést NFS a pak teprve můžeme připojovat adresář.

V takovém případě je potřeba hlídat mnoho různých závislostí, volat sekundární skripty, zavádět nové jaderné moduly a podobně. Je tu samozřejmě možnost upravit sysvinit skripty tak, aby se dokázaly s většinou událostí vypořádat. Je to ale jednak velmi komplikované, zároveň to může přinést další problémy a stejně tím nevyřešíme veškeré problémy. Většina systémů to tímto způsobem samozřejmě řeší.

Je tu Upstart

Upstart je náhradou za klasický init, kterou napsal Scott James Remnant. Jeho zaměstnavatelem je společnost Canonical, je tedy logické, že je Upstart psán primárně pro distribuci Ubuntu. Je samozřejmě použitelný v dalších systémech.

Upstart přistupuje ke správě systémových služeb naprosto jinak než sysvinit. Jeho práce je velmi dynamická a především naprosto asynchronní. Znamená to, že je schopen správně a efektivně zavádět připravené služby, aniž by k tomu potřeboval předem napsaný seznam a postup.

I přesto se ovšem snaží zachovat plnou zpětnou kompatibilitu. To je obecně považováno za jeho velkou přednost. Samozřejmě není jediným projektem, který se snaží o náhradu sysvinit. Ostatní podobné snahy ovšem vyžadují naprosté přepsání startovacích skriptů a nedovolují použití těch starých, případně kombinaci obou přístupů. To Upstart umí, takže jeho nasazení není pro systém tak kritické a průlomové jako v případě jiných náhrad init.

Co umí?

Řekli jsme si, že Upstart nejde tradiční cestou startovacích skriptů, ve kterých jsou pevně stanoveny jednotlivé kroky pro start systému. Upstart místo toho zavádí systém samostatných akcí (jobs). Akce nejsou vyvolávány automaticky, ale na základě vyvolaných událostí. Každá událost může způsobit spuštění dalších akcí, a tak dále.

Výhodou tohoto asynchronního přístupu je také zrychlení startu systému, protože jednotlivé akce se mohou spouštět paralelně na pozadí. Samozřejmě není například důvod, proč by se při čekání na DHCP server (při inicializaci sítě) nemohla třeba inicializovat zvuková karta nebo spouštět logovací démon.

Díky flexibilitě Upstart je možno také zjednodušit systémovou konfiguraci. Protože je možno přesně nastavit, který proces se má kdy a jak spouštět, odpadá nutnost provozovat v systému doplňkové démony jako je například cron, inetd, acpid, apmd a podobně. Tito démoni v principu spouštějí akce ve chvílích, kdy je to třeba. Což je přesně činnost, na kterou je Upstart připraven.

Kde Upstart najdeme?

Už jsem se zmínil o nasazení v Ubuntu. Canonical svůj Upstart do standardní instalace integroval už v Edgy Eft, ale až ve Feisty Fawn získal na důležitosti. Další distribucí, ve které Upstart najdeme, je Frugalware Linux.

Jak Upstart pracuje?

Tolik k teorii zavádění a správy systému. Velmi zajímavá je také vnitřní činnost a princip Upstart. O tom, jak to celé funguje, jak se předávají události a které akce je možno takto spravovat, si povíme ve druhé části tohoto článku.

Petr Krčmář

Petr Krčmář

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Vystudoval elektroniku se zaměřením na počítačové systémy, nyní se zabývá médii, především těmi elektronickými.

Školení: Django framework: Struktura a základy vývoje (nejen) webových aplikací

Django je vyspělý webový framework napsaný v jazyce Python, který podporuje extrémně rychlý vývoj společně s dodržováním principů dobrého návrhu. Snaží se co nejvíce automatizovat a drží se principu DRY (z anglického Don't Repeat Yourself — neopakuj se).

  • Instalace potřebného softwaru
  • Programování v Pythonu: příkazy, funkce, datové typy, moduly, objekty, výjimky
  • Struktura aplikace v Djangu
  • Typické záležitosti webových aplikací: Napojení na databázi, zpracování vstupu od uživatele, přihlášení či generování dynamického obsahu.
  • Implementace principu MVC: modely, pohledy (views) a šablony
  • Seznámení s užitečnými komponenty frameworku Django
  • Šikovné praktiky

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 3,55

Přehled názorů

jo vole
bzuk & strup 28. 6. 2007 00:20
Nový
├ 
Re: jo vole
Prcek 28. 6. 2007 03:44
Nový
│
├ 
Re: jo vole
jos 28. 6. 2007 08:10
Nový
│
│
└ 
Re: jo vole
. 28. 6. 2007 10:48
Nový
│
└ 
Re: jo vole
iCEmAN 20. 7. 2007 00:24
Nový
└ 
Re: jo vole
BLEK. 5. 7. 2007 13:48
Nový
rychlost bootu
SigTERM 28. 6. 2007 01:36
Nový
└ 
Re: rychlost bootu
Jaazz 28. 6. 2007 11:28
Nový
 
├ 
Re: rychlost bootu
anonymní uživatel 28. 6. 2007 12:19
Nový
 
│
└ 
Re: rychlost bootu
anonymní uživatel 28. 6. 2007 12:53
Nový
 
│
 
└ 
Re: rychlost bootu
BoodOk 29. 6. 2007 08:39
Nový
 
└ 
Re: rychlost bootu
anonymní uživatel 28. 6. 2007 12:47
Nový
 
 
├ 
Re: rychlost bootu
Jaazz 28. 6. 2007 13:42
Nový
 
 
│
└ 
Re: rychlost bootu
anonymní uživatel 28. 6. 2007 21:36
Nový
 
 
├ 
Re: rychlost bootu
Jaazz 28. 6. 2007 13:44
Nový
 
 
└ 
Re: rychlost bootu
Ash 28. 6. 2007 22:20
Nový
Doplnkovy demoni
Tom 28. 6. 2007 07:05
Nový
└ 
Re: Doplnkovy demoni
T 28. 6. 2007 12:08
Nový
 
└ 
Re: Doplnkovy demoni
Ondra Baláž 29. 6. 2007 17:31
Nový
administrace
mates 28. 6. 2007 07:58
Nový
└ 
Re: administrace
aToM 28. 6. 2007 08:01
Nový
 
└ 
Re: administrace
test 28. 6. 2007 08:30
Nový
 
 
├ 
Re: administrace
Ilfirin 28. 6. 2007 08:33
Nový
 
 
│
└ 
Re: administrace
JK 28. 6. 2007 08:42
Nový
 
 
│
 
└ 
Re: administrace
!* 28. 6. 2007 14:43
Nový
 
 
│
 
 
├ 
Re: administrace
Zenithy 28. 6. 2007 20:54
Nový
 
 
│
 
 
└ 
Re: administrace
lmojzis 25. 1. 2009 14:01
Nový
 
 
├ 
Re: administrace
anonymní uživatel 28. 6. 2007 08:51
Nový
 
 
│
└ 
Re: administrace
jaromrax 28. 6. 2007 13:11
Nový
 
 
│
 
├ 
Re: administrace
anonymní uživatel 28. 6. 2007 13:39
Nový
 
 
│
 
│
└ 
Re: administrace
anonymní uživatel 2. 7. 2007 01:48
Nový
 
 
│
 
│
 
└ 
Re: administrace
anonymní uživatel 2. 7. 2007 17:23
Nový
 
 
│
 
│
 
 
└ 
Re: administrace
Miloš 2. 7. 2007 19:57
Nový
 
 
│
 
└ 
Re: administrace
anonymní uživatel 28. 6. 2007 13:47
Nový
 
 
│
 
 
└ 
Re: administrace
AGM69 28. 6. 2007 14:25
Nový
 
 
│
 
 
 
└ 
Re: administrace
anonymní uživatel 28. 6. 2007 16:27
Nový
 
 
│
 
 
 
 
└ 
Re: administrace
AGM69 28. 6. 2007 19:25
Nový
 
 
│
 
 
 
 
 
└ 
Re: administrace
anonymní uživatel 28. 6. 2007 19:36
Nový
 
 
├ 
Re: administrace
AlYoSHA 28. 6. 2007 09:10
Nový
 
 
│
└ 
Re: administrace
K.M. 28. 6. 2007 09:27
Nový
 
 
│
 
└ 
Re: administrace
AlYoSHA 28. 6. 2007 10:31
Nový
 
 
│
 
 
└ 
Re: administrace
AGM69 28. 6. 2007 14:30
Nový
 
 
│
 
 
 
├ 
Re: administrace
Tom fi 28. 6. 2007 15:00
Nový
 
 
│
 
 
 
│
├ 
Re: administrace
AGM69 28. 6. 2007 15:09
Nový
 
 
│
 
 
 
│
├ 
Re: administrace
anonymní uživatel 28. 6. 2007 16:59
Nový
 
 
│
 
 
 
│
│
└ 
Re: administrace
anonymní uživatel 28. 6. 2007 17:06
Nový
 
 
│
 
 
 
│
│
 
├ 
Re: administrace
anonymní uživatel 29. 6. 2007 09:27
Nový
 
 
│
 
 
 
│
│
 
│
└ 
Re: administrace
anonymní uživatel 29. 6. 2007 16:22
Nový
 
 
│
 
 
 
│
│
 
└ 
Re: administrace
Tom fi 29. 6. 2007 10:55
Nový
 
 
│
 
 
 
│
│
 
 
└ 
Re: administrace
anonymní uživatel 29. 6. 2007 16:25
Nový
 
 
│
 
 
 
│
│
 
 
 
└ 
Re: administrace
Tom fi 29. 6. 2007 23:53
Nový
 
 
│
 
 
 
│
│
 
 
 
 
└ 
Re: administrace
anonymní uživatel 30. 6. 2007 01:04
Nový
 
 
│
 
 
 
│
└ 
Re: administrace
AlYoSHA 28. 6. 2007 20:58
Nový
 
 
│
 
 
 
└ 
Re: administrace
AlYoSHA 28. 6. 2007 16:44
Nový
 
 
├ 
Re: administrace
Ondřej Surý 28. 6. 2007 09:44
Nový
 
 
└ 
Re: administrace
anonymní uživatel 28. 6. 2007 10:02
Nový
 
 
 
└ 
Re: administrace
Ondrej Skutka 28. 6. 2007 10:23
Nový
 
 
 
 
└ 
Re: administrace
anonymní uživatel 28. 6. 2007 10:38
Nový
 
 
 
 
 
└ 
Re: administrace
anonymní uživatel 28. 6. 2007 10:42
Nový
uvod jadro zaver
michal kovac 28. 6. 2007 09:05
Nový
└ 
Re: uvod jadro zaver
marvin 13. 7. 2007 22:22
Nový
nepresnost
dvh 28. 6. 2007 09:10
Nový
└ 
Re: nepresnost
Jiří Bělka 28. 6. 2007 09:29
Nový
 
└ 
Re: nepresnost
anonymní uživatel 1. 7. 2007 01:38
Nový
dynamika?!
Jazz (not Jaazz) 28. 6. 2007 11:47
Nový
└ 
oprava
Jazz (not Jaazz) 28. 6. 2007 11:49
Nový
Problem v prikladech
Ondrej 'SanTiago' Zajicek 28. 6. 2007 13:31
Nový
└ 
Re: Problem v prikladech
anonymní uživatel 28. 6. 2007 13:59
Nový
 
├ 
Re: Problem v prikladech
Ondrej 'SanTiago' Zajicek 28. 6. 2007 14:25
Nový
 
│
└ 
Re: Problem v prikladech
anonymní uživatel 1. 7. 2007 01:41
Nový
 
└ 
Re: Problem v prikladech
petr_p 28. 6. 2007 16:03
Nový
 
 
├ 
Re: Problem v prikladech
anonymní uživatel 28. 6. 2007 17:03
Nový
 
 
│
└ 
Re: Problem v prikladech
petr_p 28. 6. 2007 20:09
Nový
 
 
└ 
Re: Problem v prikladech
anonymní uživatel 1. 7. 2007 01:43
Nový
KISS ??!?
Haplo 28. 6. 2007 18:07
Nový
└ 
Re: KISS ??!?
LO 28. 6. 2007 18:28
Nový
radeji funkcni powermanagement
pj 29. 6. 2007 11:51
Nový
Nabidku Start
Jindru 29. 6. 2007 13:19
Nový
Každý názor musí mít titulek.
drcprc 29. 6. 2007 16:31
Nový
Initng - jaký je rozdíl
Jan Molič 29. 6. 2007 17:33
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem