Brouzdali jsme historií, říkali jsme si o jednoduchých polích a dnes nás čeká tak trochu vyšší dívčí. Článek bude trochu teoretický, ale pro pochopení vyšších polí důležitý.
Abychom se vůbec vyznali v tom, jak vyšší RAID pole fungují, řekneme si dnes něco o paritě. Většina z vás teď asi nakrčila čelo, nos a mozek a vyvstala vám otázka: O čem? O paritě.
Když jsem se někdy v devadesátých letech poprvé dozvěděl o diskovém poli, které má nejméně 3 disky stejné velikosti, efektivní využitelnou kapacitu rovnou (N-1)/N (u tří disků tedy dvě třetiny, ale u osmi už 7/8, tedy rovných 87,5% instalované kapacity), a kterýkoliv z těchto disků může kdykoliv kleknout a data jsou stále bez výpadku k dispozici, klepal jsem si na čelo. Říkal jsem, že je to nesmysl. Jak asi nacpeš data ze sedmi disků na jeden? To je blbost! Jednoduché vyjádření parity tří disků
Pak jsem se zase vrátil na zem ze své iluze vševědoucnosti a přečetl si něco o fungování paritních funkcí. Princip je totiž jako všechno geniálního jednoduchý až triviální. Pohybujeme se ve světě výpočetní techniky, tedy techniky, která používá dvojkovou soustavu. Na rozdíl od námi běžně používané desítkové, která má deset symbolů 0-9, má dvojková jen dva: nulu a jedničku. Je to především proto, že se tyto symboly dají snadno elektricky vyjádřit. Například žádné napětí = nula, přítomné napětí = jednička. Pokud k tomuhle přidáte společnou frekvenci pro čtení dat a definujete rozmezí hodnot napětí pro jedničku, máte k dispozici ustálený datový tok nul a jedniček. (Ve skutečnosti je to o něco komplikovanější, ale na vlastním fungování to nic nemění. Navíc vám nechci komplikovat chápání věcmi, jako že stejnosměrné napětí má kladnou a zápornou hodnotu, tvar signálu a nějaké hrany. Aby tedy procesor mohl pracovat, stačí mu vlastně proud jedniček a nul. Jednička a nula je tedy nejmenší možnou jednotkou informace a říká se jí bit. Aby to bylo o něco efektivnější, tak se bity sdružuji do nadřazených jednotek, které se nazývají byte [bajt] (dále pak jsou slabiky, slova, dvojslova). Velikostně se 1 byte = 8 bitů. Důvodem, proč osm, je zase dvojková soustava. Osm je číslo binárně stejně hezké, jako třeba deset v desítkové soustavě. Je li vám v binárním světě osm, zkrátka slavíte kulatiny, vyjádření v binární podobě je totiž 1000 (nikoliv tisíc, ale jenom osm ;o). A jak počítače rostly, rostla jim i sběrnice. Z osmibitových se staly šestnáctbitové, pak 24-bitové a dnes už se běžně používají 64-bitové a mluví se o 128-bitových instrukcích. dnešní CPU tedy běžně zpracovává 8 byte informací najednou a v jedničnách a nulách pracují jenom sériové sběrnice. Ale uvnitř procesoru, bez ohledu na to, v jak širokých zástupech do něj data proudí, jsou zase jenom tranzistory, které umí pracovat jen s hodnotami 1/0, vypnuto/zapnuto, svítí/nesvítí a obutá/neobutá ;-). Procesor je tedy vlastně takový hlupáček, který neumí nic jiného, než přehazovat jedničky a nuly, ale zese tohle umí pekelně rychle. A tím se dostáváme i k té záhadné paritě. Jednou ze základních paritních funkcí je totiž XOR. Taky máte pocit, že jsem vám právě nadával? To jsem si myslel taky, ale hned vysvětlím blíž.
Řekněme, že máme zapsat na disk 4 byte informací. Vyjádřeno v ASCII 65, 72, 79, 74 (tedy AHOJ), binární zarovnaný zápis je 01000001, 01001000, 01001111, 01001010. Když z těchto čísel spočtu XOR funkcí paritu, dostanu binární číslo: 00001100
Snadno danou věc spočítáme, když si tyto byte napíšeme pod sebe:
01000001 (A)
01001000 (H)
01001111 (O)
01001010 (J)
00001100 (parita)
XOR si totiž můžete představit jako vyjádření věty: jedno, nebo druhé, ale ne oboje najednou. Technicky vzato je jednička všude, kde se XOR funkce zůčastní lichý počet jedniček, bez ohledu na počet XORanců (viz sčítanců :-). A hlavní kouzlo a trik spočívá právě v tomhle! Když totiž ztratím řekněme H v druhém řádku, ale budu mít tuhle paritu, spočítám si z ní a zbylých tří písmen paritu, dostanu chybějící H: 01000001 (A)
00001100 (parita)
01001111 (O)
01001010 (J)
01001000 (H)
Taky vám to přijde jako kouzlo? A platí to, ať máte disky tři a nebo třicet. Já na to koukal poprvé jako vejr. Nevěřil jsem vlastním očím natolik, že mi to nedalo, a pár takových příkládků jsem si spočítal. Fakt to funguje. Nekecám. Takže mám 4 byte, jeden byte uložím jako paritu (redundantní prostor, koupený navíc) a kdykoliv můžu zapomenout kterékoliv z těchto dat a přesto mám stále všechna data. V době, kdy jsem začínal, se objevovaly v serverech SCSI řadiče, které dokázaly ovládnout nejprve 7 a pak i 15 disků (dnes už není problém ani v běžném slušně vybaveném chipsetu základní desky mít 10 SATA portů), ze kterých jste si pak mohli vytvořit za pomoci 120MB disků neskutečné pole o využitelné kapacitě 1440MB. Nesmějte se, nespletl jsem si jednotky. Já zažil i menší disky a můj první počítač standardu PC AT měl famózních 40MB.
Ptáte se možná, kde je ta řádka psaná čtyřbodovým písmem na patnácté stránce dole pod čarou, která říká, že do roka vás vezme čert? Ptáte se správně a mnozí z vás už třeba tuší. S každým uloženým bitem, ano jedním jediným bitem, musím přepočítat paritu a uložit nejméně další jeden bit. U některých typů pole i několik kilobytů navíc pro přepočet a zápis. Jakékoliv diskové pole postavené na paritním zápisu dat je tedy znatelně pomalejší při zápisu a pokud vám ten disk opravdu klekne, to samé nastane i pro každé čtení dat.
Tak. Teoretický úvodník jste si protrpěli, teď už na vás čekají disková pole typu RAID2-RAID6. Takže příště...
AUTOR: Jan Kořínek |
---|
V IT jsem už 18 let a z toho jsem posledních 5 let vedl webhostingovou divizi. V tuto chvíli už působím jen jako externí konzultant - specialista na Linux, počítačové sítě a bezpečnost.
A jelikož si od IT odpočívám, otevřeli jsme si se ženou kavárničku. |
|