1 2 Alapprobléma Különálló diszkek esetében olvasás/írás szekvenciálisan sem túl gyors p(hiba) nagy 2TB egyben nem feltétlenül elég Redundáns rendszert akarunk Gyors rendszert akarunk Nagy kapacitást akarunk több diszket összekapcsolni Hardveres megoldás: RAID Szoftveres megoldás: redundáns fájlrendszerek 3 4 Alapfogalmak Fizikai lemez RAID JBOD Virtuális lemez Kötet (volume) Kötet menedzser Partíció Fájlrendszer Blokk méret Paritás bit Hot-swap Hot-spare SATA SAS SCSI RAID Redundant Array of Identical Drives Több (azonos) lemezegység összekapcsolása Az OS számára virtuális lemezként látszik Célok: Gyorsabb adatelérés Redundancia: egy lemez meghibásodása ne okozzon adatvesztést Nagyobb kapacitás 5 6 RAID gyorsabb adatelérés RAID - redundancia Sebességet korlátozza Lemez fordulatszáma Bitsűrűség Több lemez párhuzamos olvasása/írása: Szekvenciálisan olvasandó adat nem egy lemezen folytonosan, hanem csíkokra (stripe) vágva, lemezek között elosztva A sebesség a lemezek számával (arányosan) nő Korlátozó tényezők: diszkvezérlő sávszélessége tipikus SAS vezérlő: 2GB/s csatlakoztatható diszkek száma Egy (vagy több) lemez kiesése ne okozzon adatvesztést Az adatokat többször kell tárolni Teljes tükrözés (mirror), vagy Paritás bitek tárolása Minél nagyobb redundanciát akarunk, annál kisebb lesz a hasznos tároló kapacitás A maximális méretet a legkisebb lemez mérete határozza meg 1
7 8 RAID konfigurációk: RAID 0 RAID konfigurációk: RAID 1 stripe = csíkozás mirror = tükrözés Az adatokat úgy osztja el két vagy több lemez között, hogy a lemezekről párhuzamosan olvasva nagyobb sebességet lehessen elérni Teljes kapacitás: C total = n disk C disk Nem redundáns, sőt: p failure = n disk p failure,disk Forrás: Wikipedia Az adatokat tükrözi két lemezen úgy, hogy ha az egyik elromlik, akkor a másikról az adatok még elérhetőek Teljes kapacitás: C total = n disk C disk / 2 Redundáns: p failure = (házi feladat) Forrás: Wikipedia 9 10 Paritásbitek 1. diszk: 10011101 2. diszk: 11001001 XOR: 01010100 A 3. diszken tárolva Hiba esetén helyreállítás: Általánosítás n diszkre: n bitből páros vagy páratlan számú 1-es bit van? Egy diszk kiesésekor még visszaállítható az adat RAID konfigurációk: RAID 5/6 RAID-5: Minimum három lemez Paritás bitek a lemezeken elosztva Egy lemez kiesését viseli el RAID-6: Minimum négy lemez Paritás bitek két lemezen Két lemez egyidejű kiesését viseli el 1. diszk: 10011101 3. diszk: 01010100 XOR: 11001001 Pont ez volt a 2. diszken! Azt, hogy melyik diszk hibás, máshonnan tudjuk, ez a paritásbitekből nem található ki Általánosítható úgy, hogy több diszk kiesését elviselje. Forrás: Wikipedia 11 12 RAID konfigurációk: RAID n+0 RAID írása, késleltetés (latency) A csíkozás és tükrözés összekapcsolása Csíkozás két RAID kötet fölött Minimum négy lemez (1+0) Csak olvasáskor gyorsabb, íráskor mindkét kötetet párhuzamosan írni kell Teljes kapacitás: C total = C RAIDn / 2 Redundáns: p failure = (házi feladat) Egyszerre több diszket kell írni Meg kell várni, míg a lemez a megfelelő blokkhoz fordul ehhez átlagosan ennyi fordulat kell: <r> = 1 2 n Γ = fordulatszám <l> = átlagos késleltetés: <l> = <r> / Γ Tipikus értékek: Γ = 7200 RPM, <l> = 4.2 ms Több lemez esetén, mire az összes lemez a megfelelő blokkhoz fordul: <r> = 1 2 n ek száma SSD: Átlagos késleltetés (fordulat) 1 0.500 2 0.750 3 0.875 4 0.938 5 0.969 6 0.984 7 0.992 8 0.996 0 latency nagy lehetőségek a jövőben! 2
13 14 A paritásbitek felírása drága A1 egy része megválzott (a memóriában van az új adat) A1-et írni akarjuk A p -t újra kell számolni Szükség van: A1 régi értékére és A p -re Műveletsor: Olvasd be A1-et (régi érték) Olvasd be A p -t Számold ki az új A p -t Írd ki A1-et (új érték) Írd ki A p -t RAID írásának gyorsítása Cache használata A két olvasási művelet megspórolható, ha az adat a cache-ben van Write back cache használata Az adat csak a cache-be íródik Csak később kerül ki a diszkre Csökkenthető a késleltetés 15 16 RAID írási lyuk Write hole Több lemezt írása nem atomi művelet! Mi van, ha írás közben hiba történik? Megsérül a lemez Áramkimaradás történik Sérült lemez át kell írni a blokkot máshova Áramkimaradás Szünetmentes tápegység Battery Back-up Unit (BBU) használata Frissíti a RAID cache-t, míg az áram visszajön RAID rendszerek adatbázisoknál Tudományos adattárak Olvasás jóval gyakoribb, mint az írás Hosszú szekvenciális műveletek RAID 5 a nagy tárterületért Adatbetöltéskor write through cache használata Tranzakció-kezelő rendszerek Sok apró írás RAID 1+0 a nagy sebességért Write back cache használata 17 18 RAID műveletek RAID megvalósítása Kötet újraépítése Időzített járőrözés Szoftver RAID Hardver RAID volume rebuild Ha megsérül egy lemez a köteten belül, akkor a hardver egység cseréje után a logikai kötetet újra kell építeni Az újraépítés jelentős időbe kerül, o(10 óra), a lemez méretétől függően A RAID vezérlők támogatják az ún. meleg tartalék (hot-spare) lemez kijelölését, amik rögtön a kiesett lemez helyébe lépnek, és elindul az újraépítés patrol read, scrubbing Az, hogy egy lemez meghibásodott, sokszor csak akkor derül ki, amikor az adatokat olvasni akarjuk Bit rotting Hogy ez időben kiderüljön, rendszeresen végig kell olvasni a lemezeket Szükséges számolást a CPU-n Olcsó megoldás: munkaállomásokba, kis szerverekbe RAID 5,6 stb. nagyon lassú Nincsen dedikált cache Nincsen BBU Az OS különálló lemezeket lát Volume manager fűzi össze Dedikált RAID vezérlő kártya Számolás IOP végzi Gyakran drága Gyors RAID 5,6 Hardver szintű optimalizálási lehetőség pl. latency csökkentése Nagy cache (256-512 MB) Gyors írás, adaptív előreolvasás BBU lehetőség Az OS egybefüggő nagy lemezt lát 3
19 20 Tipikus RAID problémák Tipukus RAID problémák 2 Hamis biztonságérzetet ad Lassú kötet újraépítés Ha az újraépítési idő alatt még egy lemez tönkre megy, akkor az teljes adatvesztést okoz Sok lemez esetén okoz nagy gondot RAID 6 jó megoldás Korrelált meghibásodások A diszkek általában azonos gyártási sorozatokból valók A meghibásodások egyszerre több diszken jelentkeznek A második diszk újraépítés közben hibásodik meg RAID vezérlő kártya hibája (ritka) Teljes adatvesztést okozhat A kártya nem mindig cserélhető (régi típus) A lemezen használt formátum gyártó specifikus, az elveszett adatokat csak speciális szoftver tudja visszaolvasni Kompatibilis diszk hiánya Régi RAID kötetekhez nem lehet új diszket kapni, ilyenkor célszerű a teljes rendszert lecserélni Cache szünetmentes tápjának (BBU) hiánya Write-back algoritmussal dolgozó cache esetén a RAID vezérlő az írási műveletet készre jelenti, ahogy az adat beíródott a cache-be. Ekkor még nem íródott ki a változás a diszkre, de az operációs rendszer mégis úgy tudja. Áramkimaradás esetén a cache tartalma elvész, az adatok inkonzisztens állapotba kerülnek. Sok diszk Nem elég nagy a számítógépház Nem elég nagy a tápegység teljesítménye Külső RAID házak használata Túl sok a kábel Multiplexeres backplane használata Gyakori diszk csere, a gépet nem lehet leállítani Hot-swap 21 22 RAID hardver elemei RAID rendszer belső diszkekkel SAS alapon SBB: storage bridge bay nyílt szabvány: SAS vezérlő (akár RAID-del) 4 SAS linkek Multiplexeres backplane RAID dobozok Szerver PCIe RAID vezérlő 4 SAS 4 SAS Belső RAID vezérlő PCI-e SATA / SAS Backplane + Multiplexer Szerver ház Alaplap 23 24 RAID rendszer külső diszkekkel Külső RAID vezérlő Alaplap PCIe 4 SAS Szerver ház Enclosure Management Module (EMM) RAID ház Backplane 4
25 26 Szoftver rétegek Adatbázis szerver Fájlszerver Webszerver Fájl API Fogalmak Partíció: egy fizikai vagy virtuális diszk több partícióra osztható pl.: rendszer, adat Logikai kötet: Szoftveres megoldás több lemez összekapcsolására Szoftver RAID vagy redundáns kötet FS Partíció FS Partíció Fizikai vagy virtuális (HW RAID) diszk Fájlrendszer (file system = FS) Fizikai vagy virtuális (HW RAID) diszk Kötet Fizikai vagy virtuális (HW RAID) diszk Fájlrendszer Könyvtárak és fájlok logikai megvalósítása a partíciók vagy kötetek fölött Blokkméret: minimum írás/olvasás mérete Fájlok blokkokból épülnek fel FAT32, ext2, ext3, NTFS stb. Fájl API A különböző fájlrendszereket logikai szempontból egyesítő könyvtárak 27 28 Redundáns kötetek Fájl API Hardver RAID Drága, nem elég flexibilis Szoftver RAID Hardver RAID olcsó imitációja, lassú JBOD: just a bunch of disks az OS csak önálló lemezeket lát, nincsen RAID vezérlő Szoftveres megoldás a RAID kiváltására? zvol: 2005 (Sun, ma Oracle) Storage Spaces: 2012 (Microsoft) Kapcsolódó modern fájlrendszerek ZFS - Solaris BTRFS - Linux ReFS Windows 8 Server Fa alapú Nem adatbázisokhoz Slab: alapvető logikai egység hasonló a RAID blokkhoz tipikus méret 256-512 MB tükrözés vagy paritásbitek Nagy méretek támogatása (zettabájt) FS provisioning a fájlrendszer csak annyi helyet foglal, amennyi adatot írunk rá elég később hozzáadni a szükséges lemezeket ek dinamikusan hozzáadhatók, elvehetők legkisebb diszk mérete nem korlátozó tényező Scrubbing bithibák detektálására a háttérben fut Bufferelt Az adatok először egy átmeneti memória bufferbe kerülnek A szükséges memóriaterület ezután átmásolódik a függvénynek megadott címre Tetszőleges számú bájt, tetszőleges fájlpozíciónál Nem bufferelt Az adat közvetlenül a megadott memóriacímre másolódik a diszkről Csak blokkméret többszöröse (512 B) Blokk kezdetéhez igazítva Sokkal gyorsabb, mint a bufferelt Szinkron / aszinkron A függvényhívás mikéntje Aszinkron hívásnál párhuzamosan sok olvasási kérést is indíthatunk Függő műveletek [outstanding I/O] Hány kérés lehet egy időben folyamatban RAID kártyák 8-16-ot hardveresen támogatnak a többi kérés sorba rendezését az API valósítja meg 29 30 I/O Teljesítménymérés (Benchmarking) Miért mérünk? Választani akarunk az egyes gyártók közül Meg akarjuk határozni az adott konfiguráció optimális beállításait Pontosan kell definiálni A rendszer próbaterhelésének mikéntjét A mérés módját Ehhez ismerni kell az adatbázis majdani felhasználását, de általánosságban igaz: Adattárháznál szekvenciális I/O-ra megyünk 5
31 32 Mit akarunk optimalizálni? Lemezek száma, mérete, sebessége Több lemez több tengely gyorsabb A gyorsabb lemez (10k RPM 2.5 ) kisebb kapacitású RAID szint Mekkora redundanciára van szükség Mennyit fogjuk írni az adatbázist Több RAID konfigurációt is használható egy szerveren belül A RAID cache üzemmódja menet közben is változtatható Csíkok mérete, fájlrendszer típusa, blokkmérete stb. Ezt az adatbázis lapméretéhez kell állítani (ld. később) 64 kb Mit tudunk mérni? Sebesség [MB/s] Késleltetési idő (latency) [s] I/O művelet [1/s] Processzor használat Függő műveletek száma Paraméterek: Olvasás / írás Szekvenciális / random Bufferelt / nem bufferelt Beolvasott/írt blokkok mérete Csíkméret Függő műveletek száma Egy adott terhelési mintázat lehet a fentiek valamilyen arányú kombinációja 33 34 Mérések módja Mindent többször mérünk Felvesszük a mért értékek eloszlását Ha nem gaussi, akkor megnézzük miért Mivel korrelál egy adott mérési érték? Ha gaussi, akkor megadhatjuk a relatív hibát 35 36 Hálózatok alapjai Lokális hálózat Fizikai réteg Kábel típusa: réz, optikai Átviteli sebesség [bit/s] Átviteli távolság Topológia Csillag, gyűrű, nagy gráf Szoftver réteg Hálózati kártya meghajtó Protokoll TCP/IP, stb. OS hálózati réteg Hálózati API (programkönyvtár) Ethernet 100 Mb/s, 1 Gb/s, 10 Gb/s UTP kábel néhányszor 10 méter Általában TCP/IP InfiniBand Maximum 96 Gbit/s elméleti sebesség (sok kábel) Maximum 15 méter távolság Speciális protokoll igény, de TCP/IP over IB támogatott 6
37 38 Külvilági kapcsolat Internet Mindig túl lassú TCP/IP Folytonos adatátvitelre TCP vagy UDP alapú speciális protokoll Speciális adatátviteli protokollok BitTorrent (akár csak két pont között!) FDT (Cern) Java UDP alapú UDT: A TCP-nél gyorsabb adatátvitelre jó [Grossman et al. 2003] Dedikált kapcsolat Garantált állandó vagy garantált minimum sebesség Drága, és nehéz jól kihasználni Használható saját speciális protokoll A TCP/IP problémái Kis sebességre és kevés adatra tervezték A sávszélesség nem feltétlenül jelent átviteli sebességet A késleltetés erősen le tudja csökkenteni az adatátvitelt (TCP/IP nagy problémája) Alapértelmezett értékek variálásával némileg javítható (frame mérete, buffer mérete) Hibaellenőrző kód nem elég erős: Véges valószínűséggel kerülhet hiba az átvitt adatba, ha az adatmennyiség nagy Az adatbázis szerver szoftverek nem támogatnak speciális protokollokat 39 40 Klaszterek, felhők Fogyasztás és környezetvédelem Számítógép klaszter (Beowulf): nagy háttértár Azonos hardver sok Adatintenzív alkalmazásokhoz processzorral nem optimális Minimális háttértár az egyes gépekben Graywulf Központi, hálózaton elérhető Dedikált szerverfarm, dedikált nagy háttértár hálózattal Blade-server kialakítás optimális Minden elem egy önálló nagy Garantált, nagy sebességű helyi teljesítményű adatbázis szerver hálózat Adatintenzív alkalmazásokra Adatintenzív alkalmazásokhoz nem optimális optimalizálva Számítási felhő Szolgáltatók által nyújtott lehetőség (Amazon, Google, MS) Virtualizált platform + fejlesztőeszközök Központi, hálózaton elérhető Fogyasztási adatok: Alaplap: 50-100 W Processzor: 80-150 W HDD: 15 W SSD: 1-2 W GPU: 50-150 W Könnyen összejön 1,5 2 kw szerverenként Hőként szabadul fel Szünetmentes tápban nagy akkumulátorok Léghűtés: zajos, hangszigetelés szükséges A szerverszoba hűtést igényel Légkondicionáló hatásfokát figyelembe véve a fogyasztás / számítási teljesítmény arány tovább romlik Megoldási lehetőségek: Vízhűtés Hűtővíz felhasználása fűtésre Energiatakarékos üzemmód 5 év után elavul az egész rendszer: veszélyes hulladék 41 42 Adatbázis rendszerek az ELTÉ-n Regionális Egyetemi Tudásközpont adatbázis központja 3 db Dell PE 2950 szervergép 2 x 4 magos Intel Xeon 16 GB RAM 2 x Dell PERC 6/e RAID vezérlő 6 db Dell PV MD-1000 tároló egység Egyenként 15 db 750-1000 GB-os diszk Összesen kb. 1 TFLOP/s számítási kapacitás 50 TB redundáns tároló kapacitás 3500 MB/s szekvenciális olvasási sebesség Windows 2008 Server + SQL Server Adatbázis rendszerek az ELTÉ-n Informatika doktori iskola 5 db Supermicro SBB két gép egy házban (összesen 10 gép) 2 x 6 magos Intel Xeon i7 (összesen 120 mag) 24 GB RAM LSI 2008 SAS vezérlő 100 TB diszk Debian Linux Különböző szintű szoftver RAID konfigurációk 7