1.4 TrueNAS – vytvorenie diskového poľa
Diskové pole
Diskové pole (pool) je spojenie viacerých samostatných diskov, môžeme ho chápať ako virtuálny disk, ktorý je zložený z viacerých samostatných diskov a štandardne sa preň používa označenie RAID (Redundant Array of Independent Disks). Pri bežnom nasadení vytvárame jediné pole zo všetkých diskov. Každému diskovému poľu musíme nastaviť režim. Štandardné režimy RAID majú číselné označenie (RAID 0 až 6) – nebudeme sa nimi však podrobne zaoberať a zameriame sa na možnosti TrueNAS servera…
Režim Strip (RAID 0)
Z hľadiska bezpečnosti údajov môžeme úplne ignorovať režim Strip (bežné označenie RAID 0) – údaje sa ukladajú striedavo na dva disky, čo teoreticky až zdvojnásobí rýchlosť zápisu i čítania, no prídeme o spoľahlivosť. Pri poruche jedného disku prídeme o všetky údaje a pri čiastkovom poškodení údajov bude možné chybu len detegovať, no nie opraviť. Takéto diskové pole by mohlo mať zmysel len na testovacie účely, ale nie v serióznom praktickom nasadení.
Režim Mirror (RAID 1)
Pre dva dátové disky máme k dispozícii režim Mirror (bežné označenie RAID 1) – na oba disky sa ukladajú rovnaké údaje. Celkovo bude využitá kapacita len polovičná, čo predstavuje nepriaznivý pomer cena / výkon.
Rýchlosť čítania je vyššia ako pri jednom disku, pretože údaje sa čítajú striedavo z oboch diskov súčasne. Teoreticky je možné dosiahnuť až 2-násobnú rýchlosť čítania, no len pri sekvenčnom čítaní (pri veľkých súboroch). Zápis však rýchlejší nebude – rovnaké údaje sa musia zapísať na oba disky.
Primárnym cieľom tohoto režimu však nie je zvýšenie rýchlosti, ale spoľahlivosti. Údaje sa zachovajú v prípade, že sa pokazí jeden z diskov – po výmene disku sa na ňom údaje obnovia.
Režim RAIDZ1
Ak máme aspoň tri dátové disky, zaujímavý je režim RAIDZ1 (vylepšená implementácia RAID 5) – v súčte bude jeden disk slúžiť na redundanciu, ostatné na ukladanie údajov. V skutočnosti sú redundantné údaje (takzvaná parita) rovnomerne rozložené po všetkých diskoch, čo prispieva k vyššiemu výkonu oproti tým režimom, ktoré musia paritu ktoréhokoľvek disku ukladať vždy na jeden konkrétny vyhradený disk.
Označenie RAIDZ sa týka špeciálnych RAID režimov, implementovaných v súborovom systéme ZFS (budeme sa mu venovať nižšie). Číslo 1 znamená, že režim zvládne zlyhanie jedného disku – bez ohľadu na to, koľko sme ich do poľa pridali. Po výmene pokazeného disku sa na ňom údaje obnovia.
V čom je špeciálna ZFS implementácia RAIDZ1 vylepšená oproti štandardnému RAID 5?
Výhod je viac:
- Tradičný RAID5 má slabinu pri náhlom prerušení počas zápisu (napr. pri výpadku elektriky), keď sa časť údajov zapíše a časť nie – systém po reštarte nevie, ktoré údaje sú správne. Tento problém sa označuje „RAID Write Hole". RAIDZ1 používa princíp Copy-on-Write, pri ktorom sa pri zápise neprepisujú existujúce údaje, ale zápis prebieha na nové miesto vo forme transakcie – buď sa potvrdí po kompletnom dokončení alebo neprebehne vôbec.
- Po výmene pokazeného disku musí štandardný RAID5 kopírovať úplne celú kapacitu nového disku, aj ak bol takmer prázdny. Navyše, pokiaľ pri kopírovaní narazí na poškodené údaje na funkčnom disku, obnova zlyhá. RAIDZ1 si vďaka kontrolným súčtom poradí s chybným údajom a ani nepotrebuje kopírovať celý disk – kopíruje len uložené údaje.
- RAIDZ1 používa dynamickú veľkosť zapisovaného bloku, čo zrýchľuje zápis malých súborov.
Pri troch zapojených dátových diskoch sa na teoretický 2-násobok zvyšuje nielen rýchlosť čítania, ale aj rýchlosť sekvenčného zápisu – údaje sa rozdelia na viaceré časti a každá časť sa súčasne zapisuje na iný disk, zároveň so zápisom redundancie. V tomto režime môžeme zapojiť i viac diskov – výkon bude stúpať a rovnako aj pomer cena / výkon.
Žiadne diskové pole nenahrádza zálohovanie! V prípade veľkého problému (prepätie z blesku, zatopenie pri poruche potrubia, požiar, výbuch, prírodná katastrofa a podobne) sa môže zničiť celé diskové pole. Podobne pri krádeži celého servera nám diskové pole nijako nepomôže.
Vytvorenie diskového poľa v TrueNAS
Keď sme sa už rozhodli pre režim, diskové pole vytvoríme cez Storage → Create Pool.
Zároveň sa vytvorí aj diskový oddiel (Dataset) pre prístup k súborom na vytvorenom diskovom poli – priamo naň však nebudeme ukladať žiadne súbory a ani ho nebudeme zdieľať. Radšej si vytvoríme vnorené ZFS oddiely. Od klasických oddielov (v súborových systémoch ako NTFS, FAT32, ext4) sa však líšia – ZFS oddiely nemajú svoju pevnú veľkosť, ale sú dynamické, každý oddiel zdieľa kapacitu celého diskového poľa.
V prípade, že sme vytvorili diskové pole z NVMe alebo SSD diskov, je vhodné zapnúť aj automatické premazávanie blokov na disku po zmazaných súboroch. Dosiahneme to v ponuke Storage → Storage Health zapnutím funkcie Auto TRIM.
Súborový systém ZFS
TrueNAS využíva veľmi pokročilý súborový systém ZFS, ktorý je optimalizovaný práve pre súborové servery:
- počíta a overuje kontrolné súčty pre každý blok údajov, vďaka čomu vie odhaliť poškodenie bloku – takzvaná „tichá korupcia“ (bit rot);
- ak sa zistí poškodenie bloku údajov na niektorom disku z diskového poľa, poškodené údaje sa automaticky opravia z redundancie v diskovom poli – takzvaná „samoliečba“ (self-healing);
- v predvolenom stave je zapnutá transparentná kompresia LZ4, ktorá šetrí miesto na disku a môže aj zrýchliť čítanie a
zápis.zápis;
Spomínaná kompresia LZ4 je vo všeobecnosti výhodná voľba – je veľmi rýchla (s takmer nulovou záťažou CPU) a v praxi zrýchľuje čítanie i zápis komprimovateľných údajov (disk bude zapisovať i čítať menšie objemy údajov). Navyše veľmi rýchlo odhalí súbory, ktoré už sú komprimované a nesnaží sa ich komprimovať znovu.
V prípade ukladania veľkého množstva textových dokumentov (ako sú protokoly), je možné zapnúť účinnejšiu kompresiu ZSTD-3, ktorá je stále veľmi rýchla (ide o predvolenú kompresiu pre súborový systém Btrfs).
Je možné nastaviť rôzne typy kompresie individuálne pre rôzne priečinky na disku?
Nie, v rámci diskového oddielu to možné nie je, no kompresiu je možné nastaviť pre každý oddiel (dataset) zvlášť. A keďže oddiely je možné zaradiť do súborového systému ako priečinky, tak v konečnom dôsledku môžeme mať individuálne nastavené priečinky.
Špeciálne vyhradené disky pre ZFS
Pokiaľ máme k dispozícii ešte ďalšie samostatné disky, je ich v diskovom poli so systémom ZFS možné využiť na špeciálne účely:
- Spare je pripravený neaktívny disk, ktorý sa automaticky zaktivuje pri zlyhaní ktoréhokoľvek úložného disku;
- Log (SLOG) slúži ako ochrana pre synchrónne zápisy (napr. pre databázy) – veľmi rýchly disk (NVMe), na ktorý sa okamžite zapíšu prichádzajúce údaje pre prípad výpadku prúdu pred ich uložením na pomalšie disky;
- Cache (L2ARC) je rýchly disk v úlohe vyrovnávacej pamäte pre čítanie, bežne však na tento účel primárne slúži voľná operačná pamäť;
- Metadata je rýchly disk na ukladanie metadát, čo výrazne urýchľuje vyhľadávanie a výpis súborov (pri jeho zlyhaní však skolabuje celé pole, preto musí byť aj Metadata disk v redundancii);
- Dedup je rýchly disk slúžiaci pre deduplikáciu súborov (odhaľovanie duplicitných súborov v úložisku, šetrí kapacitu disku) – pre tento účel je potrebný, pokiaľ nie je k dispozícii veľké množstvo operačnej pamäte (oficiálne sa uvádza potreba 5 GB pamäte na deduplikáciu každého TB údajov).
Všetky uvedené možnosti sú veľmi pokročilé a v SOHO prostredí obvykle zbytočné.