Disk array
„Místa na disku je vždy málo" - tak by asi šlo formulovat jednu z velmi aktuálních životních moudrostí. Výrobci se sice doslova předhání v tom, jak velké disky svým zákazníkům nabídnou, ale ti zase na druhé straně dokáží rychle „zaplácat" i ten sebevětší disk. A tak se vesele vyrábí, nakupuje, a obě strany by vlastně mohly být docela spokojeny. Není ale problém někde trochu jinde, než v kapacitě pevných disků? Podívejme se na celou věc z poněkud jiného úhlu.
Kdybychom se zrekapitulovali vývoj pevných disků za posledních cca 10 let, zjistili bychom některé zajímavé skutečnosti: kapacita disků se za tu dobu zvýšila skutečně velmi výrazně - kdo by ještě před deseti lety byť jen pomyslel na gigabytové pevné disky. Ovšem rychlost, s jakou pevné disky pracují - tj. rychlost, s jakou dokáží číst požadovaná data, resp. nějaká data zapisovat - se zvětšila jen několikrát. Budeme-li hodně optimističtí, pak asi desetkrát. Jak se ale mezitím zrychlily procesory? Jestliže první IBM PC začínalo s procesorem, pracujícím na frekvenci 4,77 MHz, pak dnes se hodinová frekvence používaných procesorů blíží ke 100 MHz. Navíc to jsou už i dosti odlišné procesory, které toho za jednu časovou jednotku (jeden „tik" svých hodin) stihnou udělat více. Reálný nárůst rychlosti je proto třeba hledat někde v řádu padesátinásobku či ještě výše.
To ale znamená, že procesory svou rychlostí značně předběhly možnosti pevných disků. V důsledku toho se začaly stále častěji objevovat nejrůznější diskové vyrovnávací paměti (diskové cache), které mají za úkol zmíněnou disproporci minimalizovat. Tyto paměti ale fungují tak, že optimalizují spolupráci procesoru s diskem a způsob využití disku - snaží se jej co nejlépe „vytížit" - ale samotnou rychlost čtení a zápisu na vlastní disk nedokáží nijak ovlivnit.
Není proto divu, že se objevily i jiné techniky, usilující o snížení disproporce mezi rychlostmi procesorů a diskových systémů. Některé z nich se ubírají cestou zrychlování jednotlivých pevných disků různými technickými a technologickými opatřeními. Jiné techniky pak raději volí poněkud jinou cestu - místo jediného, velmi rychlého pevného disku, se snaží využít více pevných disků, které se navenek „tváří" jako jediný celek (jediný pevný disk). Požadované zvýšení rychlosti pak tyto techniky dosahují tím, že se snaží maximálně využít potenciálního paralelismu, a čtení a zápis „skládají" z paralelně probíhajících diskových operací s jednotlivými fyzickými disky. Konkrétní způsob, jakým toho dosahují, vychází nejčastěji z techniky „disk striping" (kterou jsme si popisovali v minulém vydání tohoto seriálu). Pokud jde o terminologii, označuje se takto řešené diskové systémy jako disková pole (disk array).
Diskové pole je tedy celý systém pevných disků, který se navenek chová stejně, jako jediný, velmi rychlý disk. Na jednotlivé pevné disky, používané v rámci takovéhoto diskového systému, ale nemusí být kladeny žádné extrémní rychlostní požadavky. Jestliže se efektu zrychlení dosahuje především jejich souběžným (paralelním) využitím, pak je dokonce možné, aby tyto jednotlivé disky naopak mohly být i „průměrnými disky", jakých dnešní výrobci chrlí na trh celé záplavy, a jejichž cena díky tomu vychází velmi příznivě.
Jestliže se ale někdo rozhodne „postavit" diskové pole na takovýchto cenově nenákladných discích, pak je asi rozumné, aby jich použil více, než by bylo nezbytně nutné, a dosáhl určité odolnosti celého diskového pole vůči výpadkům - konkrétně vůči výpadkům jednotlivých fyzických disků v rámci takovéhoto subsystému. No a tím jsme se již dostali k myšlence, ze které vychází většina dnešních implementací diskových polí. Tuto myšlenku vcelku dobře vystihuje i jejich označení: RAID. Jde o zkratku z anglického Redundant Array of Inexpensive Disks, neboli: „redundantní pole nenákladných disků".
RAID je tedy označení pro techniku, resp. způsob implementace diskového pole, s využitím „běžných" lacinějších disků. Ve skutečnosti ale jde o společné označení celé řady technik, které se liší v některých konkrétních implementačních aspektech, a s nimi pak i v celkovém efektu, který přináší. Jednotlivé techniky jsou přitom uspořádány do úrovní, v současné době od 0 do 5.
Technika RAID úrovně 0 (RAID level 0) je zaměřena pouze na zrychlení práce s diskem. K tomu využívá techniku disk striping (viz minule), a zapisovaná data tedy „rozkládá" na více jednotlivých disků. Těchto disků je ale právě tolik, kolik jich je nezbytně třeba, a není použit žádný další (redundantní), který by umožňoval dosáhnout určité úrovně zabezpečení proti výpadku (fault tolerance).
Technika RAID úrovně 1 (RAID level 1) je ve své podstatě jen technikou „disk mirroring", kterou jsme si popisovali v předminulém vydání této rubriky. Nerozkládá zátěž na více disků, ale veškerá data zapisuje na jediný disk. Vedle tohoto disku je ale souběžně zapisuje i na druhý, „zrcadlový" disk, který je schopen zastoupit první disk v případě jeho výpadku. Technika RAID 1 tedy nenabízí žádné zrychlení, ale nabízí odolnost vůči výpadku jednoho z obou použitých disků. Pokud bychom chtěli být důslední, zřejmě bychom ji ani neměli považovat za implementaci diskového pole.
Technika RAID úrovně 3 (RAID level 3) již opět používá techniku disk striping, alternativně buď na úrovni jednotlivých bitů, nebo na úrovni celých bytů. Data tedy „rozkládá" po jednotlivých bitech či celých bytech na více fyzických disků, ke kterým pak ještě přidává jeden další disk pro paritu. Tím dosahuje jak zrychlení práce s diskem, tak i odolnosti vůči výpadku jednoho (kteréhokoli) z použitých disků.
Technika RAID úrovně 4 (RAID level 4) je obdobná technice RAID 3, avšak používá techniku disk striping na úrovni celých diskových sektorů.
Technika RAID úrovně 5 (RAID level 5) pak také používá techniku disk striping a zapisovaná data rozkládá na jednotlivé disky po celých diskových sektorech. Nepoužívá ale jeden disk, vyhrazený jen pro paritní data. Místo toho příslušné zabezpečovací informace rozkládá rovnoměrně po všech discích, které má k dispozici. Tato technika je v současné době v praxi zřejmě nejpoužívanější, přičemž nabízí jak odolnost vůči výpadku (jednoho ze svých disků), tak i celkové zrychlení při práci s diekm. Zajímavé ale je, že „zrychlovací" efekt této metody (stejně jako metod RAID 3 a 4) je menší než v případě techniky RAID úrovně 0. Důvodem je režie, která u technik RAID 3 až 5 připadá na práci s paritními daty, a která v případě RAID úrovně 0 není žádná.