Hlavní navigace

ZFS je v Linuxu k dispozici díky FUSE

20. 6. 2007
Doba čtení: 4 minuty

Sdílet

O souborovém systému ZFS, který vyšel z dílen společnosti Sun, se v poslední době hovoří velmi intenzivně po celém světě. ZFS znamená poměrně zásadní průlom v souborových systémech a nabízí řadu jinde nevídaných funkcí. Není tedy divu, že jej chceme mít i v Linuxu. Už nyní je to možné díky projektu FUSE.

Proč chtít ZFS?

ZFS je souborový systém zcela nové generace, který integruje nejdůležitější funkce do jednoho transparentního rozhraní. Tím naprosto zásadně zjednodušuje administraci diskových polí a souborových systémů.

Zatímco běžně potřebujeme v Linuxu spravovat RAID, na něm provozovat logical-volume-management a nad ním teprve provozovat souborový systém, ZFS zvládne všechno najednou a ještě nás zbaví veškeré náročné konfigurace. O ZFS jsme se zmiňovali v samostatném článku.

Autorem ZFS je společnost Sun Microsystems, která jej vyvinula pro vlastní operační systém OpenSolaris. V současné době se už ale přebírají i další operační systémy jako FreeBSD nebo Mac OS X. Samozřejmě bychom rádi viděli ZFS i v Linuxu.

Problémy s licencí

S portací na Linux to ovšem nebude tak snadné. V současné době je totiž problém v nekompatibilitě licencí obou systémů. Není tedy možno jednoduše vzít kód Solarisu a přenést jej do Linuxu.

Linus Torvalds ovšem přiznal, že pokud Sun změní licenci Solarisu na GNU GPL 3, pak je to dostatečný důvod k přechodu i pro Linux. Vyřešily by se tím právě problémy s kompatibilitou licencí jednotlivých částí systému, mezi jinými i právě ovladače ZFS.

Zatím ovšem k ničemu podobnému nedošlo a ačkoliv jsou naděje poměrně slušné, musíme si najít jinou cestu. Jedním z řešení je samozřejmě zcela nová implementace napsaná na „čisté louce”.

Lékem je FUSE

FUSE je zkratka pro Filesystem in User SpacE. Jedná se o modul do jádra operačního systému, který vytváří rozhraní pro tvorbu dalšího kódu, který zpracovává samotný souborový systém. Výhoda tohoto kódu je pak v tom, že nemusí běžet v jádře, ale stačí mu klasický uživatelský prostor.

FUSE je dnes již součástí hlavního linuxového stromu, a tak jej můžete najít rovnou v nových jádrech. Dnes se využívá především pro různé virtuální souborové systémy, kdy je možno například dálkově přistupovat do Wikipedie tak, že se jednotlivé články tváří jako reálné soubory na vašem disku. Všechny změny se pak opět zapisují po síti do Wiki.

Toto pochopitelně není jediné možné využití FUSE a už teď jsou k dispozici implementace reálných souborových systémů jako Ext2FS nebo NTFS. Nespornou výhodou FUSE je i jeho multiplatformnost. Kromě Linuxu jej tak nalezneme na FreeBSD, OpenSolarisu, Mac OS X a za pomoci rozšiřující vrstvy také na NetBSD.

FUSE + ZFS = ZFS na Linuxu

Protože je ZFS velmi žádaným artiklem, odpověď na sebe samozřejmě nedala dlouho čekat a v rámci Google Summer of Code 2006 byla vyvinuta nová implementace ZFS právě pro FUSE. Za její vývoj je zodpovědný Ricardo Manuel da Silva Correia a projekt je napsán v jazyku C.

V současné době je možno vývoj označit za pokročilý, rozhodně ale ne za dokončený. Už ale existují uživatelé, kteří linuxový ZFS intenzivně testují a reálně používají. Stále jsou tu však některé nedodělky.

Correia dává v této fázi přednost funkčnosti a zatím se neohlíží na výkon. Je to samozřejmě zcela logický postup – nejdříve to bude fungovat, pak to zrychlíme. Přestože sám autor žádné testy neprováděl, našli se jiní.

Chris Samuel provedl vlastní sadu testů a zjistil, že ZFS podává zhruba poloviční výkon proti jaderné implementaci XFS. To sice není nijak oslňující, ale na „neoptimalizovaný” kód je to velmi působivé.

Navíc například už zmiňovaná implementace NTFS-3g, která používá také FUSE, se výkonnostně chová v podstatě stejně jako nativní NTFS. Prostor pro zlepšení tu tedy zcela jistě je a FUSE by na výkon neměl mít žádný negativní dopad.

Dalším aktuálním nepříjemným problémem je velká konzumace paměti. ZFS pod FUSE dokáže při větší zátěži alokovat až 500 MB systémové paměti. Correia o tomto problému dobře ví a snaží se najít optimální východisko. Řešením by mohl být tcmalloc, což je velmi rychlý alokátor paměti vyvinutý vývojáři od Google.

Co už umí

ZFS na FUSE je plnohodnotnou implementací POSIXového souborového systému. Chris Samuel, který prováděl výkonnostní testy, jej například používá pro zálohování svého domovského adresáře. Využívá při tom především možnosti snapshotů, kdy je možno udržovat více verzí struktury jen s minimální spotřebou diskového prostoru (rozdílové ukládání).

Možná vás napadne jedno omezení, které plyne z použití FUSE – z takto implementovaného ZFS nebude možno bootovat. Je to samozřejmě logická úvaha, ovšem v praxi je dokázáno, že to možné je!

V konferenci zfs-fuse se objevil příspěvek, ve kterém Cameron Patrick popisuje postup a uvádí, že se mu ze ZFS podařilo úspěšně nastartovat systém.

V principu jde o to vytvořit inicializační ramdisk (initramfs), ve kterém bude k dispozici jak FUSE, tak i samotný ovladač pro ZFS. Kromě toho bylo ještě potřeba upravit ZFS tak, aby dokázal pracovat s dev a suid soubory. Samozřejmě běh systému ze ZFS není bez problémů, je ovšem zřejmé, že v budoucnu bude možno systém přímo na tomto souborovém systému provozovat.

root_podpora

Co nás čeká?

Vývoj jde kupředu poměrně rychle a jakmile budou doimplementovány některé chybějící funkce, vyladěn výkon a vychytány některé chybky, bude možno ZFS pořádně otestovat a konečně nasadit na linuxové počítače.

Jsem si jist, že pokud se vše podaří, distributoři promptně zareagují a nabídnou nám funkce ZFS už v základní instalaci svých systémů. Já se rozhodně těším. Co vy?

Odkazy

Kdy nainstalujete ZFS?

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

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.