2014.12.11.
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
4
RAID • • • • •
Hot-swap Hot-spare SATA SAS SCSI
• 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
• 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
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
1
2014.12.11.
7
RAID konfigurációk: RAID 1 • 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
• 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
• stripe = csíkozás
• Teljes kapacitás: Ctotal = ndisk × Cdisk
Forrás: Wikipedia
RAID konfigurációk: RAID 0
8
• Teljes kapacitás: Ctotal = ndisk × Cdisk / 2 • Redundáns: pfailure = (házi feladat)
• Nem redundáns, sőt: pfailure = ndisk × pfailure,disk
9
Paritásbitek • 1. diszk: • 2. diszk: • XOR:
10011101 11001001 01010100
RAID konfigurációk: RAID 5/6 • RAID-5:
• Általánosítás n diszkre: n bitből páros vagy páratlan számú 1-es bit van?
▫ Minimum három lemez ▫ Paritás bitek a lemezeken elosztva ▫ Egy lemez kiesését viseli el
▫ A 3. diszken tárolva
• 1. diszk: • 3. diszk: • XOR:
10011101 01010100 11001001
▫ Pont ez volt a 2. diszken!
• Egy diszk kiesésekor még visszaállítható az adat
• RAID-6: ▫ Minimum négy lemez ▫ Paritás bitek két lemezen ▫ Két lemez egyidejű kiesését viseli el Forrás: Wikipedia
• Hiba esetén helyreállítás:
10
• 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.
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: Ctotal = CRAIDn / 2 • Redundáns: pfailure = (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:
Diszkek száma
Átlagos késleltetés (fordulat)
1
0.500
2
0.750
= 1 – 2–n • Γ = fordulatszám • = átlagos késleltetés: = / Γ • Tipikus értékek: ▫ Γ = 7200 RPM, = 4.2 ms
• Több lemez esetén, mire az összes lemez a megfelelő blokkhoz fordul: = 1 – 2–n
SSD:
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
2014.12.11.
13
A paritásbitek felírása drága
RAID írásának gyorsítása
• A1 egy része megválzott (a memóriában van az új adat) • A1-et írni akarjuk • Ap-t újra kell számolni • Szükség van:
• Cache használata ▫ A két olvasási művelet megspórolható, ha az adat a cache-ben van
▫ A1 régi értékére és Ap-re
• 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
• Műveletsor: ▫ ▫ ▫ ▫ ▫
14
Olvasd be A1-et (régi érték) Olvasd be Ap-t Számold ki az új Ap-t Írd ki A1-et (új érték) Írd ki Ap-t
15
RAID írási lyuk
16
RAID rendszerek adatbázisoknál
• Write hole • Több lemezt írása nem atomi művelet!
• Tudományos adattárak ▫ ▫ ▫ ▫
• 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
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
Szünetmentes tápegység Battery Back-up Unit (BBU) használata Frissíti a RAID cache-t, míg az áram visszajön
17
RAID műveletek
18
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
• patrol read, scrubbing
• 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
• 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
• Dedikált RAID vezérlő kártya • Számolás IOP végzi • Gyakran drága
• 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
• 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
2014.12.11.
19
Tipikus RAID problémák
20
Tipukus RAID problémák 2
• Hamis biztonságérzetet ad
• Kompatibilis diszk hiánya • RAID vezérlő kártya hibája (ritka)
• 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
• Sok diszk
▫ Régi RAID kötetekhez nem lehet új diszket kapni, ilyenkor célszerű a teljes rendszert lecserélni
▫ 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
▫ 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
• 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.
• 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
21
RAID hardver elemei
RAID rendszer belső diszkekkel
• SAS alapon • SBB: storage bridge bay nyílt szabvány:
Meghajtó
Meghajtó
PCI-e
Meghajtó
4×SAS
Meghajtó
4×SAS
SATA / SAS
Meghajtó
Belső RAID vezérlő
RAID vezérlő
Meghajtó
PCIe
SAS vezérlő (akár RAID-del) 4×SAS linkek Multiplexeres backplane RAID dobozok
Meghajtó
Szerver
Meghajtó
▫ ▫ ▫ ▫
22
Alaplap
Backplane + Multiplexer SATA/SAS
SATA/SAS
SATA/SAS
SATA/SAS
SATA/SAS
SATA/SAS
SATA/SAS
SATA/SAS
Diszk
Diszk
Diszk
Diszk
Diszk
Diszk
Diszk
Diszk
Szerver ház
23
24
RAID rendszer külső diszkekkel
PCIe
Alaplap
4× SAS
Külső RAID vezérlő
Diszk
Diszk
Diszk
Diszk
Diszk
Diszk
Diszk
Diszk
Szerver ház
Enclosure Management Module (EMM)
SATA/SAS Backplane RAID ház
4
2014.12.11.
25
Szoftver rétegek Adatbázis szerver
26
Fogalmak
Fájlszerver
• Partíció:
Webszerver
▫ egy fizikai vagy virtuális diszk több partícióra osztható ▫ pl.: rendszer, adat
• Logikai kötet:
Fájl API
▫ Szoftveres megoldás több lemez összekapcsolására ▫ Szoftver RAID vagy redundáns kötet
FS
FS
Fájlrendszer (file system = FS)
Partíció
Partíció
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 Fizikai vagy virtuális (HW RAID) diszk
Fizikai vagy virtuális (HW RAID) diszk
Fizikai vagy virtuális (HW RAID) diszk
27
Redundáns kötetek • Hardver RAID ▫ Drága, nem elég flexibilis • Szoftver RAID ▫ Hardver RAID olcsó imitációja, lassú
• Slab: alapvető logikai egység ▫ hasonló a RAID blokkhoz ▫ tipikus méret 256-512 MB ▫ tükrözés vagy paritásbitek
• JBOD: just a bunch of disks ▫ az OS csak önálló lemezeket lát, nincsen RAID vezérlő
• Nagy méretek támogatása (zettabájt)
• 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
28
Fájl API • Bufferelt ▫ ▫
▫
• 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
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 ▫
• Diszkek dinamikusan hozzáadhatók, elvehetők ▫ legkisebb diszk mérete nem korlátozó tényező
▫ ▫ ▫
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
• Scrubbing ▫ bithibák detektálására ▫ a háttérben fut
29
30
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 (Benchmarking)
• 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
2014.12.11.
31
Mit akarunk optimalizálni?
Mit tudunk mérni?
• 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 ▫ ▫ ▫ ▫
32
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
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ó
• 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
• 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
33
34
35
36
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
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
Lokális hálózat • 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
2014.12.11.
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]
38
A TCP/IP problémái • Kis sebességre és kevés adatra tervezték
• 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 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
40
Fogyasztás és környezetvédelem
nagy háttértár ▫ Adatintenzív alkalmazásokhoz ▫ Azonos hardver sok nem optimális processzorral ▫ 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 optimalizálva nem optimális
• Számítógép klaszter (Beowulf):
• 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
• 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ő
• 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
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
• Windows 2008 Server + SQL Server
7