Hlavní navigace

XFS a JFS: Odstrčené souborové systémy?

Adam Štrauch

XFS a JFS jsou tu s námi již dobrých pár let, a jelikož oba pocházejí od velkých firem, tak se jejich uplatnění najde spíše na serverech. XFS nabízí velké množství vlastností, o kterých se ostatním může jenom zdát. JFS se drží spíše hesla "méně je někdy více". Oba jsou ale zajímavé a hlavně dostupné pod licencí GNU/GPL.

XFS

Historie

XFS je druhým souborovým systém (hned po JFS), který přinesl do linuxového jádra žurnálování. Vyvinula ho firma Silicon Graphics v roce 1993. Poprvé se objevil a systému IRIX 5.3 v roce 1994. Na začátku nebyl vyvíjen pod svobodnou licencí, té se dočkal v květnu roku 2000, a rok poté se objevil v Linuxu (jádro 2.4 i 2.6). Dnes je XFS obsaženo ve většině linuxových distribucí. FreeBSD podporuje XFS pro čtení od prosince roku 2005, od června i experimentální podporu pro zápis. Ovšem nedoporučuje se používat na FreeBSD jako primární souborový systém.

Vlastnosti

XFS přináší do světa Linuxu opravdu zajímavou dávku vlastností, ale také má několik nedostatků. To je například fakt, že se nedá zmenšit, pouze zvětšit (online), je pomalý při práci s metadaty (mazání, vytváření souborů a adresářů), občas v něm po výpadku zůstanou prázdné soubory, občasné zamrzání systému za určitých podmínek (velké množství I/O operací a jádro s volbou CONFIG_4KSTACKS) při používání LVM.

XFS je 64 bitový souborový systém a na jádře 2.6 může mít velikost bez jednoho bytu 8 EB. Na 32-bit Linuxu je tento limit snížen na 16 TB. Jedná se o serverový souborový systém, takže podpora sdílení dat přes NFS je samozřejmostí. Stejně tak nechybí ani kvóty nebo nastavení POSIX práv na soubory a adresáře.

Žurnálování

O žurnálování jsem toho napsal mnoho v minulých článcích a XFS nějak nevybočuje z řady. Stejně jako reiserfs a ext3/4 žurnáluje pouze metadata. Bohužel na tom při výpadcích není tak dobře jako zmíněné tři souborové systémy, protože se mu občas stává, že po neočekávaném vypnutí stroje, například způsobeným výpadkem proudu, se ze souborů v tu dobu otevřených pro psaní stanou prázdné soubory. Proto se ve spojení s XFS doporučuje používat RAID pole a UPS.

Allocation groups

Tato vlastnost vylepšuje výkon při paralelním přístupu k datům. Projeví se ještě víc při použití více jak jednoho fyzického zařízení v kombinaci s větším počtem procesorových jader v jednom systému. Princip je takový, že celý oddíl je interně „rozkouskovaný“ do tzv. allocation groups (AG). Poté se každý AG stará o vlastní inody a o vlastní volný prostor nezávisle na ostatních AG.

Striped allocation

Pokud se XFS vytvoří na poli jako je RAID 0, tak se sám stará o rovnoměrné rozprostření inodů, žurnálu i samotných dat na všechna zařízení v tomto poli.

Extent based allocation

XFS podporuje tzv. extenty. Ty slouží ke spojování velkého množství souvislých bloků pod jeden ukazatel. To vylepšuje výkon, ale zároveň snižuje míru fragmentace. Extenty se alokují větší, než jsou zprvu potřeba, a pokud se do souboru bude později znovu zapisovat, je pravděpodobné, že zápis začne tam, kde skončil ten minulý.

Delayed allocation

Stejně jako relativně nový souborový systém ext4, XFS podporuje „zpožděnou alokaci“. Při využití této vlastnosti se souborový systém snaží fyzický zápis co nejvíce oddálit a ukládá data do bufferu. Pokud se soubor uzavře nebo dojde prostor v bufferu, data se zapíší na disk do bloků jdoucích za sebou. Tím se snižuje fragmentace.

Řídké soubory

Některá řešení (často databázové servery) potřebují vytvořit velký soubor, ale ještě nemají data, kterým by ho zaplnila. Řídké soubory (Sparse files) slouží právě pro tyto účely. Soubor se sice vytvoří velký, ale není fyzicky alokovaný a „díry“, které v něm jsou, nezabírají zbytečně místo na disku.

Extended attributes

XFS podporuje také tzv. Extended attributes. Ty umožňují ke každému inodu (soubory, adresáře, symlinky, device nody, …) uložit velké množství informací formou „klíč=hodnota“ rozdělených do dvou namespace root (může editovat pouze root) a user (mohou editovat uživatelé i root). Každá hodnota může obsahovat až 64kB binárních dat a klíč 256 znaků.

Direct I/O

Pro aplikace, které vyžadují vysokou propustnost dat, obsahuje XFS funkce, které umožňují přímý přístup k I/O operacím, kde se nebude využívat cache. Aplikace je tak napojena přímo na disk používající DMA, což dává aplikaci přístup k plné šířce pásma.

Garantovaná šířka pásma

XFS API dává možnost, aby si aplikace vyhradila pro sebe šířku pásma. To se hodí například u streamování videa, kdy by například zálohování mohlo způsobit „záškuby“, kterých by si všimli lidé sledující konkrétní stream. Tato vlastnost je z pohledu linuxových souborových systémů u XFS vcelku unikátní.

Online defragmentace

I když XFS používá pokročilé techniky pro zabránění fragmentace, pravda je taková, že k fragmentaci bude docházet. XFS nabízí možnost za běhu defragmentovat celý souborový systém pomocí nástroje xfs_fsr.

Zálohování

Běžné zálohování pomocí rsync a cp se bohužel neobejde bez použití tzv. snapshotů. Jedná se o zpřístupnění „zmraženého“ stavu nějakého souborového systému tak, aby se s ním dalo normálně pracovat, ale zároveň aby nabízel právě ten jeden stav, který vznikl při vytváření snapshotu. Ten se pak zazálohuje a zničí. XFS na to jde jinak a používá dva nástroje xfsdump a xfsrestore. Ty zkopírují stav souborového systému do jednoho souboru v pořadí, v jakém jsou na disku uloženy jednotlivé inody. Spolehlivě se tak zazálohují i atributy všech inodů.

JFS

Historie

JFS začalo vyvíjet IBM v roce 1990 pro operační systém AIX a byl úzce spjat s jeho memory managementem. Dnes je tento souborový systém znám jako JFS1. V roce 1995 začaly práce na vylepšování celého JFS. Cílem bylo udělat ho více přístupný pro ostatní operační systémy. Po letech vývoje se JFS dostalo do operačního systému OS/2 Warp Server a později i OS/2 Warp Client. V prosinci roku 1999 se zdrojové kódy předaly open source komunitě a začalo se pracovat na portování JFS na Linux. JFS byl tedy první linuxový souborový systém, který podporoval žurnálování. První stabilní vydání se v Linuxu objevilo o rok a kousek později v červnu. Původní JFS se zatím vyvíjelo dále a součástí AIX je teď JFS2.

Vlastnosti

JFS obsahuje také pár zajímavých vlastností. Samozřejmě nesmíme opomenout žurnál, který jsem popisoval v mnoha předchozích případech. S XFS má také společné AG a extenty.

B+ Tree

B+ Tree je používán pro ukládání inodů. Vyhledávání ve velké adresářové struktuře je díky němu mnohem rychlejší. Podobného algoritmu využívá i reiserfs a reiser4. Podrobnější popis fungování tohoto stromu naleznete v jednom z minulých článků.

Compression

Komprese v JFS je dostupná pouze v první verzi a využívá variaci na LZ algoritmus. Komprese je velmi náročná na CPU a doporučuje se používat pouze tam kde je potřeba (dokumenty, logy, jiné textové soubory, …) a kde je dostatečná rezerva ve výkonu.

Concurrent Input / Output (CIO)

JFS běžně používá tzv. read-shared a write-exclusive. To znamená, že číst může ze souboru více procesů, ale zapisovat pouze jeden. To vede ke zvýšení režie hlavně u databází. Proto si databáze mohou tento mechanismus vypnout, protože si udržují data v souborech v konzistentním stavu samy.

JFS Superblocks

„Superbloky“ udržují informace o celém souborovém systému. Jsou to například velikost souborového systému, počet bloků, flagy se stavem, velikost AG, velikost bloků.

Závěr

XFS má z principu větší režii kolem metadat, protože jeho struktura je složitější než u jiných souborových systémů. Na druhou stranu mu tato složitost zvětšuje výkon u paralelních operací nad souborovým systémem (více aplikací čte různá data). Na domácí použití bych ho nedoporučil, protože tam se většinu času pracuje primárně s jedním nebo malým počtem souborů (přehrávání multimédií, psaní dokumentu, …) a jeho potenciál se nevyužije. Na servery to je ale jedna z nejlepších možností.

JFS je podobný případ jako XFS, hodí se také pro servery a pro domácí použití je slabší. Jeho výkon je o něco vyšší, ale zase postrádá množství vlastností XFS. Na poli serverů si tyto souborové systémy budou konkurovat a administrátor by se měl rozhodovat podle vlastností, které potřebuje, případně podle výkonu pro konkrétní činnost.

A abych nakonec odpověděl na otázku z titulku. Ne, XFS ani JFS nejsou odstrčené souborové systémy. Nejsou jen na očích uživatelů běžných distribucí a používají se většinou pouze na serverech, takže o nich není běžně slyšet.

Našli jste v článku chybu?