Operációs Rendszerek II. 11. előadás 2007. április 21.
RAID Diszk (másodlagos tároló) problémák Teljesítményük növekedési rátája szignifikánsabban alacsonyabb a CPU növekedésnél a tárolt adatok fontossága miatt a nagy kapacitású diszkek hibája egyre nagyobb üzleti kockázattal járt A nagy kapacitású diszkek sem „eléggé nagyok” RAID koncepciója: nagy kapacitású és teljesítményű drága diszkek helyett kisebb (olcsóbb) diszkeket használva érjük el célunkat, azaz: Kapacitás növelése Teljesítmény növelése Megbízhatóság növelése
RAID Az elnevezés a Berkley egyetem kutatóitól származik (1988) – akkor ők ezt a „Redundant array of Inexpensive Disks” szavakból állították össze. A névben később az „Inexpensive” szó „Independent”-re változott… Dióhéjban: úgy kapcsolunk össze több diszket, hogy az operációs rendszer számára egy diszknek látszanak az adatot szétosztjuk a diszkek között, a diszk hibák ellen paritás információ tárolásával védekezzünk (ezt két megoldás nem elégíti ki) A szabvány 5+1 szintet definiál a „+1” nem redundáns és 3 terjedt el különböző gyártók további szinteket is definiálnak szint-kombinációkat is alkalmazunk A különböző megoldások a szükséges tárolóterület overhead-ben, a megoldás teljesítményigényében és a biztonság szintjében térnek el
RAID szintek RAID-0 (striping) RAID-1 (tükrözés) RAID-2 RAID-3 RAID-4 Redundancia nélküli megoldás RAID-1 (tükrözés) Adatduplikáláson alapul (nem paritás alapú) RAID-2 Speciális, Hamming kód alapú Gyakorlatilag kihalt RAID-3 Kizáró vagy műveletre épít, egy blokk az összes diszkre szét van osztva Erős hardver támogatást igényel! RAID-4 Kizáró vagy műveletre épít, egy blokk csak egy diszken található Dedikált paritás diszket használ RAID-5 Hasonló a RAID-4 megoldáshoz, de itt a paritás is szét van osztva a diszkek között
RAID – háttér információk A diszkek átviteli jellemzőjének tényezői a mechanikai működésből adódó késleltetés az adatátvitel végrehajtásának teljesítménye (átviteli sebesség) A terhelés jellege Kevés számú, kis párhuzamosságú, de nagy mennyiségű adatot mozgató terhelése (pl. kötegelt feldolgozás) Nagy számú, magas párhuzamosságú, de kicsi adatmennyiséget érintő terhelés (tranzakciós rendszerek) Kapcsolat a fentiek között Nagy mennyiségű adatot mozgató terhelésnél az adatátvitel teljesítménye domináns Nagy tranzakciószámnál a késleltetések sokkal fontosabbak
RAID – háttér információk Olvasás és írás műveletek különbsége redundáns tároláskor olvasáskor csak annyi adatot kell beolvasni, ami elegendő a kért adatblokk biztosításához íráskor az adatblokkhoz tartozó összes részt aktualizálni kell Vizsgáljuk Tárolás módja Viselkedés íráskor és olvasáskor Példák Diszkek száma: N Egy diszk átviteli sebessége: T
RAID-0 Tárolás módja Olvasás Írás Nagyméretű csíkok, egy blokk egyetlen diszken tárolódik. Redundancia nincs a rendszerben. Hasznos terület: N. Olvasás Egy időben ~N független olvasási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség: T Hiba esetén: működésképtelen! Írás Egy időben ~N független írása tranzakció szolgálható ki.
RAID-1 Tárolás módja Olvasás Írás Nagyméretű csíkok, egy blokk egyetlen diszken tárolódik. A redundanciát a teljes adat duplikálása eredményezi. Tipikusan N=2, hasznos terület: N/2. Olvasás Egy időben ~N független olvasási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség: T Hiba esetén: egy időben ~(N-1) független olvasási tranzakció szolgálható ki. Írás Egy időben 1 írási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség: =< T Hiba esetén: Egy időben 1 írási tranzakció szolgálható ki.
RAID-3 Tárolás módja Olvasás Írás Byte szintű csíkok, a blokkok az összes diszkre szét vannak osztva. Byte szintű paritás képzés XOR művelettel történik, a megoldás dedikált paritás diszket használ. N>2, hasznos terület: N-1. Olvasás Egy időben 1 olvasási tranzakció szolgálható ki Tranzakciónkénti átviteli sebesség: (N-1)*T Hiba esetén: egy időben 1 olvasási tranzakció szolgálható ki Tranzakciónkénti átviteli sebesség: < (N-1)*T (számolni kell) Írás Egy időben 1 írási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség: <= (N-1)*T (számolni is kell) Hiba esetén: egy időben 1 írási tranzakció szolgálható ki.
RAID-4 Tárolás módja Olvasás Írás Nagyméretű csíkok, egy blokk egyetlen diszken tárolódik. Blokk szintű paritás képzés XOR művelettel történik, a megoldás dedikált paritás diszket használ. N>2, hasznos terület: N-1. Olvasás Egy időben (N-1) független olvasási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség: T Hiba esetén: az olvasási tranzakciók száma akár egyre is lecsökkenhet, mert a hibás diszkeken található adatok előállításához az összes többi diszkblokk adata szükséges! Írás Egy időben 1 írási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség << T. Egy blokk kiírása után a teljes sor paritását újra kell számolni Hiba esetén: 1 írási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség << T
RAID-5 Tárolás módja Olvasás Írás Nagyméretű csíkok, egy blokk egyetlen diszken tárolódik. Blokk szintű paritás képzés XOR művelettel történik, a paritás blokkok is szét vannak osztva a diszkek között. N>2, hasznos terület: N-1. Olvasás Egy időben (N-1)...(N) független olvasási tranzakció Tranzakciónkénti átviteli sebesség: T Hiba esetén: az olvasási tranzakciók száma akár egyre is lecsökkenhet, mert a hibás diszkeken található adatok előállításához az összes többi diszkblokk adata szükséges! Írás Egy időben 1 írási tranzakció szolgálható ki. Tranzakciónkénti átviteli sebesség << T Hiba esetén: 1 írási tranzakció szolgálható ki.
További RAID szintek Raid-6 Raid-S Kombinált Raid: 1+0 és 0+1 Két paritás blokk használatával (n+2 konfig) nagyobb hibatűrést biztosít Az írás során jelentős overhead Nem igazán terjedt el Raid-S EMC Symmetrix diszktömbökben használt technológia. Raid-5 szerű, de speciális, teljesítményt növelő eljárásokat alkalmaz Kombinált Raid: 1+0 és 0+1 0+1: összetükrözi a stripe-ot 1+0: tükröket stripe-ol
Diszk cache Gyorsítótár, a gyorsítótáraknál korábban megismert célokkal és problémákkal Gyorsítótár: központi memória (drágább, kisebb kapacitású, de gyorsabb, mint a merevlemez) Algoritmusok: gyorsítótár lehető legoptimálisabb használata
Diszk cache tervezési kérdések Gyorsítás „iránya” Csak olvasáskor (write through) Mindkét irányban (write back) Memória felhasználás módja Fix (előre meghatározott) Dinamikus (terheléstől függő) Adat átadás a cache-területről (olvasáskor) Másolás a felhasználói címtérbe Osztott memória használata Blokkcsere algoritmusa LRU (least recently used) LFU (least frequently used) Frequency-based
Unix I/O (klasszikus) Hozzáférés fájl-interfészen keresztül Kétféle eszköz Blokkos Karakteres Eredeti buffer cache fix
I/O eszközök a fájlrendszerben Kernel tábla hivatkozások az i-node táblában Major és minor numberek (eszköz, példány) drwx------ 16 bzso bzso 544 Mar 24 22:48 Documents drwx------ 35 bzso bzso 1190 Apr 3 18:24 Library -rwxr-xr-x 1 bzso bzso 99452 Nov 1 00:46 Google Earth -rwxr-xr-x 1 bzso bzso 92840 Nov 1 01:02 Google Earth Launcher crw-rw-rw- 1 root wheel 10, 6 Apr 18 23:20 tty.Bluetooth-Modem crw-rw-rw- 1 root wheel 10, 2 Apr 18 23:20 tty.Bluetooth-PDA-Sync crw-rw-rw- 1 root wheel 10, 4 Apr 18 23:20 tty.Hermione-Dial-upNetwork-2 brw-r----- 1 root operator 14, 0 Apr 18 23:19 disk0 brw-r----- 1 root operator 14, 1 Apr 18 23:19 disk0s1 crw-rw-rw- 1 root wheel 3, 2 Apr 19 00:20 /dev/null crw-rw-rw- 1 root wheel 3, 3 Apr 18 23:19 /dev/zero crw-rw-rw- 1 root wheel 8, 1 Apr 18 23:19 /dev/urandom
Unix I/O Klasszikus: statikus táblázatok Modern: dinamikus kernelek Új hardver illesztéséhez új kernel kell (a meghajtó programok statikusan betöltve) Sok esetben előre „belepakoltak” minden drivert a kernelbe Modern: dinamikus kernelek A különféle meghajtó programok futási időben is betölthetők (igény szerint) Függőségek! Lényegesen rugalmasabb és erőforrás takarékosabb működés – de a kernel sokkal bonyolultabb lesz
Fájlok, fájlrendszerek Felhasználói szempontból az operációs rendszer (egyik) legfontosabb része Ezzel közvetlen „találkozik” A fájlok tárolása, hozzáférés alapvető Teljesítmény szempontból kritikus
Alapvető elvárások Hosszú távú tárolás Megoszthatóság Strukturáltság A fájlokat másodlagos tárolón (tipikusan merevlemezen) tároljuk A fájlok tartalma a felhasználó kilépése, a gép kikapcsolását követően is megmarad Megoszthatóság Ugyanazt azt az adathalmazt több program is elérhesse – a fájlok egyértelmű azonosítása alapvető Amennyiben igényelt, a fájlokat több felhasználó is elérhesse Strukturáltság A fájlok tartalmát (adatokat) jól ismert struktúrába kell szervezni A fájlok között is célszerű struktúrát definiálni (sok fájl, átláthatóság)
Tipikus fájl műveletek Általános modell Létrehozás Törlés Megnyitás Lezárás Olvasás Írás Az egyes konkrét implementációk további műveleteket is definiálhatnak
Fájl struktúrák Struktúra-elemek Mező, alapelem Rekord, összetartozó mezők gyűjteménye Fájl, összetartozó rekordok Adatbázis, összetartozó fájlok Mai rendszerekben a struktúra meglehetősen egyszerű, az összetett(ebb) adatstruktúrák kezelését alkalmazás szintű komponensekre bízzák
Fájl menedzsment rendszer elvárások Felhasználók (és alkalmazások) adattárolási, adatkezelési igényeinek kielégítése Tárolt adatok validitásának biztosítása Teljesítmény optimalizálás rendszer (globális) és felhasználói szempontból egyaránt Különféle tároló eszközök támogatása Adatvesztés kockázatának minimalizálása Szabványos (programozói) interfész biztosítása Többfelhasználós működés támogatása
Fájlrendszer architektúra
Rétegek Device driver: kommunikáció a különféle hardver elemekkel (eszközfüggő) Basic FS (physical I/O): alacsony (blokk) szintű műveletek Basic I/O supervisor: I/O sorbaállítás, ütemezés Logical I/O: magas szintű file műveletek File szervezés: NEM Unix/Win világban Pile („struktúrálatlan”, ahogy jön) Szekvenciális (rekord alapú) Indexelt szekvenciális (rekord alapú) Indexelt (rekord alapú) Direct (hash) fájlok (rekord alapú)