Softvérové diskové poliaBez ohľadu na to, aké pevné disky máte, určite majú svoje obmedzenia: sú príliš malé, sú príliš pomalé, alebo sú príliš nespoľahlivé. Všetky tieto obmedzenia možno čiastočne riešiť vytváraním diskových polí. Diskové polia môžu byť hardvérové, t.j. implementované radičom pevných diskov, alebo softvérové, ovládané programom pracujúcim nad tradičným spôsobom pripojenými pevnými diskami. Hoci sa o diskových poliach zvyčajne hovorí v súvislosti s pevnými diskami s rozhraním SCSI, jednoduchšie softvérové diskové polia možno v operačnom systéme FreeBSD rovnako dobre ako z pevných diskov s rozhraním SCSI budovať aj z pevných diskov s rozhraním IDE a takéto riešenie môže dostatočne efektívne a účinne pomôcť prekonať obmedzenia pevných diskov zapojených samostatne. Pre označenie diskových polí sa už tradične používa skratka RAID – Redundant Array of Independent Disks – čo by sa dalo voľne preložiť ako pole nezávislých pevných diskov, ktoré zabezpečujú redundantné uloženie údajov. Písmeno I v skratke sa niekedy interpretuje ako Inexpensive (t.j. lacný), čo vzniklo z toho, že vytváraním diskových polí možno získať výkonnosť a kapacitu na ukladanie údajov relatívne lacným spôsobom. Existujú rôzne druhy diskových polí. Pre každý druh je charakteristický spôsob usporiadania pevných diskov v ňom, miera bezpečnosti (redundancie) uložených údajov a rýchlosť zápisu údajov a rýchlosť ich čítania. Typy diskových polí sa označujú číslami a niektoré typy majú aj svoje zaužívané slovné označenia. Pomocou softvérových nástrojov v operačnom systéme FreeBSD možno budovať iba niektoré typy diskových polí: Zväzok diskov – Menšie pevné disky sa zreťazia a vytvoria jeden veľký disk, ktorého kapacita je súčtom kapacít jednotlivých diskov. Kapacity jednotlivých pevných diskov, z ktorých je zväzok zložený, sa môžu navzájom líšiť. Tento spôsob vytvorenia diskového poľa nezabezpečuje žiadnu redundanciu uloženia údajov. Rýchlosť zápisu aj čítania údajov sa môže zvýšiť, ak na diskové pole pristupuje súčasne viacero procesov, pretože existuje určitá pravdepodobnosť, že jednotlivé procesy budú pristupovať na také časti diskového poľa, ktoré ležia na rozličných pevných diskoch. RAID 0 – Pomenovanie je zavádzajúce, pretože v tomto prípade sa o skutočný RAID nejedná – toto diskové pole totiž žiadnu redundanciu uloženia údajov nezabezpečuje. Je určené na vytvorenie jedného veľkého disku, ktorého kapacita je súčtom kapacít jednotlivých diskov, podobne ako pri zväzku diskov. Na rozdiel od jednoduchého zväzku diskov diskové pole RAID 0 – nazývané tiež pruhované pole (z anglického striped) – rozdeľuje zápisy na disk tak, že údaje rozdeľuje na malé časti, a tieto cyklicky zapisuje na jednotlivé disky v poli; preto veľkosti jednotlivých diskov musia byť rovnaké. Pruhovaním (stripovaním) sa dosahuje zvýšenie rýchlosti zápisu aj čítania údajov. Zároveň však z takéhoto spôsobu zápisu údajov vyplýva, že ak dôjde k poškodeniu ktoréhokoľvek z diskov v diskovom poli RAID 0, dôjde ku strate všetkých údajov. Na vytvorenie takéhoto diskového poľa sú potrebné aspoň dva pevné disky. Čím je diskov viac, tým väčší zisk výkonnosti možno dosiahnuť, tým je však vyššia aj možnosť zlyhania celého poľa, pretože toto obsahuje viac elementov, ktoré môžu zlyhať. RAID 1 – V tomto prípade sa už jedná o skutočný RAID; redundancia údajov je zabezpečená tzv. zrkadlením (z anglického mirroring), čo znamená, že kópie tých istých údajov sa ukladajú na všetky pevné disky v diskovom poli. Z toho vyplýva požiadavka, že všetky disky v diskovom poli musia mať rovnakú veľkosť. Veľkosť celého diskového poľa je rovnaká, ako veľkosť jedného pevného disku v poli. Redundancia údajov tak môže byť pri diskovom poli RAID 1 veľmi vysoká, využitie kapacity dostupných pevných diskov je však veľmi neefektívne. Rýchlosť zápisu je mierne pomalšia ako bez použitia diskového poľa, pretože údaje sa musia zapísať na každý pevný disk (zápis však prebieha paralelne). Rýchlosť čítania je vyššia ako bez použitia diskového poľa, pretože rozličné časti údajov sa môžu čítať z rozličných pevných diskov v poli. Na vytvorenie diskového poľa RAID 1 sú potrebné aspoň dva pevné disky. Čím je diskov viac, tým je redundancia uloženia údajov vyššia údajov vyššia – diskové pole bude možné používať, pokiaľ v ňom bude aspoň jeden fungujúci pevný disk. RAID 0+1 – Diskové pole využívajúce výhody diskových polí RAID 0 a RAID 1. Pevné disky v tomto poli sú organizované tak, že tvoria niekoľko diskových polí typu RAID 0 rovnakej veľkosti a tieto polia sú spojené do jedného diskového poľa typu RAID 1. Je tak zabezpečená redundancia uloženia údajov a rovnako je aj zvýšená výkonnosť čítania a zápisu údajov. Na vytvorenie diskového poľa tohto typu sú teda potrebné minimálne štyri pevné disky, z ktorých dve dvojice diskov tvoria dve diskové polia typu RAID 0 a tieto dve polia sú spojené do diskového poľa typu RAID 1. Výsledná kapacita je potom polovica so súčtu kapacít všetkých použitých pevných diskov. Diskové pole typu RAID 0+1 sa používa v prípade, ak systém na vytváranie softvérových diskových polí (alebo radič hardvérového diskového poľa) neumožňuje vytvárať diskové polia typu RAID 5, pretože diskové pole typu RAID 5 umožňuje efektívnejšie využiť kapacitu štyroch (a viacerých) pevných diskov ako RAID 0+1. RAID 5 – Toto diskové pole zabezpečuje redundantné uloženie údajov, pričom dostupnú diskovú kapacitu pevných diskov zapojených v poli využíva čo možno najlepšie. Údaje sa pri zápise rozdeľujú na časti, ktoré sa cyklicky zapisujú na jednotlivé pevné disky (podobne ako pri diskovom poli RAID 0), pričom na jeden z diskov sa zapisuje paritný blok údajov zapísaných na ostatné disky. Ak dôjde k výpadku disku, na ktorom je uložený údajový blok, je možné tento blok vypočítať z ostatných údajových blokov a paritného bloku. Ak dôjde k výpadku disku, na ktorom je uložený paritný blok, je možné paritu vypočítať a obnoviť z pôvodných údajových blokov. Na realizáciu diskového poľa typu RAID 5 sú potrebné aspoň tri pevné disky. (Teoreticky možno vytvoriť diskové pole typu RAID 5 na dvoch diskoch, ale toto riešenie by bolo ekvivalentné použitiu diskového poľa typu RAID 1, pretože v prípade diskového poľa typu RAID 5 na dvoch diskoch by na jednom z diskov boli uložené samotné údaje a na druhom ich binárny doplnok – parita.) Veľkosti pevných diskov v poli musia byť rovnaké. Kapacita diskového poľa sa rovná súčtu kapacít pevných diskov v poli okrem disku, na ktorom sú uložené paritné bloky. (V skutočnosti sú paritné bloky rozložené na všetkých diskoch, z hľadiska dosiahnutej kapacity diskového poľa to ale vyzerá, akoby bola strata na diskovej kapacite rovná práve kapacite jedného disku v poli.) Rýchlosť vstupno-výstupných operácií nad diskovým poľom typu RAID 5 je ovplyvnená potrebou výpočtu parity; táto potreba vstupno-výstupné operácie spomaľuje. Naopak, údaje sú zapisované a čítané paralelne z viacerých diskov, čo na druhej strane na rýchlosť vplýva pozitívne. Pevné disky – nech už sú akokoľvek rýchle – sú takmer vždy úzkym miestom výpočtového systému. Zatiaľ čo pevné disky s rozhraním SCSI sú pre budovanie softvérových diskových polí viac-menej bezproblémové (na jeden radič možno pripojiť väčšie množstvo pevných diskov – typicky 15 – a prístup k nim môže byť úplne paralený využívajúc priepustnosť SCSI zbernice pre všetky disky rovnako), pevné disky s rozhraním IDE majú mnohé obmedzenia: k jednému radiču možno pripojiť najviac dva pevné disky a priepusnosť zbernice sa pri prístupe k dvom pevným diskom pripojeným na jeden IDE radič medzi tieto disky delí. Na matičných doskách bývajú zvyčajne dva, len zriedkakedy štyri IDE radiče. Pre budovanie diskových polí z pevných diskov s rozhraním IDE z uvedeného vyplývajú určité nezanedbateľné obmedzenia: Pevné disky s rozhraním IDE, z ktorých sa skladá diskové pole, by mali byť umiestnené každý na samostatnom IDE radiči. To znamená, že možno vytvoriť iba diskové pole z dvoch pevných diskov. Ak matičná doska počítača triedy PC disponuje štyrmi IDE radičmi, je pravdepodobné, že na dvoch z nich možno vytvoriť hardvérové diskové pole typu RAID 0, RAID 1 a možno aj RAID 0+1. Ak matičná doska disponuje iba dvomi IDE radičmi, nemožno efektívne vytvoriť diskové pole typu RAID 5, pretože toto vyžaduje minimálne tri nezávislé disky, ako bolo vysvetlené vyššie. Samozrejme, je možné urobiť diskové pole aj z pevných diskov, ktoré sú pripojené na tom istom IDE radiči, ale výsledkom bude diskové pole, ktoré bude značne pomalé. Toto riešenie ma význam v prípade jednoduchého zreťazenia diskov, kedy sa optimalizácia rýchlosti pri prístupe na diskové pole môže dosiahnuť iba v prípade, že viacero procesov pristupuje na rozličné časti poľa, ktoré ležia na rozličných pevných diskoch pripojených na rozličných IDE radičoch, alebo v prípade, keď prvoradou požiadavkou je zabezpečenie redundantného uloženia údajov pomocou zrkadlenia diskov, ale nie je iná možnosť, ako tieto disky pripojiť na rovnaký IDE radič – toto riešenie však bude extrémne pomalé. Rovnako veľmi pomalé bude diskové pole typu RAID 5 zložené napr. z troch pevných diskoch pripojených na dvoch IDE radičoch. Operačný systém FreeBSD poskytuje hneď dva spôsoby vytvárania softvérových diskových polí. V oboch prípadoch sa jedná o kombináciu ovládača na úrovni jadra operačného systému a systémového nástroja na správu diskového poľa. Starší, jednoduchší a primitívnejší nástroj na budovanie softvérových diskových polí sa nazýva Concatenated Disk driver, príslušný ovládač v jadre operačného systému je ccd(4) a príslušný konfiguračný nástroj je ccdconfig(8). Novší a flexibilnejší nástroj na budovanie softvérových diskových polí sa nazýva Vinum Volume manager, príslušný ovládač v jadre operačného systému je vinum(4) a rovnaké meno má aj k nemu patriaci konfiguračný nástroj vinum(8). Concatenated Disk driverConcatenated Disk driver bol pôvodne naprogramovaný na Univerzite v Utahu pre operačný systém NetBSD. Umožňuje spájať viacero partícií do jedného logického zväzku, pričom údaje sa zapisujú po častiach ("stripovane"), a to aj v tom prípade, ak disky, z ktorých je pole zložené, nemajú rovnakú veľkosť (údaje sa na disky rozdeľujú, pokiaľ je to možné, inak sa zapisujú iba na väčšie disky). Hlavným zámerom použitia ccd však je vytváranie zrkadlených diskov za účelom zabezpečenia redundantného uloženia údajov. Autori zamýšľali aj implementovanie softvérového diskového poľa typu RAID 5, avšak túto funkcionalita ccd nemá. Ak sa zrkadlené diskové pole vytvorí pomocou ccd napríklad na štyroch pevných diskoch, tieto sú v diskovom poli organizované tak, že jedna kópia údajov "stripovane" uložená na jednej dvojici pevných diskov a druhá – zrkadlená – kópia údajov je druhej dvojici diskov uložená opäť "stripovane". Pri vhodnej voľbe veľkostí jednotlivých pevných diskov (ideálne je, ak majú všetky rovnakú veľkosť), je teda dosiahnutý efekt diskového poľa RAID 0+1. Obnovovanie údajov uložených na softvérovom diskovom poli vytvorenom pomocou ccd je problematické; sami autori v manuálovej stránke programu ccdconfig(8) tvrdia, že sa jedná doslovne o úbohú implementáciu. Pri poruche niektorého z diskov v zrkadlenom diskovom poli by malo toto byť okamžite prestané používať na zápis, údaje by sa mali zálohovať, diskové pole znovu vytvoriť z funkčných pevných diskov a nakoniec údaje obnoviť zo zálohy. Samozrejme, ak dôjde k výpadku niektorého z pevných diskov, ktoré sú zapojené v nezrkadlenom diskovom poli, dôjde ku strate všetkých údajov, lebo tieto sú distribuované "stripovaním" na všetkých pevných diskoch v poli, t.j. aj na poškodenom. Vinum Volume ManagerSystém Vinum na tvorbu softvérových diskových polí je vo FreeBSD od verzie operačného systému 3.0. Oproti ccd sa jedná o oveľa flexibilnejší, prepracovanejší, ale aj zložitejší nástroj. Umožňuje spájať disky do zväzkov a vytvárať softvérové diskové polia typu RAID 0, RAID 1, RAID 0+1 a RAID 5. V posledných verziách operačného systému FreeBSD možno zo softvérového diskového poľa typu RAID 1 aj štartovať operačný systém, čo dá sa povedať hraničí s čiernou mágiou: zo softvérového diskového poľa sa načíta ovládač tohto diskového poľa, ktorý jediný vie, ako s týmto diskovým poľom pracovať. Na správu systému Vinum slúži rovnomenný systémový nástroj vinum(8). Možno ho používať interaktívne (ak sa spustí bez parametrov príkazového riadku, poskytuje používateľovi vlastný príkazový riadok na správu diskového poľa), alebo ho možno používať tak, že všetky potrebné údaje na požadovanú činnosť sa mu zadajú ako parametre príkazového riadku – vtedy program vinum(8) vykoná zadanú akciu a ukončí sa. Na počiatočnú inicializáciu systému Vinum sa používa konfigurácia zapísaná v textovom konfiguračnom súbore. Po inicializácii sa táto konfigurácia uloží na všetky pevné disky systému Vinum a jadro operačného systému FreeBSD bude ďalej akúkoľvek konfiguráciu systému Vinum čítať odtiaľ. To má za následok zaujímavú a v kritických situáciách veľmi dôležitú vlastnosť: pevné disky, na ktorých je vytvorené softvérové diskové pole pomocou systému Vinum, je možné vybrať z počítača a pripojiť ho do iného počítača s operačným systémom FreeBSD; diskové pole bude rozpoznané a operačný systém ho dokáže používať. V terminológii systému Vinum sa na označenie jednej kópie údajov používa označenie plex. Diskové pole typu RAID 0 a zväzok diskov obsahujú len jeden plex, zatiaľ čo diskové polia typov RAID 1 a RAID 0+1 na zabezpečenie redundatného uloženia údajov obsahujú viacero plexov; systém Vinum umožňuje vytvoriť diskové pole, ktoré bude obsahovať až osem kópií údajov – plexov. Diskové pole typu RAID 5 obsahuje iba jeden plex, avšak usporiadanie diskov v tomto poli redundanciu zabezpečuje výpočtom a uložením paritných údajov. ZáverSoftvérové diskové polia v operačnom systéme FreeBSD môžu čiastočne riešiť niektoré problémy s pevnými diskami, a to bez dodatočných nákladov. Hoci to nie je ich hlavné určenie, možno pomocou nich mierne zlepšiť výkonnosť diskového podsystému. Nakoľko je diskový podsystém zvyčajne najpomalšou časťou výpočtových systémov, aj toto mierne zlepšenie môže byť niekedy citeľné. Užitočné môže byť diskové pole aj v prípade, keď je potrebná disková partícia, ktorá je väčšia ako ktorýkoľvek z dostupných pevných diskov, pretože dokáže rôznymi spôsobmi dostupné pevné disky spojiť do jedného celku. Najdôležitejšia vlastnosť diskových polí je zabezpečenie redundantného uloženia údajov tak, aby boli prístupné aj po zlyhaní niektorého z pevných diskov. Ani diskové polia – softvérové či hardvérové – nie sú všemocné. Údaje na diskových poliach zabezpečujúcich ich redundantné uloženie sú bezpečné, pokiaľ dôjde k výpadku jedného alebo niekoľko málo pevných diskov v diskovom poli. Nie sú však bezpečné, ak dôjde k výpadku celého diskového poľa, napríklad v dôsledku prerušenia napájacieho napätia. Nemá preto význam spoliehať sa na diskové pole, ak nie je pripojené na záložný zdroj pole samé, aj výpočtový systém, ktorý naň pristupuje (v prípade softvérového diskového poľa je spravidla diskové pole súčasťou výpočtového systému, ktoré ho používa, v prípade hardvérového diskového poľa toto môže, ale nemusí byť samostatné). Bezpečné uloženie dôležitých údajov je hotová veda a diskové polia sú iba jedným z mnohých prvkov, ktoré možno na tento zámer použiť. |