Hlavní navigace

AdvFS je otevřený, ale do Linuxu se zřejmě nedostane

30. 6. 2008
Doba čtení: 8 minut

Sdílet

Zpráva o uvolněním advFS firmou HP pod licencí GNU GPLv2 proletěla pomalu každým linuxovým portálem. Od HP to je rozhodně velmi vstřícný krok a snad by to mohlo vést i k alternativě k ZFS, které ne a ne být GNU GPL kompatibilní. Pojďme se kouknout na to, co advFS umí a jakou má konkurenci na Linuxu.

Historie

AdvFS se dříve označovalo jako Tru64 Advance Filesystem a byl to souborový systém pro operační systém Tru64. Ten je určený pro architekturu Alpha. Tru64 byl vyvíjen firmou Digital Equipment Corporation. Poté tuto firmu koupil Compaq (1998). V roce 2002 koupilo Compaq HP. To využilo zdrojové kódy Tru64 k vylepšení vlastního operačního systému UNIXového typu, a tím byl HP-UX. Jednou z mnoha převzatých věcí byl i souborový systém advFS. Ovšem dva roky po získání Tru64 se HP rozhodlo používat v HP-UX jiný souborový systém. V roce 2007 HP oznámilo, že bude Tru64 podporovat do roku 2012.

Samotný souborový systém byl vyvíjen v první polovině devadesátých let. Od začátku byl advFS zaměřen na velké servery a jeho vlastnosti nemá většina souborových systémů dodnes. Dalo by se říci, že ve své době to byl nejpokročilejší souborový systém, jaký se dal použít. HP si ho vybralo díky jeho vlastnostem, které jiné souborové systémy dlouho doháněly. Bohužel HP se na vývoj advFS už nesoustředí, ale otevření zdrojových kódů je rozhodně od HP vstřícný krok.

Považujete uvolnění advFS za dobrý krok?

Vlastnosti advFS

AdvFS je jedním z nejvybavenějších souborových systémů, jaké se dají v UNIX světě najít. I když je přibližně 15 let starý, obsahuje vlastnosti, které mu ostatní souborové systémy mohou jen závidět. Jediným přímým konkurentem je ZFS. Na Linuxu se pak najde konkurence ve formě LVM2 v kombinaci s jiným souborovým systémem. Není divu, že si ho HP vybralo pro stroje, které mají hotswap i procesory a paměti. Vlastnosti advFS bych shrnul do několika bodů:

  • Žurnálování
  • Dynamická struktura
  • Snapshoty
  • Defragmentace
  • Obnovení smazaných souborů

Žurnálování

Žurnálování má dneska každý běžně používaný souborový systém. Jedná se o velmi účinnou ochranu dat na disku. Účinnost jde bohužel ruku v ruce s nároky na zápis na disk. Žurnálování je postup zápisu na disk, díky kterému máme v bezpečí data při problémech s nestabilními programy nebo při hardwarových problémech (například výpadek proudu nebo nestabilní komponenta).

Princip je docela jednoduchý. Zápis na disk se skládá z několika kroků, které je potřeba vykonat při každé změně souboru. Pokud dojde při vykonávání těchto kroků k nějakému již zmíněnému problému, vznikne nekonzistence. Ta se poté dá řešit nástroji na opravu souborového systému (např. scandisk pro fat32). Tento postup je však dlouhý.

Mnohem lepší je vést si takzvaný žurnál a před každou velkou operací, která změní data na disku, si do žurnálu zapíšeme, co budeme měnit. Díky tomu jsme poté schopni, při přerušení operace, navrátit stav, ve kterém byl disk před výpadkem. Žurnálovat můžeme buď pouze metadata (informace o datech jako například kde leží jaký soubor) nebo rovnou všechny operace. Pokud žurnálujeme pouze metadata, ochrana před výpadky je slabší, ale na druhou stranu se zvedne teoretický výkon souborového systému.

Dynamická struktura

Dynamická struktura je nejlepší část advFS. Na Linuxu je zastoupena prakticky pouze přes LVM. Zjednodušeně se jedná o vrstvu, která překryje fyzické disky a udělá z nich jeden velký, celé se to nazývá file domain (FD). Ta se pak dá použít pro práci s oddíly, kterým říkáme file sets (FS). FD není prakticky omezena počty disků, a tak je možné kapacitu navyšovat až do maximálních 16 TiB. AdvFS reaguje velmi pružně na změny ve FD. Pokud například plánujeme odpojit nebo přidat disk. Můžeme data „přelévat“ z jednoho disku na druhý. Práce s FD má i další možnosti. Jako třeba vytvářet RAID pole 0 (stripping) a 1 (mirroring).

FS je oddíl, který se dá vytvořit uvnitř FD a dají se mu přiřadit už zmíněné vlastnosti jako RAID 1 a 0. O RAID se stará advFS sám a sám si rozdělí data na discích, jak potřebuje. Rozdíl oproti LVM v Linuxu je ten, že na oddílech nemusíme vytvářet souborový systém. Tím se práce s oddíly velmi zjednodušuje. V Linuxu je problém najít souborový systém, který by šel bez problémů zvětšit či zmenšit. Také je tuto změnu potřeba udělat dvakrát. Nejdřív zvětšit oddíl v LVM (případně zmenšit souborový systém) a poté zvětšit souborový systém (případně zmenšit oddíl v LVM). AdvFS v tomto směru nabízí velké pohodlí, a proto se mu dostává kladných ohlasů od jeho uživatelů.

Dynamické vlastnosti se velmi hodí u serverů, kde není předem známo, kolik bude která část systému zabírat. Například začne projekt jednoho uživatele růst a zabírat spousty místa. Tato situace se dá řešit upravením quot a nebo jednoduše přidáním prostoru do patřičného FS. Jednotliví uživatelé mají tak vlastní FS ve FD, a pokud jeden uživatel potřebuje místo navíc, přidělí se. Je to velmi pohodlné a advFS tohle všechno dovoluje, aniž by se muselo dané FS odmountovat. AdvFS tedy umí operace s FS a FD za běhu.

Snapshoty

Snapshot oddílu znamená, že se vytvoří oddíl na oko se stejným obsahem jako oddíl, ze kterého snapshot vytváříme. Takovýto oddíl se pak chová tak, že když chceme něco zapsat do původního oddílu, tak se nejprve nakopíruje původní verze souboru do snapshotu a teprve potom se zapíše nová změna (copy-on-write). Soubory, které nebyly změněny, jsou jen interně nalinkované na původní oddíl. Snapshot je jedna z nejdůležitějších vlastností pro zálohování běžícího systému. Kdo zkoušel „rsyncovat“ root běžícího systému, dá mi za pravdu. Snapshoty ovšem nejsou určeny jen pro zálohování. Využití najdou například pro testování nového nastavení nebo upgradů. Fantazii se meze nekladou, ale je třeba dávat pozor na to, že s každým novým snapshotem klesá výkon (musejí se nakopírovávat změny do každého snapshotu zvlášť).

Defragmentace

K fragmentaci dochází zaplňování mezer mezi soubory při kopírování/vyt­váření nových souborů. K ještě větší fragmentaci dochází při změně souboru (například logy, které rostou s událostmi v systému, u těch jádro systému neví, jak nakonec bude logovací soubor veliký). Pohyb souborů na disku vytváří zmíněné mezery, a ty se nakonec musí nějak využít. Defragmentace je něco, s čím linuxové souborové systémy nejsou moc kamarádi. Různé FAQ povalující se po internetu hlásají, že reiserfs nebo ext3 nepotřebují defragmentaci nebo se defragmentují sama. To ovšem není tak úplně pravda. K fragmentaci na disku dochází a čím víc je z disku zaplněno, tím je fragmentace větší. AdvFS nástroj pro defragmentaci má, a tak tedy tento problém lze řešit, a to samozřejmě za běhu systému.

Porovnání se ZFS

ZFS není v pravém slova smyslu konkurenci pro advFS, protože běží na odlišných systémech. Pokud ale porovnáme papírové vlastnosti dostane se nám zajímavých výsledků. Největším rozdílem je začátek vývoje obou souborových systémů. Zatímco advFS se dostalo na světlo světa v polovině devadesátých let, ZFS jsme poprvé spatřili v roce 2004. ZFS díky tomu mohlo mnohem lépe zajistit potřeby dnešní doby a naše pohledy budou směřovat také spíše k němu než k advFS. Od advFS ale nemůžeme odvracet zrak. I dnes by většině instalací serverů stačil a hodně administrátorů by jeho vlastnosti ani nevyužilo.

Největší rozdíl je vidět na maximální velikosti FD (ZFS označované jako zpools). U ZFS to dělá 16 EiB a u advFS zmíněných 16 TiB. Není tajemstvím, že ZFS boří limity právě v podobných parametrech.

S příchodem moderních technologií do obyčejného života se lidé začali bát o svá data. Pro firemní sféru je to ještě důležitější, a tak ZFS (i když pouze v experimentálně) podporuje šifrování.

ZFS má také navíc vlastnost dynamic stripping. Nemusí se tak vůbec vytvářet RAID 0 jako v advFS, a o všechno se ZFS postará automaticky. Pokud přidáme další disk do zpools, ZFS začne rozdělovat soubory mezi jednotlivé fyzické disky.

ZFS má oproti advFS spousty dalších detailů, které by nepopsal snad ani další článek. Proto ještě uvedu pár vlastností ZFS ve zkratce. Je to například velmi rychlá správa zpools, kdy se čas pro vytvoření oddílu nebo změna jeho velikosti rovná času vytvoření adresáře. ZFS je připraveno na přechod mezi různými operačními systémy a dokonce i architekturami procesorů.

Abychom nezůstali jenom u toho, co umí ZFS oproti advFS, je tu i pár detailů, které má advFS navíc. Jedním z nejdůležitějších je, že ZFS neumožňuje odstranění fyzického disku ze zpools. Na tomto problému Sun usilovně pracuje a v budoucnu se tedy dočkáme nápravy. AdvFS také umí práci s FS a FD za běhu systému. Tedy i s namountovaným oddílem. ZFS musí všechny změny na oddílech dělat ve stavu odpojení.

LVM2

Dynamickou změnu oddílů na Linuxu lze řešit přes LVM2. To v tomto směru má prakticky shodné vlastnosti jako advFS a přidává výhodu použití různých souborových systémů na oddílech podle použití. Vlastnosti LVM2 bych shrnul do následujících bodů:

CS24_early

  • Snapshoty
  • Dynamická změna velikostí oddílů
  • Přidávání fyzických disků za chodu
  • Změny lze provádět na namountovaných oddílech (záleží na souborovém systému)
  • RAID 0 a 1
  • Vysoký výkon

Snapshoty první verze LVM byly pouze read-only, ale s příchodem jádra 2.6 a LVM2 se i tento nedostatek odstranil. Změny na oddílech jdou dělat na běžícím systému, ale většina linuxových souborových systémů na to není stavěná. Do skupin fyzických disků (volume group) lze přidávat nové disky a tím zvětšovat celkovou kapacitu. Bez problémů lze obsah disku přenést na jiný na běžícím systému. LVM2 podporuje zrcadlení (RAID 1) i stripping (RAID 0). LVM2 je velmi rychlé a na dnešních procesorech se jeho přítomnost vůbec nepozná. Za to přinese výhody, o kterých se dá (zejména u serverů) vážně přemýšlet. Je to ovšem jiná liga než advFS. Není to skutečný souborový systém, ale jen nástroj pro správu oddílů, a tím pádem pokrývá jen jednu vlastnost advFS.

Závěr

Bohužel se advFS na Linux pravděpodobně nedostane. AdvFS je napsán pro HP-UX a Tru64 a jejich jádro se liší od linuxového. To znamená, že tento rozdíl by musel někdo doprogramovat. AdvFS otevírá ovšem vrátka k novému kódu, který je vyvíjen pro segment, kde Linux není nejsilnější a v budoucnu se můžeme dočkat vylepšení stávajících souborových systémů nebo i příchodu nového souborového systému s podobnými vlastnostmi. Do té doby můžeme doufat, že SUN vydá ZFS pod GNU GPL též, aby se mohlo ZFS dostat přímo do jádra.

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

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.