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 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
4 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 RAID gyorsabb adatelérés 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 Korlátozó tényezők: diszkvezérlő sávszélessége tipikus SAS vezérlő: 2GB/s csatlakoztatható diszkek száma A sebesség a lemezek számával (arányosan) nő
6 RAID - redundancia 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
7 RAID konfigurációk: RAID 0 stripe = csíkozá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 Forrás: Wikipedia Teljes kapacitás: C total = n disk C disk Nem redundáns, sőt: p failure = n disk p failure,disk
8 RAID konfigurációk: RAID 1 mirror = tükrözés 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 Forrás: Wikipedia Teljes kapacitás: C total = n disk C disk / 2 Redundáns: p failure = (házi feladat)
9 Paritásbitek 1. diszk: 10011101 2. diszk: 11001001 XOR: 01010100 A 3. diszken tárolva Hiba esetén helyreállítás: 1. diszk: 10011101 3. diszk: 01010100 XOR: 11001001 Pont ez volt a 2. diszken! Á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 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.
10 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 Forrás: Wikipedia
11 RAID konfigurációk: RAID n+0 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)
12 RAID írása, késleltetés (latency) 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 SSD: Diszkek száma Á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!
13 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
14 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 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
16 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 RAID mőveletek Kötet újraépítése 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 Időzített járőrözé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
18 RAID megvalósítása Szoftver RAID 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 Hardver RAID 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
19 Tipikus RAID problémák 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
20 Tipukus RAID problémák 2 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
RAID hardver elemei SAS alapon SBB: storage bridge bay nyílt szabvány: Szerver PCIe SAS vezérlő (akár RAID-del) RAID vezérlő 4 SAS linkek Multiplexeres backplane 4 SAS 4 SAS RAID dobozok Backplane + Multiplexer 21 Diszk Diszk Diszk Diszk Diszk Diszk Diszk SATA/ SAS SATA/ SAS SATA/ SAS SATA/ SAS SATA/ SAS SATA/ SAS SATA/ SAS Diszk SATA/ SAS
Meghajtó RAID rendszer belsı diszkekkel Belső RAID Meghajtó Meghajtó Meghajtó Meghajtó Meghajtó Meghajtó Meghajtó vezérlő PCI-e SATA / SAS Szerver ház Alaplap 22
23 RAID rendszer külsı diszkekkel Külső RAID vezérlő Szerver ház Alaplap PCIe 4 SAS RAID ház Diszk Diszk Diszk Diszk Diszk Diszk SATA/SAS Backplane Diszk Diszk Enclosure Management Module (EMM)
24
25 Szoftver rétegek Adatbázis szerver Fájlszerver Webszerver Fájl API FS FS Fájlrendszer (file system = FS) Partíció Partíció Kötet Fizikai vagy virtuális (HW RAID) diszk Fizikai vagy virtuális (HW RAID) diszk Fizikai vagy virtuális (HW RAID) diszk
26 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 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 Redundáns kötetek 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 Diszkek 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
28 Fájl API 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
(Benchmarking) 29
I/O Teljesítménymérés 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 30
31 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
32 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 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
34
35 Hálózatok alapjai 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)
36 Lokális hálózat 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
37 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
38 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 Klaszterek, felhık Számítógép klaszter (Beowulf): Azonos hardver sok processzorral Minimális háttértár az egyes gépekben Központi, hálózaton elérhető nagy háttértár Blade-server kialakítás optimális Garantált, nagy sebességű helyi hálózat Adatintenzív alkalmazásokhoz nem optimális 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ő nagy háttértár Adatintenzív alkalmazásokhoz nem optimális Graywulf Dedikált szerverfarm, dedikált hálózattal Minden elem egy önálló nagy teljesítményű adatbázis szerver Adatintenzív alkalmazásokra optimalizálva
40 Fogyasztás és környezetvédelem 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 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
42 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