Na závěr série článků z konference o využití Open Source softwaru ve školství nabídneme trochu odbornější inspirace správcům školních sítí. PXES Linux je bezdisková linuxová distribuce vytvořená pro bezdiskové tenké klienty, která má pro případné nasazení ve školském prostředí nemálo výhod.
PXES Linux je bezdisková linuxová distribuce vytvořená pro bezdiskové tenké klienty. Systém je bootovatelný na mnoho způsobů (včetně etherbootu a tftp), nepoužívá NFS (narozdíl od např. LTSP, kořenový adresář je na RAM disku. Může fungovat jako plnohodnotný klient pro XDMCP (Xserver 4.3), VNC, ICA (Citrix), RDP (Windows Terminal Server), a další. Umožňuje velmi triviální individuální i hromadnou konfiguraci klientů, vedle toho nevyžaduje žádnou údržbu či přímé úpravy, a relativně snadné je i vysdílení lokálních zařízení (zvuk, data, tiskárny). Systém funguje již s 32Mb RAM a procesorem 486. Mateřským projektem PXES je netstation, sourozencem projekt thinstation.
1 Úvod do problematiky tenkých klientů
Technologie tenkých klientů (thin clients) či terminálů je aplikací klient-serverové architektury. Terminál (obecně textový či grafický) funguje doslova jako „koncovka“ pouze zobrazující uživatelské výstupy a předávající uživatelské vstupy serveru. Spojení mezi nimi je realizováno pomocí různých protokolů, které uvádíme níže.
Výhody terminálů jsou především malá výpočetní náročnost (a tedy i malé hardwarové nároky a nízká cena), prakticky nulová údržba terminálů, centrální správa.
Za nevýhody bývají považovány zejména přímá závislost funkce terminálů na serveru, poměrně velký přenos dat po síti, náročnější konfigurace softwaru na serveru, případně velké požadavky na jeho výkonnost.
Pro nevýdělečné vzdělávací instituce je nízká cena přirozeně velkým benefitem, ostatní výhody ocení zvláště správce systému.
Jak se lze vyrovnat s nevýhodami provozování tenkých klientů? Závislost na fungování serveru je nevýhoda jen do té doby, než si uvědomíme, že server typicky je mnohem spolehlivější, lépe zabezpečen proti výpadkům proudu, selhání disků atd. než každá jednotlivá stanice. Přenos dat po síti je věc volby protokolu, náročnost konfigurace serveru není o mnoho větší než pro běžnou stanici (níže) a jednou z věcí, které ji mohou velmi usnadnit, je volba protokolu pro terminál.
Výkonnost serveru může představovat (zvláště vzhledem k jeho ceně) skutečný problém. Čím více tenkých klientů je však třeba obsloužit, tím jsou však větší úspory na hardware pro klienty. Naopak pro obsluhu aplikací menší sítě (řádově 5-10 stanic) může, zvláště v dnešní době, stačit docela běžně prodávané PC.
2 Protokoly podporované v PXES
PXES podporuje mnoho protokolů navržených pro terminálovou komunikaci. V linuxovém prostředí je nejzajímavější XDMCP (známý Xprotokol), který je také ze všech uvedených také historicky nejstarší (nyní ve verzi 11), v prostředí unixovém bezesporu zdaleka nejrozšířenější. PXES dále podporuje VNC (dnes užívaný v prostředí s různými platformami), ICA Citrix (Windows), RDP (Windows Terminal Server). Než však je klient schopen komunikovat se serverem, musí na něm být spuštěn operační systém.
3 PXES od bootu až po shutdown
PXES bootuje jako běžný linuxový systém; upozorňujeme zejména na body, kde se odlišuje.
3.1 Získání a spuštění kernelu
Etherboot je základní způsob bootování PXES (lze bootovat např. i lokálně z CDROM či USB, tuto metodu zde však neuvažujeme).
V případě lokálního bootování spustí BIOS bootsector vybraného zařízení (harddisk, disketa, vestavěný či USB flashdisk, CDROM), který dále nahraje a spustí DHCP klienta (k tomu může bootsector přichystat např. LILO). Při bootování ze sítě, pomocí speciálního protokolu podporovaného BIOSem (starší Novellovský RPL, případně novější Preboot Execution Environment, PXE — podobnost s PXES je zde čistě náhodná), probíhá vše podobně: stáhne se DHCP klient a spustí se.
DHCP klient se spojí se serverem a vedle parametrů sítě obdrží i jméno souboru, který si protokolem tftp (trivial file transfer protocol) stáhne. Hlavičky etherbootu na počátku tohoto souboru určují, kam se části souboru uloží do paměti a na kterou adresu je pak předáno řízení dalšího běhu počítače. V případě PXES má etherbootový soubor (také nazývaný nbi—network bootable image) dvě části: bzImage kernelu a komprimovaný ramdisk.
Po spuštění kernelu je již vše stejné bez ohledu na použitou bootovací metodu.
3.2 Inicializace systému
Komprimovaný (squashfs) ramdisk obsahuje kořenový systém souborů, na kterém je busybox (obsahující minimální shell a další systémové utility), kompletní xfree86 X server, případně programy pro obsluhu lokálních médií (samba server, nbd-server), zvukové karty (esd), lokální tiskárny (lpd), minimální webserver (pro vzdálené zjišťování systémových proměnných apod.), telnet server, tftp klient a další.
Povšimněme si, že vzhledem k přítomnosti veškerých programů na ramdisku nepotřebuje PXES ke svému spuštění sít’. Nepotřebuje ani linuxový server (na rozdíl od např. LTSP, kde je / na NFS serveru) a může být nasazen prostředí používajícím pouzeWindows (v tom případě je nutno provozovat DHCP a tftp server na Windows).
Po namountování / se spustí init skripty. Je-li zapnuta lokální konfigurace, pomocí tftp protkolu se stáhnou soubory relevantní pro danou stanici uložené na serveru. Proběhne konfigurace vstupních a výstupních zařízení (síťová karta, myš, zvuková karta, grafická karta, monitor, datová média, USB), přičemž většina parametrů může být automaticky detekována, vygenerují se konfigurační soubory pro spouštěné služby a spouští se.
Poslední se spouští X server. Funguje-li PXES v režimu XDMCP, server se připojí k zadanému display serveru. V jiném případě (VNC, ICA, RDP) se v rámci X serveru lokálně spustí klient obsluhující tyto protokoly.
3.3 Obsluha terminálových komponent
X server běžně obsluhuje pouze grafický výstup a vstup klávesnice a myši. Ač bylo učiněno několik pokusů o integraci dalších komponent přímo do X serveru (např. XAudio), všeobecně se neužívají. Proto tedy je nutné spouštět další, speciální programy.
3.3.1 Datová média
Z důvodů velmi snadné konfigurace a zřejmě i velmi snadné integrace do prostředí Windows (např. při provozování RDP terminálů) jsou lokální datová média zpřístupněna protokolem SMB (implementovaným v Linuxovém serveru Samba). Tato média (konkrétně se jedná o diskety, harddisky, CD/DVD zařízení, USB flashdisky) lze pak mountovat na potřebná místa (typicky někam na aplikačním serveru, aby na ně mohly bez problémů přistupovat aplikace) pomocí příkazu smbmount.
Nevýhoda tohoto přístupu je zřejmá: SMB jako protokol poměrně vysoké úrovně (operující na souborech, adresářích atd.) zakrývá co se děje níže. K médiu nelze přistupovat jako k blokovému zařízení (tj. nelze např. formátovat diskety, měnit partition tabulku pevného disku, přečíst CD ISO image apod.), dále nelze použít volání ioctl (představující nikoliv požadavky na data, ale na samotné zařízení: např. vysunutí CD mechaniky, kontrola, zda je vložené médium; proto nelze používat např. vypalovací mechaniky, přehrávat audio CD).
Tyto problémy lze vyřešit použitím síťově transparentních blokových zařízení. Existují (minimálně) dvě implementace:
- nbd (network block device), který je již dlouho součástí vanilla kernelu, server (běžící na terminálu a obsluhující požadavky na lokální média) je standardní součástí distribuce PXES.
- enbd (enhanced network block device), vzniknuvší z nbd; rozšiřuje jej o poměrně robustní mechanismus ochrany dat proti výpadkům sítě, oboustrannou cache, vícenásobné spojení různými cestami, podporu vyjímatelných médií, možnost zabezpečeného spojení (SSL), přenos některých požadavků ioctl, zmenšení části kódu přímo v kernelu. Enbd však není součástí vanilla kernelu (ke stažení jako patch a zdrojové kódy userspace programů), jeho autor však poskytuje svižnou podporu na mailinglistu.
Pro přístup k datům je tedy třeba:
- na terminálu spustit server, který obsluhuje zařízení na lokální straně (běží zcela v userspace);
- na aplikačním serveru spustit klienta, který začně komunikaci s (e)nbd serverm a alokuje si zařízení /dev/nd* (network device; omezený počet souborů /dev/nd* může představovat specifický problém), jež se od této chvíle chová jako skutečné blokové zařízení (zde je pochopitelně třeba mít v kernelu zavedenou podporu (e)nbd);
- namountovat /dev/nd* někam do lokálního filesystému.
Zřejmě je použití (e)nbd oproti SMB komplikovanější; u SMB stačí provést mount -t smbfs.
Zvláštností médií USB oproti jiným vyjímatelným (diskety, CD) je to, že zařízení pro přístup k nim neexistuje, dokud není médium připojeno (USB je pouze sběrnice, nikoliv mechanika: /dev/fd0 nezmizí, když se vytáhne disketa). Pokud tedy v momentě, kdy PXES generuje konfiguraci smb serveru, není zařízení přítomno a neexistuje tedy ani příslušné zařízení, smb server nemůže zprostředkovat přístup na toto médium. Proto tedy jediný způsob, jak k USB disku přistupovat, je coldplugging — přítomnost zařízení při startu systému a nemožnost jej za chodu měnit.
Předpokládáme, že tato drobnost bude brzy odstraněna, až PXES přejde na Linux 2.6 a hotplug.
3.3.2 Zvuková karta
Obsluha zvukového vstupu a výstupu je standardně prováděna přes ESD (enlightened sound daemon), obvykle podporovaný mnoha vrstvami vyšší úrovně: jmenujme alespoň aRts (zvukový server KDE) a gstreamer (součást GNOME). Z jiných síťových audio systémů bylo otestováno NAS (network audio system), jehož základní výhodu představuje možnost na transparentně emulovat OSS (open sound system) rozhraní /dev/dsp pomocí libaudiooss a údajně i lepší architektura (odrážející se na výkonnosti a spolehlivosti) než esd; narazili jsme však na chyby v serveru (SIGSEGV apod).
3.3.3 Tiskárna
Je-li k terminálu připojená tiskárna, lze ji vysdílet lokálním lpd serverem. Tato možnost nebyla námi otestována.
3.4 Další služby na terminálu
Zde uvedené služby slouží spíše pro správu či inspekci systému.
3.4.1 web server
Primitivní webserver umožňuje sledovat vzdáleně různé zajímavé informace o terminálu. Vesměs se jedná o výstup systémových příkazů jako ifconfig, lsmod, mount atp.
3.4.2 telnet
Na PXES může volitelně běžet telnet server, umožňující vzdálené přihlášení do systému. Telnet není dle našeho názoru z pohledu bezpečnosti příliš na závadu, v případě proniknutí do stroje hrozí maximálně přístup k lokálním médiím (tedy cizím datům) či operace s nemnohými lokálními procesy. SSH server se plánuje v některé z dalších verzí PXES.
3.4.3 konzole
Volitelně je možné komunikovat s terminálem přes lokální konzoli, s přihlášením či bez něj. Zároveň je zde možné prohlížet základní systémové údaje (podobně jako to, vzdáleně, lze přes web server).
3.5 Vypnutí terminálu
Pokud terminál nemá namountovaný lokální harddisk (to jsme nezkoušeli a považujeme to v běžném případě za zbytečné), vypíná se jednoduše power switchem.
Václav Šmilauer
0 komentářů:
Okomentovat