Hlavní navigace

Zettabyte File System: súborový systém budúcnosti

23. 1. 2008
Doba čtení: 5 minut

Sdílet

Súborový systém ZFS, na rozdiel od bežne známych súborových systémov, pridáva do jadra operačného systému medzivrstvu, ktorá zabezpečuje mapovanie logických sektorov súborového systému na fyzické umiestnenie dát na dátových médiách, a to nie len na úrovni jedného média, ale aj medzi rôznymi diskami.

Stručný opis vlastností

Jedná sa o 128bitový súborový systém s v súčasnosti prakticky neprekročiteľnými limitmi na počet a veľkosti súborov. ZFS priamo podporuje použitie viacerých diskov, RAID 1 a RAID-Z polí, na ktorých môže dynamicky umiestňovať viacero operačných systémov a nevyžaduje dodatočný volume manager pre zabezpečenie tejto funkčnosti.

ZFS 1

Porovnanie obvyklého prístupu k súborovým systémom (vľavo) a prístupu systému ZFS.

Podporuje premenlivú veľkosť bloku pre efektívnejšie využitie miesta podľa typu ukladaných súborov. Zároveň podporuje možnosť verzionovania, kedy pri zmene dát neprepisuje na disku staré bloky, ale vytvára ich kópiu. To umožňuje uchovávať všetky verzie menených súborov a vytvárať tzv. snapshoty, kópiu stavu súborového systému vo zvolenom čase v minulosti.

Podpora v iných operačných systémoch

Zettabyte File System je v novej verzii operačného systému Mac OS X 10.5 Leopard. Okrem spomenutého už existuje implementácia tohto súborového systému v operačných systémoch FreeBSD aj Linux (prostredníctvom modulu FUSE).

Storage pools

ZFS je založený na virtuálnych dátových oblastiach (pools) nazývaných zpools. Jeden zpool, ktorý tvorí základ systému ZFS, môže pozostávať z mnohých fyzických zariadení. Zpool pozostáva z virtuálnych zariadení (vdevs), ktoré sú zas zložené z blokových zariadení ako súbory, partície, alebo skutočné fyzické zariadenia. Blokové zariadenia v rámci vdev môžu byť nastavené rôznymi spôsobmi v závislosti od potrieb a dostupného miesta. Možnosti nastavenia sú napríklad:

  • bez redundancia (podobne ako RAID 0)
  • mirror (RAID 1) dvoch a viacerých zariadení
  • RAID-Z skupina dvoch a viacerých zariadení
  • RAID-Z2 skupina troch a viacerých zariadení

Dátová kapacita všetkých virtuálnych zariadení vdev je dostupná všetkým súborovým systémom v rámci daného zpool.

ZFS 2

Mnoho fyzických diskov spojených do jedného storage pool-u. Viac aplikácií tak môže pristupovať k spojenej kapacite mnohých fyzických zariadení.

Na jeden súborový systém (partícia1 – podmnožina zpool) môže byť nastavená kvóta určujúca maximálnu kapacitu, ktorú môže daná partícia zaberať z jeho zpool. ZFS nepodporuje kvóty pre užívateľov, odporúčaným riešením tu je vytvorenie osobitnej partície pre každého používateľa. Systém rezervácií naopak umožňuje danej partícii zaručiť, že určenú kapacitu bude mať určite k dispozícii. Ako je vidieť, veľkosti aj umiestnenia partícií sú v ZFS úplne dynamické.

Teoretické limity

ZFS je 128-bitový súborový systém, je navrhnutý tak, aby žiadne z jeho limitov neboli prakticky dosiahnuteľné v súčasnosti ani dohľadnej budúcnosti. Niektoré jeho teoretické limity sú:

264 – Počet snapshot-ov
248 – Počet entít v jednom adresáre
16 EiB (264 bytes) – Maximálna veľkosť partície
16 EiB – Maximálna veľkosť súboru
16 EiB – Maximálna veľkosť ktoréhokoľvek atribútu
256 ZiB (278 bajtov) – Maximálna veľkosť každého zpool
256 – Maximálny počet atribútov jedného súboru
256 – Maximálny počet súborov v jednom adresáre
264 – Maximálny počet zariadení v jednom zpool
264 – Maximálny počet zpool v jednom systéme
264 – Maximálny počet súborových systémov (partícií) v jednom zpool

1 EiB (exbibyte) je 260 ≈ 1,153×1018 bajtov
1 ZiB (zebibyte) je 270 ≈ 1,181×1021 baj­tov

Transakčný model Copy-on-write

ZFS používa transakčný model s názvom copy-on-write. Všetky ukazovatele na dátové bloky (block pointers) v rámci súborového systému obsahujú 256bitový kontrolný súčet príslušného bloku, ktorý je kontrolovaný pri čítaní bloku. Blok obsahujúci aktívne dáta nie je nikdy priamo prepisovaný; namiesto toho je vyhradený nový blok, zmenené dáta sú zapísané do neho a všetky metadáta odkazujúce sa na blok sú jednoducho čítané, premiestňované a zapisované.

ZFS 3

Fázy transakcie copy-on-write

Na obmedzenie preťaženia pri tomto procese sú viaceré zmeny spájané do tzv. transakčných skupín a je vytváraný tzv. intend log (v iných súborových systémoch tieť známy pod pojmom žurnál) zaznamenávajúci zamýšľané operácie a umožňujúci v prípade zlyhania nádrat k stavu pred vykonaním danej operácie.

Snímkovanie (snapshots) a klonovanie (clones)

Výhodou systému copy-on-write je, že po zápise nových dát bloky obsahujúce staré dáta môžu byť zachované, čo umožňuje veľmi rýchlo (prakticky okamžite) a počas plnej prevádzky (za behu) systému vytvoriť snímku partície zaznamenávajúcu jej okamžitý stav. Tento snímkovací systém zároveň šetrí diskovú kapacitu tým, že dáta, ktoré neboli od okamihu snímkovania zmenené, neukladá dvakrát.

Môžu byť vytvorené aj prepisovateľné snímky, tzv. klony (clones), ktoré využívajú princíp vzájomného zdieľania dátových blokov medzi rôznymi partíciami. Keď nastane v jednej z nich zmena, je pre danú partíciu vytvorený nový dátový blok a predošlý blok zostáva nezmenený pre ostatné partície, ktoré ho používajú.

Dynamické rozloženie záťaže

Dynamické rozloženie záťaže (Dynamic striping) maximalizuje priepustnosť systému tým, že po pridaní nového fyzického disku naň automaticky presunie časť dát a tým odľahčí ostatné fyzické disky od obsluhy operácií nad danými dátami. ZFS sa snaží dátovými presunmi medzi fyzickými zariadeniami zabezpečiť optimálne rozloženie záťaže.

Rýchle vytváranie súborových systémov (partícií)

V systéme ZFS manipulácie so súborovými systémami (partíciami) sú podstatne jednoduchšie ako v bežných súborových systémoch. Namiesto fyzického premiestňovania množstva dát sú do veľkej miery realizované len modifikácie príslušných odkazov. Podľa, čas a zložitosť vytvárania novej partície v rámci ZFS sú približne ekvivalentné vytváraniu nového adresára v niektorých bežných súborových systémoch.

root_podpora

Ďalšie vlastnosti

K ďalším zaujímavým vlastnostiam súborového systému ZFS partia:

  • Komprimácia súborového systému (partície) v reálnom čase na úrovni jadra operačného systému.
  • Šifrovanie súborového systému (partície) v reálnom čase na úrovni jadra operačného systému.
  • Možnosť uvoľňovania a pridávania fyzických diskov za behu.
  • Proklamované optimálne rozloženie logických blokov v rámci fyzických zariadení eliminuje potrebu defragmentácie.
  • ZFS používa variabilné veľkosti blokov až do veľkosti 128 kilobajtov.
  • Viacero nezávislých tokov predvýberu (prefetch streams) s automatickou detekciou dĺžky.
  • Paralelne realizované adresárové operácie.
  • Rovnomerné rozloženie záťaže a kapacity medzi fyzickými zariadeniami.
  • Ditto bloky – Metadáta sú replikované na viacerých miestach (ak je to možné tak na viacerých fyzických zariadeniach), takže v prípade poruchy fyzického sektora, ktorý nie je chránený redundanciou, dôjde síce k strate dát, ale metadáta môžu byť stále zachránené.
  • Príkaz uvolnenia vyrovnávacej pamäte (cache flush) vyprázdni všetky vyrovnávacie pamäte a uvedie súborový systém do konzistentného stavu, v ktorom je bezproblémovo pripravený napríklad na vypnutie systému.

Zdroje

Matúš Kováčik, Štúdia pokročilých vlastností operačného systému Solaris – Diplomová práca, Bratislava: FIIT STU, 2007
Dsl.sk, Revolučný filesystém ZFS štandardným v Mac OS X 10.5
ZFS, Wikipedia, the free encyclopedia

Byl pro vás článek přínosný?

Autor článku