Linux E X P R E S

Facebook
 

Souborové systémy v Linuxu

tux.jpg

Každý již jistě slyšel o souborových systémech. Většina z Vás ví, že je to systém, do kterého se ukládají data na pevném disku. Ale jak to všechno přesně funguje, že tam někde nějaké data jsou a nevypadnou, to už každému tak jasné není. Připravil jsem si proto pro Vás přehled nejzákladnějších udajů a principů nejpoužívanějších souborových systémů v Linuxu.


1. Úvod do souborových systémů

1.1. Co je to souborový systém

Dříve než se začneme podrobně zabývat Linuxovými souborovými systémy, bude dobré seznámit se s tím, co to souborový systém vlastně je.

Souborový systém (anglicky filesystem) je v informatice označení pro způsob organizace dat ve formě souborů (a většinou i adresářů) tak, aby k nim bylo možné snadno přistupovat. Souborové systémy jsou uloženy na vhodném typu elektronické paměti, která je umístěna přímo v počítači (pevný disk nebo CD/DVD) nebo může být zpřístupněna pomocí počítačové sítě (NFS, SMB, AppleTalk…)

1.2. Účel souborového systému

Údaje v elektronické paměti jsou přístupné v podstatě jako vektor dvojkových čísel. Přitom různé oblasti tohoto vektoru mohou být v závislosti na typu a okamžitém stavu paměti různě rychle dostupné. Například harddisk nebo CD/DVD-mechanika potřebuje určitý čas na přesun hlavičky na jinou stopu a než se pod hlavičku dostane oblast s požadovanými daty.

Souborový systém zajišťuje ukládání a čtení dat paměťového média tak, aby s nimi uživatelé mohli pracovat ve formě souborů a adresářů. Základní ideou souborového systému je tedy zpřístupnění a ukládání dat pomocí hierarchicky organizovaného systému adresářů a souborů. Představme si rozsáhlou knihovnu dokumentů, kde bychom mohli popsat přístup ke konkrétnímu dokumentu například následovně: "budova C/2. patro/místnost č. 12/regál 3/šuplík D2/Šanon Akta-X/Dokument Vetřelec". V analogické abstraktní formě zpřístupňuje informace souborový systém, až na to že místo "budovy" nejspíše budeme mít písmeno označující logický disk, místo "patra" adresář 1. hierarchické úrovně, místo "místnosti" podadresář, dále podpodadresář, atp. Jednotlivým dokumentům v šanonech by pak odpovídaly soubory. Základním pravidlem každého souborového systému je, že data musí být jednoznačně určena 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.

Jednoúčelová zařízení jako jsou mp3 přehrávače nebo digitální fotoaparáty mohou podporovat pouze omezenou podmnožinu funkcí souborového systému. Avšak s plnohodnotnými hierarchickými souborovými systémy se setkáváme stále častěji (například v mobilních telefonech).

Souborový systém zaznamenává kromě jména souboru a jeho umístění v hierarchii adresářů další informace sloužící pro správu souborů. Především jsou to časové známky (nejdůležitější je čas poslední změny). Dále může souborový systém vést informace o vlastnících souborů a přístupových právech, což je důležité ve víceuživatelských systémech, nebo při zpřístupňování dat na disku pomocí počítačové sítě.

1.3. Organizace dat na disku

Pevné disky jsou obvykle logicky rozděleny na oddíly (partition), takže souborový systém se rozkládá jen na konkrétním oddílu a ne na celém disku. To umožňuje mít na pevném disku více nezávislých souborových systémů, které mohou být různého typu.

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.

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 ISO 9660 pro ukládání souborů na CD a DVD. V Linuxu nalezneme kromě již zmíněných také ext2, ext3, ext4, ReiserFS, JFS, XFS a mnoho dalších. DOS podporuje systémy FAT, po instalaci CD/DVD driveru také ISO 9660. Solaris podporuje především UFS a ZFS, ale i mnoho dalších.

1.4. Omezení souborových systémů

Různé souborové systémy mohou mít různá omezení, například:

  • velikost paměťového média, kterou je daný systém schopen pokrýt
  • délka souboru
  • délka jména souboru
  • počet zanořených podadresářů
  • podporovaná znaková sada

1.5. Žurnálování v systému souborů

Zápis dat a metadat do systému souborů probíhá v několika krocích. Proto nejsou data a metadata v každém okamžiku konzistentní. Dojde-li v takové chvíli k havárii počítače (např. výpadek elektrického proudu, chyba hardware, software a podobně), zůstane systém souborů v nekonzistentním stavu. Z tohoto důvodu je při dalším startu operačního systému vhodné, aby byla provedena kontrola a nekonzistentní data byla opravena. K tomu může dojít automaticky (např. v Linuxu nebo ve Windows 95 a novějších systémech) nebo je nutné spustit kontrolu ručně (systémy DOS).

Celková kontrola systému souborů a všech vazeb mezi daty a metadaty je časově velmi náročná operace, při které navíc může dojít ke zbytečné ztrátě již částečně zapsaných informací. Proto jsou moderní systémy souborů rozšířeny o žurnálování, které umožňuje po havárii rychlou opravu eventuálních nekonzistencí. Principem techniky je uchovávání chronologického záznamu prováděných operací, do kterého se zapisují všechny prováděné činnosti. Pokud dojde např. k výpadku napájení, je po restartu nekonzistence opravena návratem do předchozího zaznamenaného stavu za pomoci záznamů z žurnálu.

Mezi žurnálovací souborové systémy patří např. NTFS, HFS+, ext3, ext4, XFS nebo ReiserFS.

Více se dovíte v kapitole 3. Žurnálovací systém souborů

1.6. Kvóty

Kvóty (anglicky quota) jsou limity nastavené správcem systému, které určitým způsobem omezují použití souborového systému.

Nejčastěji se kvóty používají na omezení následujících věcí:

velikosti využitého místa (usage nebo block quota)

počtu souborů (file nebo inode quota)

Dále může administrátor systému nastavit varování, tzv. soft quota, které uživatele informuje v případě, že se blíží ke svému limitu (který je pak nazýván hard quota). Často se také nastavuje tzv. grace interval, který v případě potřeby umožňuje krátkodobé mírné překročení kvóty.

1.7. Bootovací sector

Boot sector (někdy zvaný Bootblock) je vyhrazená oblast v pevném disku diskety nebo jiného podobného zařízení, obsahující krátký a pro běžné uživatele nepřístupný program pro zavedení operačního systému. Zpřístupní se pouze po zavedení do počítače jako bootovací mechanismus a provede se reboot.

Na počítačích kompatibilních s IBM vybere BIOS spouštěcí zařízení, poté z něj zkopíruje první sektor (což může být MBR, VBR nebo jakýkoli spustitelný kód) na adresu 0x7C00.

Termín Bootblock je také používaný pro označení zvláštního druhu malých programů, obvykle spouštěných po zapnutí nebo restartu počítače z energeticky nezávislých pamětí jako je Flash ROM. Po skončení restartu se CPU a hardware dostane do přednastaveného stavu a kód se spustí. Zaváděcí program je obvykle úplně první program který CPU provádí.Vzhledem k této skutečnosti, Flash ROM (zejména NOR Flash) má často zvláštní sektory speciálně určené pro uchování tohoto typu programů. Tyto sektory se často nazývají Boot sektory, ale tento pojem spíše označuje určitý druh sektorů, které mají lepší hardwarovou ochranu proti náhodnému smazání a přepsání, aby se zamezilo situacím kdy selže zavádění operačního systému na samém začátku zaváděcí sekvence.

Typický Bootblock uložený v Flash ROM má velikost od 1kB do 512kB a obvykle: provede extra hardwarové inicializace, provede minimální test hardwaru a pak zkontroluje zda je dostupný nějaký propracovanější Bootloader, zavaděč OS nebo jestli nelze spustit jiný program, který spustí další zaváděcí program nebo vstoupí do zvláštního režimu určeného pro pomoc při zotavení systému. Například na PC kompatibilních s IBM s BIOSem Award a biosem AMI mají určenou malou oblast, o velikosti asi 8kB, zvanou Bootblock která se spustí první, zkontroluje zdali je přítomná hlavní část BIOSu a jestli je validní, poté spustí hlavní část BIOSu, nebo přepne do zotavovacího režimu, který obnoví hlavní část BIOSu ze zvláštní diskety (nebo z jiného média).

Pojem Bootblock obvykle znamená to samé co zavaděč. Rozdíl mezi pojmy Bootblock a zavaděčem není definován. Oba termíny popisují stejný typ programů. Obecně platí, že menší a jednodušší programy jsou označovány jako Bootblock, zatímco chytřejším a dokonalejším programům se říká zavaděče. V některých systémech, které používají paměti ROM a stejné programy označují pojmem Boot ROM.

1.7.1. Typy bootovacích sektorů

Na pevných discích kompatibilních s IBM PC, disketách a podobných úložných zařízeních se můžeme setkat s několika hlavními druhy bootsektorů:

Master Boot Record (MBR) je první sektor úložného zařízení, které bylo rozděleno na Diskové oddíly. MBR může obsahovat kód pro nalezení aktivního oddílu a vyvolání jeho VBR.

Volume Boot Record (VBR) je první sektor úložného zařízení, které nebylo rozděleno na diskové oddíly, nebo první sektor jednotlivých diskových oddílů. Obsahuje kód pro nahrání a spuštění operačního systému (nebo jiného samostatného programu) nainstalovaného na tomto zařízení nebo v diskovém oddílu.

Aby byl boot sektor platný, musí být zakončen dvoubajtovým hexadecimálním číslem 0xAA55 (tzv. Boot sektor Signatura). Pokud není nalezeno, BIOS nebo MBR ohlásí chybu a zastaví načítání Operačního systému.

CD-ROMy mají svou vlastní strukturu boot sektoru, u PC kompatibilních s IBM je popsána ve specifikaci El Torito.

PC nekompatibilní s IBM mají na svých discích jiný formát boot sektoru.

Někdy je pojmem boot sektor označen sektor s pamětí NOR Flash ROM, který je určen pro uložení počátečních zaváděcích programů (obvykle bootblock nebo bootloader). Tato paměť je, na rozdíl od běžného uložení na discích, navíc vybavena ochranou proti náhodnému smazání a přepsání dat.

1.7.2. Popis činnosti

Na PC kompatibilních s IBM, BIS nerozlišuje mezi VBR a MBR. Firmware načte a spustí první sektor na úložném zařízení. U disket to je VBR, u pevných disků je to MBR. V MBR je uvedeno rozdělení disku a MBR se postará o načtení a spuštění VBR aktivního oddílu. VBR načte druhořadý bootloader z jiného umístění na disku.

Mimoto v prvním sektoru diskety, USB zařízení, pevného disku nebo jiného zařízení nemusí být uložen program zavádějící operační systém. BIOS pouze zkontroluje, zda to co je tam uloženo je zakončeno signaturou bootrecordu (0xAA55) v posledních dvou bytech. Proto lze nahradit obvyklý zaváděcí program propracovanějším zavaděčem, nebo dokonce multifunkčním správcem zavádění (programy uložené někde jinde na disku, které lze spustit bez operačního systému), umožňujícím uživateli spoustu nastavení. Ale s takovou svobodou je tu také možnost zneužití, spouštění virů.

1.7.3. Boot sektory a počítačový virus

Jednou z možností šíření počítačových virů je, že jsou nahrány do boot sektoru a pokud počítač spustí tento boot sektor, tak ho infikují. Toto bylo časté v době před masovým rozšířením internetu a používáním disket.

1.8. Síťové souborové systémy

Síťové souborové systémy (network filesystem) je označení pro systémy souborů, které jsou dostupné prostřednictvím počítačové sítě. Ve skutečnosti leží soubory a adresáře na jiném počítači a přistupujeme k nim pomocí speciálních síťových volání služeb (např. SMB, NFS, CODA apod.). Na vzdáleném počítači jsou pak soubory a adresáře fyzicky uloženy v podobě klasického systému souborů. Speciálními síťovými systémy souborů jsou distribuované souborové systémy (např. GFS v Linuxu), které se mohou rozkládat na několika počítačích, které jsou navzájem propojeny pomocí počítačové sítě.

1.9. Databázové souborové systémy

V poslední době se začínají objevovat souborové systémy, které se odklánějí od klasické hierarchické struktury souborů a přiklánějí se více k databázovému pojetí reprezentace dat založené na jejich charakteristikách, tj. například na typu souboru, datu vytvoření, autoru a jiných metadat.


2. Souborový systém v Linuxu - ext2

2.1. Úvod ext2

ext2 (anglicky second extended filesystem) je v informatice souborový systém, který byl původně implementován pro jádro Linuxu, avšak je možné ho nalézt i v dalších operačních systémech. Navrhl ho Rémy Card jako nástupce souborového systému ext a je k dispozici jako open source software. Ext2 nepoužívá žurnálování, které podporuje až jeho přímý kompatibilní nástupce ext3.

2.2. Charakteristika

Souborový systém ext2 je přímým nástupcem souborového systému ext. Jejich struktura na disku přímo vychází ze systému souborů UFS, který používaly první unixové systémy. 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

2.3. Teoretické limity ext2 v Linuxu

Tabulka 1. – limity ext2

Velikost bloku:

1 KiB

2 KiB

4 KiB

8 KiB

Max. velikost souboru:

16 GiB

256 GiB

2 TiB

64 TiB

Max. velikost oddílu:

2 TiB

8 TiB

16 TiB

32 TiB

Název souboru na ext2 může obsahovat libovolné znaky kromě znaku s kódem 0 a lomítka.

Systém ext2 neobsahuje speciální podporu pro národní znakové sady, ale není problém na něj ukládat soubory v ISO-8859-2 nebo UTF-8 (použití UTF-16 není možné). Maximální délka jména souboru je 255 bytů (dle specifikace rozšiřitelná až na 1012 bytů). Maximální délka souboru jako takového je 264 bytů (což je teoretický horní strop daný přímo souborovým systémem). V závislosti na implementaci může být nižší, například na 32bitových systémech může být velikost souboru omezena na 231 bytů (do jádra verze 2.4.0). V novějších jádrech bylo rozšířeno API rozhraní, a tak je současný limit na platformě x86 2 TiB (241), avšak závisí na velikosti bloku (viz tabulka 1.). Některé programy však funkce rozšířeného rozhraní nepoužívají, a proto nemusí být schopny pracovat s většími soubory.

Nástupcem souborového systému ext2 je systém ext3, který je plně zpětně kompatibilní, ale navíc podporuje například žurnálování (informace o dokončených operacích).

2.4. Historie

Raný vývoj Linuxového jádra probíhal též v prostředí operačního systému Minix. Proto bylo přirozené, že byl do Linuxového jádra jako primární souborový systém implementován MINIX file system. Minixový systém souborů byl prakticky bezchybný, ale protože používal 16bitové adresy, byl omezen na maximálně 64 MiB dat a neumožňoval názvy souborů dalších 14 znaků. Kvůli těmto omezením začala v Linuxu práce na implementaci nových souborových systémů.

Byla vyvinuta mezivrstva VFS, která umožňovala v jádře Linuxu sjednotit přístup ke všem souborovým systémům a zjednodušit tak jejich začleňování. Po jeho integraci do jádra byl v dubnu 1992 začleněn do verze 0.96c souborový systém ext (extended file system). Řešil dva hlavní problémy: maximální velikost diskového oddílu až 2 GiB a délka názvu souboru byla až 255 znaků, ale stále existovaly problémy: neexistovala podpora separovaného přístupu a možnost změny I-node a v něm uložených záznamů o čase.

Jako řešení těchto problémů byly v lednu 1993 vyvinuty dva nové souborové systémy: xiafs a ext2 (second extended file system). Souborový systém ext2 byl založen na souborovém systému ext, avšak prošel mnohými reorganizacemi, zlepšeními a byl navržen s přihlédnutím na evoluci a zároveň ponechával prostor pro další rozšiřování – POSIXové ACL a rozšířené atributy (Extended file attributes), které používá například SELinux.

2.5. Struktura ext2

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

2.5.1. Superblok

Superblok obsahuje:

  • počet inode
  • počet bloků
  • počet rezervovaných bloků
  • číslo prvního bloku
  • velikost fragmentu
  • počet bloků ve skupině
  • počet fragmentů ve skupině
  • počet inodů v skupině
  • čas posledního zápisu
  • počet připojení souborového systému od jeho poslední kontroly
  • maximální počet připojení souborového systému před vynucenou kontrolou
  • magické číslo jako označení typu
  • stav souborového systému: v pořádku (čistý) nebo ne
  • hlášení detekce chyby
  • číslo revize (minor)
  • čas poslední kontroly souborového systému
  • maximální doba mezi kontrolami
  • standardní ID uživatele a skupiny pro rezervované bloky

2.5.2. Inode

inode, i-node, česky i-uzel je v informatice datová struktura uchovávající metadata o souborech a adresářích používaná v unixových souborových systémech, které vycházejí z tradičního UFS (například linuxová řada ext2, ext3, ext4). Z důvodu zachování zpětné kompatibility ostatní souborové systémy i-uzly emulují (např. NFS).

i-uzel obsahuje metadata pro každý libovolně velký soubor i adresář, například čas poslední změny, přístupová práva, seznam datových bloků a podobně. V adresářích jsou pak dvojice název souboru a k němu příslušné číslo i-uzlu, které pomocí metadat popisuje vlastní uložená datovou část souboru nebo adresáře. Vzhledem k tomu, že (téměř) vše je v unixových systémech soubor (vlastně i adresář je speciální soubor), je i-uzel univerzální datovou strukturou pro metadata.

Počet i-uzlů je u klasických souborových systémů (ext2, ext3) určen při formátování systému souborů a později již nemůže být změněn. Jejich množství určuje maximální počet adresářů a souborů, které lze v souborovém systému vytvořit. I když může být na disku volné místo pro data (tj. volné datové bloky), nemusí být možné z důvodu nedostatku volných i-uzlů vytvořit další soubory a adresáře.

Soubor_Inode__czech_description_.png

Obrázek 1. – struktura i-nodu v souborovém systému ext2.


2.5.3. Adresáře

Adresář je uložen v datovém bloku a obsahuje seznam čísel inode a názvy položek v adresáři.





3. Žurnálovací systém souborů

3.1. Úvod do žurnálovacích systémů

Abychom mohli dále pochopit nejpodstatnější rozdíl mezi ext2 a jeho nástupců ext3 a ext4, je nutné objasnit si pojem – žurnálovací systém souborů.

Žurnálovací systém souborů zapisuje změny, které mají být v počítačovém systému souborů provedeny, do speciálního záznamu nazývaného žurnál (anglicky journal). Žurnál je obvykle realizován jako cirkulární buffer a jeho účelem je ochránit data na pevném disku před ztrátou integrity v případě neočekávaných havárií (výpadek napájení, neočekávané přerušení vykonávaného programu, pád systému apod.).

V obecném smyslu označujeme žurnálováním vytváření libovolných podrobných záznamů o prováděné činnosti (logů).

3.2. Popis funkce

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 (atomických) operací, což může vést k problému se souběhem (anglicky race condition). 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émy, které žurnálování nepodporují, je nutné kompletně zkontrolovat speciálním programem (např. scandisk, fsck), což je časově velmi náročná operace a může to navíc způsobit ztrátu dostupnosti dat, které nebyly havárií postiženy přímo.

3.3. Princip žurnálu

Žurnál je pro ochranu prováděné transakce využíván následujícím způsobem:

  1. do žurnálu je zapsáno, co a kde se bude měnit
  2. je provedena vlastní série změn
  3. do žurnálu je zapsáno, že operace byla úspěšně dokončena
  4. záznam v žurnálu je zrušen

Pokud dojde v kterémkoliv okamžiku k přerušení, je možné pomocí dat uvedených v žurnálu uvést systém souborů do konzistentního stavu buď návratem zpět ke stavu před započetím transakce, nebo dokončením přerušené transakce.

3.4. Optimalizace

Žurnál je obvykle umístěn na speciálním místě souborového systému a je umístěn tak, aby zabíral souvislý prostor (srovnej s fragmentací). Může to být i obyčejný soubor (ext3), avšak obvykle je označen jako systémový a je běžnému uživateli skryt, aby nemohl být snadno poškozen.

Pro zvýšení výkonu je někdy možné umístit žurnál na jiný disk. Speciálním případem jsou systémy souborů, které jsou navrženy tak, že žurnál nepotřebují a odstraňují tak problém dvojitého zápisu na disk. Jsou to například tzv. soft updates v UFS nebo souborové systémy založené na principu zápisu do logu.

3.5. Žurnálování metadat

Žurnálování snižuje výkonnost souborového systému při zápisu dat, protože všechna data musí být zapsána dvakrát (nejprve do žurnálu, pak do souborového systému). Podstatné zvýšení výkonu je možné dosáhnout žurnálováním pouze metadat (tj. informací, které popisují umístění dat na disku), které umožní velmi rychlou opravu souborového systému po pádu systému, avšak neřeší problém pádu samotných programů. Navíc může dojít k nekonzistenci mezi daty a metadaty.

Je-li použito žurnálování pouze metadat (např. u NTFS, nebo implicitní stav u ext3), může se stát, že při prodlužování souboru je při pádu systému ochráněno zvětšení délky souboru a alokace potřebných datových bloků na disku, avšak samotný zápis není dokončen. V takovém případě by v souboru byla v místě prodloužení pouze náhodná data. Proto operační systém v tomto případě zajišťuje, že zápis dat na disk proběhne před zápisem metadat. Některá zařízení však mohou pro zvýšení výkonu pořadí zapisovaných dat měnit (technologie NCQ u pevných disků), což opět přináší výše zmíněné riziko, které musí operační systém ošetřit (např. čekáním na potvrzení zápisu od pevného disku nebo nuceným vylitím cache pevného disku).

3.6. Souborové systémy se žurnálováním

Žurnálování podporuje v systémech Windows NT souborový systém NTFS (FAT žurnálování nepodporuje), v systému Mac OS X podporuje žurnálování souborový systém HFS+, v Linuxu pak ext3, ext4, ReiserFS, XFS (od firmy SGI), JFS (od firmy IBM).






4. Žurnálovací souborový systém Linuxu – ext3

4.1. Úvod do ext3

ext3 je opět žurnálovací systém souborů vytvořený pro operační systém Linux 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 populárních linuxových distribucí. První zmínku o práci na rozšíření možností souborového systému ext2 učinil Stephen Tweedie v únoru 1999 v e-mailové konferenci pro jádro Linuxu a jeho změny byly začleněny do oficiálního kódu jádra od verze 2.4.15 v listopadu 2001. Následníkem ext3 je souborový systém ext4, který je s ext3 zpětně kompatibilní (dopředně kompatibilní je jen částečně kvůli novým strukturám na disku).

4.2. Výhody

Ačkoli je výkon (rychlost) v některých specifických operacích nižší, než u konkurentů jako je JFS2, ReiserFS a XFS, má tu významnou výhodu, že umožňuje jednoduchý přechod z původního ext2 na ext3 bez nutnosti kompletní zálohy a obnovy dat. Další výhodou je jeho dlouhá historie a široké nasazení, které zajišťuje dostatek aktivních vývojářů a vysokou úroveň jeho kódu.

Souborový systém ext3 nabízí oproti svému předchůdci ext2:

  • žurnálování (informace o dokončených operacích)
  • indexy souborů v adresáři implementované stromy (do té doby se používal pouze lineární seznam, v ext3 se používá jen na malé adresáře)
  • možnost změnit velikost souborového systému za běhu (od listopadu 2004)

V linuxové implementaci ext3 jsou dostupné tři způsoby žurnálování:

  • žurnál - metadata i obsah souborů se ukládají do žurnálu a teprve poté jsou zapsány na disk. Nejspolehlivější, ale zároveň nejpomalejší metoda, protože jsou data zapisována dvakrát.
  • writeback - metadata se žurnálují, ale obsah souborů ne. Toto je nejrychlejší způsob, ale přináší riziko, že při pádu budou data zapsána tam, kam nemají. Při dalším mountu se tedy může stát, že k souborům, se kterými systém v tu chvíli pracoval, budou na konec zapsány různé nesmysly.
  • ordered - podobné jako writeback, s tím rozdílem, že si vynucuje zapsání souboru, než jej v metadatech označí jako zapsaná. Tento způsob je dobrým kompromisem mezi výkonem a stabilitou, a z toho důvodu je použit jako výchozí.

Bez těchto prvků je ext3 systém zpětně kompatibilní k předešlému ext2 systému. Tento fakt umožňuje úspěšně testovat aplikace pro údržby a opravy ext2 souborových systémů, které lze taktéž použít u novějšího systému ext3 bez větších změn. Ext2 a ext3 systémy sdílejí společnou sadu utilit (e2fsprogs), které zahrnují např. fsck tool.

4.3. Nevýhody


4.3.1. Funkčnost

Od doby, kdy ext3 systém směřoval k plné kompatibilitě s ext2, je mnoho diskových struktur podobných strukturám na ext2. Následkem toho, ext3 postrádal řadu rysů, typických pro novější systémy. Příkladem může být dynamická alokace i-node a variabilní velikost bloků. Souborový systém nemůže být kontrolován nástrojem e2fsck, když je namountován pro zápis. Dump souborového systému, který je namountován pro čtení a zápis (rw), může způsobit poškození dat v dumpu. Ext3 nepodporuje extent, vlastnost užitou v systémech JFS2 a ext4.

4.3.2. Defragmentace

Neexistuje žádný nástroj pro defragmentaci, který lze použít za běhu ext3, avšak systém fragmentaci aktivně předchází. Existuje pouze offline defragmentátor pro ext2 (e2defrag), který však vyžaduje nejprve konverzi ext3 zpět na ext2 systém. Pokud je ext3 špatně nastaven, e2defrag může způsobit poškození. Existují defragmentační nástroje jako je Shake a defrag, které kopírují každý soubor a „počítají“ s tím, že nově alokovaný soubor už nebude fragmentovaný (díky předcházení fragmentace). Nicméně tato metoda funguje pouze, pokud je souborový systém přiměřeně prázdný. Poloprázdné systémy souborů nejsou však obvykle fragmentovány.

4.3.3. Neobnovitelnost smazaných souborů

Ext3 na rozdíl od ext2 vynulovává ukazatele v i-nodech smazaných souborů. Dělá to kvůli zjednodušení čtení a zápisu na souborový systém během nahrávání žurnálu po nečistém mountu. To ovšem brání tomu, aby šly soubory obnovit. Jediný způsob jak data obnovit se dá použít jen tehdy, když víte, na kterém bloku data začínají a končí. Tím je mazání poněkud bezpečnější než na ext2, což by mohlo být považováno i za výhodu.

4.3.4. Komprese

Podpora pro transparentní kompresi (dostupná jako neoficiální patch pro ext2) není v ext3 dostupná.

4.3.5. Velikostní limity

Ext3 má určenou relativně malou maximální velikost jak pro jednotlivé soubory, tak celý souborový systém. Tyto limity závisejí na velikosti bloku souborového systému a je jsou totožné s ext2 (viz tabulka 2.)

Tabulka 2.- limity ext3

Velikost bloku

Max. velikost souboru

Max. velikost souborového systému

1 kiB

16 GiB

2 TiB

2 kiB

256 GiB

8 TiB

4 kiB

2 TiB

16 TiB

8 kiB

2 TiB

32 TiB

4.3.6. Žádné výpočty kontrolních součtů v žurnálu

Ext3 neprovádí kontrolní součet během zápisu v žurnálovacím systému. Pokud barrier=1 není dostupná jako mount option (v /etc/fstab) a pokud hardware provádí zápis do cache mimo pořadí, riskuje se poškození souborového systému. Tato volba standardně není zpřístupněná na nejpopulárnějších distribucích Linuxu.


5. Žurnálovací souborový systém Linuxu – ext4

5.1. Úvod do ext4

ext4 (fourth extended filesystem) je v informatice ž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 (přejímá všechny jeho výhody), do jádra byl začleněn nejprve jako vývojový (tzv. ext4dev) a dne 11. prosince 2008 byl v jádře verze 2.6.28 přejmenován na ext4 a tím označen za stabilní a vhodný k běžnému užívání. Ext4 přináší mnoho novinek typických pro moderní souborové systémy, jako je odstranění limitů ext3 (velikost souborového systému, souborů, počtu souborů v adresáři), podporu extentů, prealokaci místa na disku, odloženou alokaci, kontrolní součet žurnálu, online defragmentaci, rychlejší kontrolu, multiblokový alokátor a zvýšenou přesnost uložených časových údajů a také samozřejmě zvýšení výkonu.

5.2. Historie

Vývoj ext4 započal 10. října 2006, kdy vývojář Andrew Morton oznámil úmysl přidat do ext3 zpětně kompatibilní vylepšení souborového systému ext3, které mělo přidat 64bitové limity velikosti a další vylepšení, jejichž úkolem bylo zlepšit výkonnost souborového systému. Vývojáři linuxového jádra však nesouhlasili s přijetím takových rozšíření do ext3 a navrhli vytvořit nový souborový systém ext4, který vznikne jako fork původního ext3 (tj. zkopírováním zdrojového kódu ext3, jeho přejmenováním na ext4 a následným přidáním požadovaných vylepšení, takže nedojde k ovlivnění původního systému souborů ext3). Tento návrh byl přijat a dne 10. června 2006 vývojář Theodore Ts'o, který byl zodpovědný za ext3, zveřejnil nový plán dalšího vývoje pro ext4. Předběžná vývojová verze byla zahrnuta do linuxového jádra verze 2.6.19 a byla označena jako ext4dev. Dne 11. října 2008 byly zahrnuty do Linuxu verze 2.6.28 změny, které přejmenovaly vývojovou verzi na ext4 a označily ji jako stabilní kód, čímž došlo k uzavření vývojové fáze ext4. Jádro verze 2.6.28, obsahující oficiální podobu ext4, bylo vydáno dne 11. prosince 2008.

5.3. Hlavní rysy

Systém ext4 může být použit na svazku o velikosti až 1 EiB (1024 PiB – pebibytů), přibližně 1018 bajtů), podporuje extenty a odstraňuje limit původního systému ext3, jež mohl obsahovat v adresáři maximálně 32 768 podadresářů. 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.

5.4.Porovnání s ext3

 

Tabulka 3. – porovnání ext3 a ext2

 

ext3

ext4

Max. velikost oddílu

16 TiB

1 EiB

Max. velikost souboru

2 TiB

16 TiB

Max. počet souborů

4 miliardy

4 miliardy (232)

Max. počet podadresářů

32 768

neomezeno

5.5. Velikostní limity

Systém souborů ext4 může podporovat svazky až o velikosti 1 EiB a soubory s maximální velikostí 16 TiB.

5.6. Extenty

Extenty nahrazují tradiční schéma blokového mapování, které využívají předchozí systémy ext2 a ext3. Extent je rozsah navazujících fyzických bloků (resp. alokačních jednotek), který zlepšuje výkon při práci s velkými soubory a zmenšující fragmentaci. Jeden extent se tak může stát v systému souborů ext4 alokační jednotkou o velikosti až 128 MiB souvislého místa na disku, místo mnoha jednotlivých datových bloků o standardní velikosti 4 KiB.

5.7. Zpětná kompatibilita

Systém souborů ext4 je zpětně kompatibilní s ext3, což umožňuje připojit systém souborů ext3 jako ext4 a obráceně do té chvíle, než jsou v ext4 použity extenty.

5.8. Dopředná kompatibilita

Systém souborů ext4 je částečně dopředně kompatibilní s ext3, takže oddíl s ext4 může být připojen jako ext3, pokud nejsou v ext4 použity extenty

5.9. Prolomení limitu 32 000 podadresářů

V ext3 je počet podadresářů jednoho adresáře omezen na 32 000. 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. Podpora vysokého počtu položek v adresáři pomocí stromu Htree je obsažena již v systému souborů ext3, pomocí zapnutí rozšíření dir_inde




ZÁVĚR A PODĚKOVÁNÍ

Tímto bych chtěl poděkovat přispěvatelům České wikipedie, díky které jsem mohl čerpat informace pro obsah tohoto článku a všem čtenářům za to, že nad tímto článkem vydrželi sedět.

Pokud se mi podařilo alespoň někomu objasnit problematiku souborových systémů, tak má práce se shromažďováním dat a jejich převodem do tohoto článku nebyla zbytečná.

Seznam použitých zdrojů:

  1. Ext3. In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 5.11.2001, last modified on 25.4.2010 [cit. 2011-01-25]. Dostupné z WWW: <http://cs.wikipedia.org/wiki/Ext3>.
  2. Ext2. In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 3.5.2005, last modified on 8.11.2010 [cit. 2011-01-25]. Dostupné z WWW: <http://cs.wikipedia.org/wiki/Ext2>.
  3. Ext4. In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 23.1.2008, last modified on 22.9.2010 [cit. 2011-01-25]. Dostupné z WWW: <http://cs.wikipedia.org/wiki/Ext4>.
  4. node. In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 24.1.2007, last modified on 9.1.2011 [cit. 2011-01-25]. Dostupné z WWW: <http://cs.wikipedia.org/wiki/Inode>.
  5. Souborov%C3%BD syst%C3%A9m. In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 22.9.2004, last modified on 12.1.2011 [cit. 2011-01-25]. Dostupné z WWW: <http://cs.wikipedia.org/wiki/Souborov%C3%BD_syst%C3%A9m>.
  6. BRANDEJS, Michal. UNIX – Linux : praktický průvodce. Praha : Grada Publishing, 1996. ISBN 80-7169-170-4. Kapitola 3. Systém souborů, s. 29–32.  
  7. WNKLER, Peter. VELKÝ POČÍTAČOVÝ LEXIKON : co je co ve světě počítačů. Vydání první. Brno; ČR : Computer Press a.s., 2009. 520 s. ISBN 978-80-251-2331-7.



Diskuze (19) Nahoru