Disková pole v praxi #3 - Parita disků Tisk E-mail
Napsal Jan Kořínek   
Pondělí, 01 únor 2010
altBrouzdali 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!

raid_parity
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

table_xor

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)

xor

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.

Starší články


Komentáře
Přidat Nový
KoHHHnA [Zobrazit profil] [Poslat zprávu] 2010-02-01 10:14:48
avatar
Sám sebe jsem se ptal, co mi tady na DDworldu chybí a důmal jsem nad tim, proč kolem něj pořád čmuchám jako mlsnej pes..už mi to cvaklo..HLEDAL JSEM POKRAČOVÁNÍ TVÝCH ČLÁNKŮ O DISKOVÝCH POLÍCH!! Teda dal jsi si načas, ale jsem rád, že tady vůbec někdo něco takovýho vydává, takže mi nezbývá než říct: "díky za pěknej článek" a zeptat se: "kdy bude další?"
holoway [Zobrazit profil] [Poslat zprávu] 2010-02-01 11:20:11
avatar
ahoj. kořen už měl článek hotový hned s druhým dílem. to já jsem si dal na čas, než jsem ho vydal Máš pravdu, že je to rozhodně zajímavé. Ta parita je docela mazec věc. Slova geniální a jednoduché jsou fakt na místě
koren [Zobrazit profil] [Poslat zprávu] 2010-02-01 15:12:41
avatar
Někdy ve čtvrtek nebo v pátek hodím zase kousek praxe a dám do kupy ta vyšší pole. Takže se těš na RAID2-6. :-)
]mh[ Virtek [Zobrazit profil] [Poslat zprávu] - 1-8 nebo 0-7 2010-02-01 13:31:58

POZOR DEC(8 ) = BIN(1000) !
tech 8 neni moc dobre vysvetleno, stacilo tam zminit, ze pri 7-mi se konci 3 rady a pro 8 je potreba 4 bitu, cili dalsiho RADU [pozn. pocitame od nuly].

jinak nadherne cteni, otcovska ruka je videt (jen tipuji )
koren [Zobrazit profil] [Poslat zprávu] 2010-02-01 15:10:47
avatar
Díky, dám si pozor na preciznější popisy.
Co jsi myslel tou otcovskou rukou?
]mh[ Virtek [Zobrazit profil] [Poslat zprávu] 2010-02-01 16:28:12

je to napsane tak ctive, jednodusse jako kdyz to otec vysvetluje nactileletemu ditku - apson me to tak pripada
koren [Zobrazit profil] [Poslat zprávu] 2010-02-01 16:39:25
avatar
Aha, no tak to docela sedí. Moje žena je učitelka a já jsem snad u každého projektu musel předávat know-how zákazníkovi ;o)
holoway [Zobrazit profil] [Poslat zprávu] 2010-02-01 17:13:38
avatar
Mělo by to být opraveno
Vespa [Zobrazit profil] [Poslat zprávu] 2010-02-01 23:38:01

no tady ty logicky operace sem bral nedavno ve skole, takze sem na to zas tolik nehledel xD ale o vyuziti pri vytvareni poli me teda rozhodne nenapadlo....jinak pekny clanek, tesim se na pokracovani
jardop [Zobrazit profil] [Poslat zprávu] 2010-02-02 09:57:13

cakame na dalsi diel..
koren [Zobrazit profil] [Poslat zprávu] 2010-02-02 23:28:55
avatar
Právě jsem ho dopsal, teď už to jen čeká na finalizaci od Holowaye ;o)
holoway [Zobrazit profil] [Poslat zprávu] 2010-02-04 10:22:22
avatar
Eeeeééé To sem nepiš, pak jsem ve stresu, když to všichni vědi, že už si to napsal
koren [Zobrazit profil] [Poslat zprávu] 2010-02-04 14:39:33
avatar
Omlouvám se, netušil jsem, že tě to tak zasáhne
Rafan [Zobrazit profil] [Poslat zprávu] 2010-02-06 10:23:56
avatar
Předpokládám že autor má problematiku lépe nastudovanou a opraví mne ale dle mého tato technologie má svá omezení.Pokud bude chyb jdoucích za sebou na 1 nebo více disků mnoho nedokáže již tato metoda data zrekonstruovat z důvodu že informací chybí již příliš mnoho.Pokud je můj předpoklad správný měl by na to raději autor upozornit aby začátečník nepodlehl iluzi že má data takto ošetřena proti ztrátě za všech okolností.Možná se ale pletu a autor tento můj předpoklad vyvrátí.Jinak ale super přiznám se že jsem o tom již slyšel ale jak se říká jen z rychlíku bylo o tom zmíněno jako mimochodem tak že informace nulová.Tento článek má již pro mne hodnotu a jsem chytřejší.
koren [Zobrazit profil] [Poslat zprávu] 2010-02-06 12:53:27
avatar
Díky za otázku. Váš závěr je naprosto správný a píšu o tom v následujícím článku. Zároveň to ještě zvlášť vypíchnu v závěrečném článku, který plánuju jako takové praktické shrnutí slabin a výhod všech v praxi IMHO použitelných polí.
randomofamber [Zobrazit profil] [Poslat zprávu] - pěkný článek 2010-02-12 14:54:42
avatar
Pěkný článek, zvláště pro laiky...

Jinak bych chtěl připomenout, že se kromě BIN a DEC ještě také používá OCT a z toho plyne, že programátoři slaví vánoce už 30.října ..... 30(OCT)=24(DEC) .....
koren [Zobrazit profil] [Poslat zprávu] 2010-02-12 20:20:16
avatar
ROFL, tak tohle jsem neznal!
Anonymní  2010-02-13 14:06:12

nechceš jít k nám učit IVT? náš učitel je debil neschopnej cokoli vysvětlit...
koren [Zobrazit profil] [Poslat zprávu] 2010-02-13 16:26:03
avatar
Děkuji za nabídku, ale spíš ne.
Teď se věnuji poněkud jinému projektu, než IT, a v IT si hodlám vysloveně vybírat, jaký projektík si případně střihnu.
Pouze registrovaní uživatelé mohou přidat komentář!
 

Najdete nás na Facebooku

.... a také na Twitteru

RSS

DDWorld.cz

DDWorld - Blogy a videa

DDWorld - Magazín

Poslední příspěvky v diskuzích


Videa
Prusa Core One – nová uzavřená 3D tiskárna
Prusa Core One – nová uzavřená 3D tiskárnaWednesday, 20 November 2024
Vložil: aDDmin
Kategorie: PC a IT
Spuštěno: 327x
Komentářů: 1
Star Wars Outlaws dostává Update 1.4 – zásadní herní změny!
Star Wars Outlaws dostává Update 1.4 – zásadní herní změny!Wednesday, 20 November 2024
Vložil: aDDmin
Kategorie: Počítačové hry
Spuštěno: 228x
Komentářů: 0
Jak to vypadá v uvnitř DATACENTRA?
Jak to vypadá v uvnitř DATACENTRA?Monday, 18 November 2024
Vložil: aDDmin
Kategorie: PC a IT
Spuštěno: 834x
Komentářů: 0
Vychází LEGO Horizon Adventures – další zábavná LEGO hra?
Vychází LEGO Horizon Adventures – další zábavná LEGO hra?Tuesday, 12 November 2024
Vložil: aDDmin
Kategorie: Počítačové hry
Spuštěno: 1154x
Komentářů: 0
Indiana Jones and the Great Circle hra ala film?
Indiana Jones and the Great Circle hra ala film?Monday, 11 November 2024
Vložil: aDDmin
Kategorie: Počítačové hry
Spuštěno: 1467x
Komentářů: 0
Nový Captain America nevypadá dobře. Thunderbolts* jsou na tom lépe.
Nový Captain America nevypadá dobře. Thunderbolts* jsou na tom lépe.Friday, 08 November 2024
Vložil: aDDmin
Kategorie: Film
Spuštěno: 1315x
Komentářů: 6