Souborový systém a organizace dat
Souborový systém nebo také filesystem je v informatice označení pro způsob (systém) organizace dat ve formě souborů tak, aby bylo možné k těmto datům snadno přistupovat. Souborové systémy jsou vlastně takové sklady pro data, které jsou uloženy na vhodném typu elektronické paměti. Tyto paměti mohou být v podobě pevného disku, SSD disku uloženy přímo v počítači, přenosné v podobě paměťových karet a flashdisku nebo dostupné pomocí počítačové sítě.
Souborový systém zajišťuje ukládání a čtení dat, která mohou být hierarchicky ukládána v podobě adresářů a souborů, které jsou určeny svým jménem. Z toho vyplývá, že dva soubory nebo podadresáře umístěné ve stejném adresáři nesmí mít stejné jméno.
Pro úplné zjednodušení pochopení funkce souborového systému si představte sklad s regály, které jsou značeny nezaměnitelným znakem a v každém jsou další police, které mají také své nezaměnitelné značení. Pokud tedy potřebujete vyzvednout z police uložený dokument, stačí vědět, že je uložen v regálu 3., police 6., krabice 328. a jmenuje se dokument XY. Takto uložené dokumenty jsou pak lehce k nalezení a úplně stejným způsobem pracují souborové systémy.
Pevné disky jsou obvykle děleny na oddíly a souborový systém se rozkládá jen na daném oddílu. Je tak možné mít na jednom pevném disku několik oddílů s jiným souborovým systémem. S tímto přijdete nejčastěji do styku v případě, že máte na PC dva operační systémy (nejčastěji MS Windows a Linux). Jednoúčelová zařízení, jako jsou MP3 přehrávače nebo paměťová media fotoaparátů mohou podporovat pouze omezenou podmnožinu funkcí souborového systému. Jednoduše řečeno, podporují pouze sklad a regály.
Informace uložené v systému souborů dělíme na metadata a data. Metadata popisují strukturu systému souborů a nesou další služební a doplňující informace, jako je velikost souboru, čas poslední změny souboru, čas posledního přístupu k souboru, vlastník souboru, oprávnění v systému souborů, seznam bloků dat, které tvoří vlastní soubor atd. Pojmem data pak míníme vlastní obsah souboru, který můžeme přečíst, když soubor otevřeme.
Rozdělení disku na několik oddílů s různými souborovými systémy.
Přehled souborových systémů
Software, který realizuje souborový systém, bývá obvykle součástí operačního systému. Většina operačních systémů podporuje několik různých souborových systémů. V Microsoft Windows nalezneme podporu pro souborové systémy FAT a NTFS a dále ISO 9660 pro ukládání souborů na CD a DVD. V Linuxu nalezneme kromě již zmíněných také ext2, ext3, ext4, Btrfs, ReiserFS, JFS, XFS a mnoho dalších.
My se dnes společně podíváme blíže na systémy, které v linuxových distribucích potkáte nejčastěji, nebo byly přímo pro Linux vytvořeny:
Souborový systém – ext2
Ext2 (second extended filesystem) je v souborový systém, který byl původně implementován pro jádro Linuxu. Navrhl ho Rémy Card jako nástupce souborového systému ext a do linuxového jádra byl implementován v roce 1993 a je k dispozici jako open-source software. Mezi jeho hlavní charakteristiky patří:
- lze vytvářet adresáře,
- lze vytvářet různé typy souborů: obyčejný soubor, speciální soubor (reprezentuje zařízení, je typu blokový a znakový), pojmenované roury, sockety,
- umožňuje používat pevné odkazy, symbolické odkazy,
- pro každý soubor a adresář se ukládají práva UGO – vlastníka (user), skupiny (group), ostatních (other) a rozšířené atributy.
Na začátku systému souborů je boot sektor, který slouží pro uložení zavaděče operačního systému. Dále je souborový systém rozdělen na skupiny bloků (group blocks), které mají vnitřně stejnou strukturu a skupin je v souborovém systému několik.
Skupiny bloků
Každá skupina bloků obsahuje:
- superblok
- deskriptor skupiny
- bitmapu bloku
- bitmapu inodů
- tabulku inodů
- datové bloky
Ext2 byl velkým pokrokem oproti předchůdcům, ale stále trpěl mnoha neduhy, a poskytoval tak mnoho prostoru pro další zlepšení. Ext2 neuměl žurnálování a to začal podporovat teprve jeho nástupce ext3.
Žurnálovací souborový systém Linuxu – ext3
Ext3 (third extended filesystem) je žurnálovací systém souborů a je přímým a zpětně kompatibilním následníkem souborového systému ext2. Ext3 je výchozím souborovým systémem mnoha linuxových distribucí.
Abychom mohli lépe pochopit rozdíl mezi žurnálovacím systémem a systémem ext2 je nutné si říci, co to vlastně žurnálování je.
Souborové systémy jsou velmi komplexními datovými strukturami. Při změně v souborech nebo adresářích je nutné vykonat řadu jednotlivých operací, což může vést k problému se souběhem. Sérii jednotlivých operací, které je potřeba provést, nazýváme transakce.
Při přerušení transakce může dojít k tomu, že data na disku ztratí integritu (jsou narušeny vazby, které data spojují ve smysluplný celek). Uvedení dat do opětovné integrity znamená naplánovanou transakci dokončit, nebo se vrátit k původnímu stavu před započetím transakce. Žurnálování umožňuje velmi rychle a bezpečně uvést souborový systém do konzistentního stavu.
Souborový systém ext3 nabízí oproti svému předchůdci ext2 ještě další výhody:
- indexy souborů v adresáři implementované stromy (do té doby se používal pouze lineární seznam),
- možnost změnit velikost souborového systému za běhu (od listopadu 2004).
Nicméně stejně jako po nástupu ext2, tak i ext3 nezůstal posledním systémem. Pokrok dále pokračoval a od října 2006 začal vývoj ext4.
Ext4 – to nejlepší co Linux dal (zatím)
Ext4 (fourth extended filesystem) je opět žurnálovací souborový systém vyvinutý pro linuxové jádro, jehož vývoj začal 10. října 2006 jako zpětně kompatibilní nástupce ext3 se všemi jeho výhodami. Do jádra byl začleněn nejprve jako vývojový a dne 11. prosince 2008 byl v jádře verze 2.6.28 označen za stabilní a vhodný k běžnému užívání.
Ext4 přinesl mnoho novinek typických pro moderní souborové systémy, může podporovat svazky až o velikosti 1 EiB a soubory s maximální velikostí 16 TiB, podporuje extenty a odstraňuje limit původního systému ext3, jenž mohl obsahovat v adresáři maximálně 32 768 podadresářů. Tento limit byl v ext4 navýšen na 64 000 a pomocí rozšíření dir_nlink může tuto hranici dále prolomit (ačkoliv to zastaví zvyšování počtu odkazů z rodiče). Tato vlastnost je implementována do jádra Linuxu od verze 2.6.23. S původním ext3 je kompatibilní zpětně i dopředně (pod typem ext4 je možné namountovat ext3, a naopak pod typem ext3 lze připojit ext4 svazek, pokud nepoužívá extenty).
Mezi další vlastnosti patří podpora nanosekundových časových razítek a pre-alokace i zpožděná alokace místa pro soubory. Ovladač ext4 obsahuje (stejně jako předchozí verze souborového systému) nástroje, které omezují fragmentaci již při ukládání dat na disk. Nově však ext4 umožňuje nasazení online defragmentátoru na úrovni souborů nebo celého souborového systému. Díky označování nepoužitých oblastí disku mohou nástroje pro opravu systému (fsck) pracovat rychleji než na ext3.
Btrfs – nejnovější přírůstek
V roce 2007 začala společnost Oracle vyvíjet nový souborový systém Btrfs (B-tree file system), který měl nahradit ext3. Do dnešní doby je však tento systém stále ve vývoji, a to i přes to, že společně s Oracle k vývoji přistoupili další hráči, jako je Red Hat, Fujitsu, Intel a například SUSE.
Btrfs má přinášet nové pokročilé funkce s důrazem na odolnost proti chybám, snadnou správu a opravy. Podrobněji se tomuto souborového systému bude věnovat samostatný článek.
Dnes už se o tomto systému mluví jako o výchozím souborovém systému pro následující vydání OpenSUSE 13.1, jestli to tak opravdu bude, si musíme ještě nějaký čas počkat.