53 UPRAVLJANJE PORAZDELJENIH SISTEMOV INFORMATICA 1/89 Deskriptor^: SISTEM PORAZDELJENI, VODENJE, UPRAVLJANJE, SISTEM OPERACIJSKI Jože Rugelj IJS Ljubljana POVZETEK Upravljarye omogoča ohranjanje konsistentnosti sistema in pomaga uporabnikom pri delu s sistemom. Pomen uprav-ljalskih aktivnosti se povečuje z naraščanjem zmogljivosti in kompleksnosti sistemov in z njihovo porazdeljenostjo. NajpomembnejŠe upravljalske funkcije so upravljanje konfiguracije, spremljanje delovanja siBtema, ravnanje ob odpovedih, varnostne in zaščitne aktivnosti, obračunavanje in upravljanje z imeni. ABSTRACT Management enables keeping the consistency of a system and facilitates the usage of a Bystem. The importance of management activities increases with the growing of performances and complexity of the systems and with their distribution. The most important management functions are configuration management, monitoring, fault handling, protection and security activities, accounting and name management. Upravljanje porazdeljenih sistemov vključuje mnogo vidikov porazdeljenega procesiranja in je v enakem odnosu do porazdeljenih aplikacij kot klasičen operacijski sistem do lokalnih aplikacij [COST83]. Zato pogosto imeniyemo nabor upravljalskih funkcij za porazdeljen sistem porazdeljen operacijski sistem. Najbolj splošno bi lahko kot cilj upravljanja porazdeljenega sistema opredelili ohrar\janje sistema v star\ju, ki ga zahtevajo uporabniki, in to s čimmanjšimi stroški. To pomeni, da sistem omogoča uporabnikom in upravljalcem sistema načrtovanje, organiziranje, nadzorovanje in vodenje uporabe porazdeljenih virov informacijskega procesiranja. 1 Cilji upravljanja Upravljanje sistema se izvaja v skladu z upravljalsko politiko, ki določa osnovna pravila v zvezi z upravljalskimj odločitvami [Slom87]. Problemi, s katerimi se ukvarja upravljalska politika, so komercialne in tehnične narave. V podjetjih je njen cilj maksimizacija prihodkov, v izobraževalnih ustanovah mini-mizacija stroškov in pri vojaških projektih zagotovljena visoka zanesljivost. Upravljalsko politiko uporabljamo za določitev strategije in taktike pri upravljanju. Strategija je dolgoročen načrt, kaj je treba storiti za uresničenje ciljev, taktika pa nam pove, kako bomo to storili. Upravljalske aktivnosti bi lahko razdelili na • dolgoročne • operativne. Dolgoročne odločitve se nanašajo predvsem na načrtovanje razvoja in širjerya porazdeljenega sistema, pa tudi na strategije optimizacije uporabe virov, poimenovanja virov, varnosti in zanesljivosti sistema. Take dolgoročne odločitve sprejemajo ljudje, ki vodijo in upravljajo porazdeljen sistem. V primeru tesno 6klopljenih sistemov, ki jih obravnavamo v tem delu, pri tem ni posebnih težav, saj je lastnik porazdeljenega sistema ena organizacija. Zato ne prihaja do konfliktov pri reševanju teh problemov tako kot pri Šibko sklopljenih sistemih. Operativno upravljanje porazdeljenega sistema se izvaja v času delovanja sistema, torej sočasno z izvajar\jem uporabniških programov. Operativno upravljanje skrbi za optimizacijo izrabe virov v sistemu in možnost spreminjanja konfiguracije sistema, za reševanje iz napak, za varnost sistema in za obračunavanje stroSkov za uporabo virov. Večina teh funkcij je soodvisna med seboj. Odločitve morajo biti zelo hitre, v nekaj desetinkah ali tisočinkah sekunde in zato je skoraj nemogoče, da bi pri njih sodeloval človek. Upravljalske aktivnosti so zato izvedene kot strežniki znotraj sistema. Pogosto upravljalske aktivnosti niso eksplicitno ločene in delujejo kot vključene komponente v standardnih strežnikih. Spremljajo delovanje posameznih komponent in sproti ocenjujejo njihovo delovanje. V primeru, ko delovanje komponente ne ustreza pričakovanjem, strežniki upravljale! izvedejo predvidene operacije [COST83]. Slika .1 prikazuje splošno shemo upravljalske operacije. Vhod Procesiranje Izhod (Spremljanje) (Odločanje) (Krmiljenje) Slika .1: Shema upravljalske operacije Samo v skrajnih primerih ali na zahtevo upravljalske funkcije javljajo rezultate svoje aktivnosti človeku, upravljalcu in uporabniku Bistema. Oblika in obseg informacije, ki jo pripravi upravljalska aktivnost, je odvisna od tega, komu je namenjena. Uporabnika predvsem zanimajo osnovne informacije o stanju sistema, ki naj bodo kratke in pregledne. Za upravljalce, ki skrbijo tudi za vzdrževanje sistema in dolgoročno upravljanje, pa so pomembne vse podrobnosti. 2 Zgodovinski pregled upravljalskih pristopov v računalniških sistemih Glavna cilja upravljanja računalniških sistemov sta čimboljša izraba računalniške opreme in čimbolj enostaven vmesnik proti 54 3.2 Spremljanje delovanja sistema Spremljanje delovanja sistema je povezano z delovanjem vseh upravljalskih funkcij, saj sluli kot vhodni podatek za proces odločanja in ¡uvajanja upravljalskih aktivnosti. Ta funkcija upravljanja torej nudi servis ostalim upravljalskim funkcijam, redkeje pa neposredno uporabniku. Poseben pomen imajo rezultati spremljanja delovanja sistema za ravnanje ob odpovedih in reSevanje iz napak. Funkcija spremljanja delovanja sistema je lahko realizirana centralizirano ali porazdeljeno. Tudi pri tej funkciji imata ena in druga rečitev dobre in slabe lastnosti. Centralizirana reSitev je enostavnejša, a manj zanesljiva in prilagodljiva, porazdeljena pa ima komplementarne lastnosti. Pri obeh se pojavlja problem konsistentnosti star\ja sistema, ki je posledica nedeterminizma pri prenosu sporočil po komunikacijski mreži in sinhronizacijskih problemov, ki sledijo iz tega. Pri spremljanju delovanja se zbere velike količine podatkov in strežnik, ki opravlja funkcijo spremljanja, mora te podatke zbrati in urediti tako, da nudijo ustrezno informacijo o delovanju sistema. 3.3 Ravnanje pri odpovedih Ravnanje pri odpovedih je upravljalska funkcija, ki nudi servis strežnikom in uporabnikom porazdeljenega sistema, ko pride do odpovedi ali nepravilnega delovanja ene ali več komponent v sistemu. Posledica nenormalnega Btanja sistema ali kateregakoli njegovega dela se pokaže v obliki napak pri izvajanju operacij pri nekaterih strežnikih v sistemu. Ravnanje pri odpovedih vključuje zaznavo napak in njihovo analizo, iskanje okvarjenih komponent, odpravo okvare ali ustrezno zamenjavo komponente, odpravljane posledic napak in obvestila o napaki up-ravljalcem sistema in po potrebi uporabnikom. V porazdeljenem sistemu so problemi ravnanja z odpovedmi Se večji, saj se napake zaradi sodelovanja med porazdeljenimi komponentami hitro Sirijo, nadzor in odpravljanje posledic pa sta zaradi porazdeljenosti težja [LeLa8lj. Pri pregledu aktivnosti se bomo posvetili tistim servisom, ki jih v primeru odpovedi nudijo strežniki v sistemu. Odkrivanje napak Če hočemo odkrivati napake v sistemu med delovanjem, moramo vnaprej poznati vsaj približno obnašanje sistema. Tako lahko v vsakem trenutku primerjamo dejansko stanje sistema s predvidenim in če se pojavi odstopanje, to pomeni napako. Ker pa v splofinem stanj sistema ne poznamo vnaprej, dodamo posebne komponente strojne in programske opreme, ki izvajajo različne teste ob začetku delovanja sistema in med samim delovanjem, periodično ali ob posebnih pogojih. Rezultate teh testov pri pravilno delujočem sistemu poznamo in zato lahko odkrijemo odpovedi in nepravilnosti, če se pojavijo. Taki dodatni testi sicer zmanjkujejo zmogljivost sistema, vendar je to cena, ki jo moramo plačati za povečano zanesljivost delovanja. Pogostost in natančnost testiranja je odvisna od zahtev po zanesljivosti. Tudi zmanjšanje zmogljivosti sistema je lahko znak za napake v sistemu, vendar je take značilnosti razmeroma težko formalno opisati in zato tudi niso primerne za uporabo pri sprotni diagnostiki. Analiza napak In odkrivanje okvarjenih komponent Analiza rezultatov testov pomaga pri odkrivanju napak in vzrokov, zaradi katerih je prišlo do napak. V porazdeljenih sistemih je težko določiti izvor napake, Baj se rezultati prenaSajo med posameznimi strežniki, ki so na različnih lokacijah. Napako lahko zaradi premalo pogostega testiranja spregledamo in jo zaznamo Šele, ko se je že razširila po sistemu. Zato kljub očitni napaki težko odkrijemo njen izvor. Sodelovanje strežnikov, ki se ukvarjajo z analizo napak in so porazdeljeni po sistemu, omogoča analizo dognanj v celotnem Bistemu. Popravilo ali lamenjava okvarjene komponente Ko odkrijemo vzrok za napako in s tem tudi komponento, ki ne deliy'e pravilno, najprej tako komponento izločimo, da ne bi povzročala dodatnih težav. To storimo tako, da o napaki obvestimo upravljalca konfiguracije. Potem poskuSamo tako komponento delno ali v celoti popraviti s servisi, ki so na razpolago v sistemu, če tako popravilo uspe, komponento vrnemo v sistem. Pri komponentah, ki so bolj kompleksne, je molno tudi delno popravilo. V takih primerih komponenta izvaja samo omejeno Število funkcij. Kadar okvare ne moremo odpraviti s servisi, ki so na razpolago v sistemu, ali jo lahko le delno odpravimo, o tem obvestimo upravljalca sistema; le-ta o okvari obvesti vzdrževalce programske ali strojne opreme in po potrebi tudi uporabnika. To je potrebno predvsem v primerih, ko servis zaradi odpovedi komponent ne more nuditi predvidenega servisa, saj določeni viri niso replicirani. Če se zaradi odpovedi posamezne komponente delo porazdeli med druge in to pomeni samo zmanjšanje zmogljivosti sistema, to običajno ni usodno za uporabnika in ga zato ni treba vznemirjati s poročili o odpovedih. Odprava posledic odpovedi Odpravljanje posledic odpovedi po odstranitvi ali popravilu okvarjene komponente je osredotočeno predvsem na razveljavitev rezultatov, ki VBebujejo napake, posledice odpovedi. Kompleksnost problema lahko zmanjšamo z uvedbo principa nedeljivih akcij. To so segmenti programske opreme, ki se izvedejo skupaj. Poznamo vse povezave, ki jih ima komponenta, ki vsebuje tak segment, znotraj segmenta z drugimi komponentami. Takoj po izvedbi tega segmenta izvedemo potrebne teste in v primeru napake razveljavimo dobljene rezultate. Ker poznamo vse povezave z drugimi komponentami in je le-teh omejeno Število, je to dokaj preprosto. V končni fazi postavimo vse komponente v stanje, v kateri so bile, tik preden se je pojavila napaka. S tem smo odpravili posledice odpovedi. 3.4 Varnost in zaSčlta V vsakem računalniškem sistemu morajo obstajati metode in mehanizmi za zaSčito vseh objektov v sistemu. S tem je vsakemu uporabniku zagotovljena varnost. To pomeni, da so podatki in servisi dostopni samo pooblaščenim strežnikom in uporabnikom, da so servisi, ki jih nudijo strežniki, ustrezni, ter da vedno poznamo identiteto uporabnikov servisov. To potrebujemo zaradi nadzora delovanja sistema in analize ob zlorabi in za obračunavanje. ZaSčita objektov pomeni nadzor dosega do le-teh. Objekti v sistemu morajo biti zaščiteni pred nepooblaščenimi uporabniki in pred nenadzorovano uporabo zaradi napak in odpovedi v programski ali strojni opremi. Pri problemih zaSčite v računalniških sistemih je treba ugotoviti, komu lahko zaupamo. V centraliziranih sistemih bo bili mehanizmi za zaSčito zbrani v jedru operacijskega sistema. Jedro je bilo namreč ustrezno zaSčiteno pred ostalimi deli sistema in so mu lahko vsi zaupali. Pri porazdeljenih sistemih sta dva problema, ki narekujeta drugačno reSevanje. Ker so jedra operacijskega sistema porazdeljena v sistemu, zelo lahko pride do poskusov spreminjanja le-teh in do nedovoljenih operacij v sistemu. Drugi razlog za 55 uporabniku. V teku razvoja sistemov so se načini in možnosti ta zagotavljanje teh ciljev spreminjali. Pri prvih računalnikih so bile procesne in pomnilniSke zmogljivosti zelo drage. Zato si ni bilo mogoče predstavljati, da bi računalnik sam izvajal kakršnekoli upravljalske funkcije. Uporabnikov je bilo zelo malo in vsak je bil hkrati programer, operater in upravljalec sistema. Sam je poskrbel za nalaganje programov in podatkov, za izvajanje programa in za izpis rezultatov. Ko so se zmogljivosti računalnikov povečevale in se je tudi cena procesiranja zniževala, je bilo uporabnikov vedno več. Računalniki so že imeli enostavne up-ravljalske mehanizme, ki so se imenovali paketni sistemi. Le-ti so skrbeli za zaporedno nalaganje programov in podatkov, za izvajanje programov in za shranjevanje rezultatov. Vsak program se je izvedel do konca, in Sele potem je sistem naložil nov program. Tak sistem je bistveno izboljSal uporabo virov v sistemu, saj je bilo mnogo manj izgube časa med posameznimi posli kot prej pri ročnem upravljanju. Naslednja težava, ki je onemogočala boljSo izrabo zmogljivosti, je bila razlika v hitrosti delovanja procesnih enot in vhodno-izhodnih enot. Zato so uvedli tako imenovano istočasno računanje in vhod-izhod, dobro poznano po začetnicah angleškega opisa te dejavnosti kot SPOOLer (simultaneous peripheral operation on line ). To je bila prva oblika kvazi-paralelnega izvajanja več dejavnosti, ki je zahtevala določene zmožnosti v strojni opremi. Tu mislimo predvsem na prekinitvene mehanizme. Na ta način je računalnik prevzel skrb za upravljanje mnogih virov in v večji meri omogočil doseganje zgoraj opredeljenih ciljev. Naslednji korak, ki je računalnik Se bolj približal uporabniku, je bil uporaba operacijskih sistemov z dodeljevanjem časa (time sharing). Tak operacijski sistem hkrati več uporabnikom omogoča interaktivno delo. Za razliko od paketnega sistema se tu program praviloma ne izvrSi naenkrat. Uporabnik dobi pravico do uporabe virov v sistemu samo za kratke intervale, vendar ima zaradi velike hitrosti delovanja občutek, kot da uporabna računalnik sam. To seveda velja, če sistem ni preobremenjen. Viri v sistemu so dobro izkoriščeni, vendar zahteva režijsko delo pri menjanju dejavnosti precej časa. Čim boljSi so bili računalniki in čim večje so bile zmogljivosti, več uporabnikov jih je uporabljalo in pojavljale so se nove zahteve. Z optimizacijo algoritmov in programov in z novimi tehnološkimi rešitvami so nekaj časa uspeli zadovoljevati zahteve. Bolj dolgoročna reSitev pa je porazdelitev procesiranja in paralelnost. Prvi problem, ki so se ga lotili strokovnjaki, je bilo upravljanje komunikacij. Prenos podatkov med porazdeljenimi procesnimi mesti mora biti zanesljiv in brez napak. Vsako procesno mesto je imelo svoj lokalni operacijski sistem. Lokalni operacijski sistem uporablja servise komunikacijskega sistema in nudi servise uporabniku. Razen zanesljive komunikacije v teh zgodnjih oblikah porazdeljenih sistemov ni bilo posebnih pripomočkov, ki bi uporabniku pomagali pri delu v porazdeljenem sistemu [Fort86]. Uporabniki pa so potrebovali mehanizme, ki bi jim omogočili bolj celovit pogled na porazdeljen sistem in čimvečjo transparentnost porazdeljenosti sistema. Mrežni operacijski