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
• 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
7
RAID konfigurációk: RAID 0 • 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: Ctotal = ndisk × Cdisk • Nem redundáns, sőt: pfailure = ndisk × pfailure,disk
Forrás: Wikipedia
• stripe = csíkozás
8
RAID konfigurációk: RAID 1 • 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: Ctotal = ndisk × Cdisk / 2 • Redundáns: pfailure = (házi feladat)
Forrás: Wikipedia
• mirror = tükrözés
9
Paritásbitek • 1. diszk: • 2. diszk: • XOR:
10011101 11001001 01010100
• Általánosítás n diszkre: n bitből páros vagy páratlan számú 1-es bit van?
▫ A 3. diszken tárolva
• Hiba esetén helyreállítás: • 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 • 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 ▫ 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
• RAID-5:
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
3
0.875
4
0.938
5
0.969
6
0.984
7
0.992
8
0.996
= 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:
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 • Ap-t újra kell számolni • Szükség van: ▫ A1 régi értékére és Ap-re
• Műveletsor: ▫ ▫ ▫ ▫ ▫
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
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
Időzített járőrözés
• 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
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
21
RAID hardver elemei • SAS alapon • SBB: storage bridge bay nyílt szabvány:
PCIe
SAS vezérlő (akár RAID-del) 4×SAS linkek Multiplexeres backplane RAID dobozok
RAID vezérlő 4×SAS
4×SAS
SATA/ SAS
SATA/ SAS
SATA/ SAS
SATA/ SAS
SATA/ SAS
SATA/ SAS
SATA/ SAS
SATA/ SAS
Diszk
Diszk
Diszk
Diszk
Diszk
Diszk
Diszk
Backplane + Multiplexer
Diszk
▫ ▫ ▫ ▫
Szerver
22
Alaplap Szerver ház
Meghajtó
Meghajtó
Meghajtó
Meghajtó
Meghajtó
PCI-e
Meghajtó
SATA / SAS
Meghajtó
Belső RAID vezérlő
Meghajtó
RAID rendszer belsı diszkekkel
23
RAID rendszer külsı diszkekkel
PCIe
Alaplap
4× SAS
Külső RAID vezérlő
RAID ház
SATA/SAS Backplane
Diszk
Diszk
Diszk
Diszk
Diszk
Diszk
Diszk
Diszk
Szerver ház
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 ▫
•
▫
•
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ő
Nagy méretek támogatása (zettabájt)
•
FS provisioning ▫
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
hasonló a RAID blokkhoz tipikus méret 256-512 MB tükrözés vagy paritásbitek
•
Szoftveres megoldás a RAID kiváltására? ▫ ▫
Slab: alapvető logikai egység ▫ ▫ ▫
Szoftver RAID ▫
•
•
Drága, nem elég flexibilis
Diszkek dinamikusan hozzáadhatók, elvehetők ▫
•
a fájlrendszer csak annyi helyet foglal, amennyi adatot írunk rá elég később hozzáadni a szükséges lemezeket
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
29
(Benchmarking)
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
• 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
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