Ext2 je maximální velikost souboru. Souborový systém ext2fs je předchůdcem ext3fs. Plugin pro Total Commander DiskInternals Reader

Nyní si popíšeme nejpopulárnější linuxový diskový souborový systém - ext2. První vydání Linuxu používalo souborový systém MINIX 1, který měl krátké názvy souborů a maximální velikost souboru 64 MB. Souborový systém MINIX 1 byl nakonec nahrazen prvním rozšířeným souborovým systémem ext, který umožňoval delší názvy souborů a větší velikosti souborů. Systém ext byl z důvodu nízké účinnosti (z hlediska výkonu) nahrazen jeho nástupcem ext2, který je hojně využíván dodnes.

Oddíl disku ext2 obsahuje systém souborů znázorněný na obr. 10.17 rozložení. Blok 0 systém Linux nepoužívá a obsahuje kód pro spuštění počítače. Po bloku 0 je diskový oddíl rozdělen do skupin bloků (bez ohledu na hranice diskových válců). Každá skupina je organizována následovně.


Prvním blokem je superblok, který uchovává informace o rozložení systému souborů, včetně počtu i-uzlů, počtu diskových bloků a začátku seznamu volných diskových bloků (obvykle několik set prvků). Následuje deskriptor skupiny obsahující informace o umístění bitmap, počtu volných bloků a i-uzlů ve skupině a počtu adresářů ve skupině. Tato informace je důležitá, protože souborový systém ext2 se pokouší distribuovat adresáře rovnoměrně po disku.

Dvě bitmapy sledují volné bloky a volné i-uzly (toto je také zděděno ze souborového systému MINIX 1 a liší se od většiny souborových systémů UNIX, které používají seznam volných bloků). Velikost každé bitmapy je jeden blok. Pro velikost bloku 1 KB toto schéma omezuje velikost skupiny bloků na 8192 bloků a 8192 i-uzlů. První číslo je skutečným omezením, ale druhé prakticky ne. S bloky 4KB jsou čísla čtyřikrát větší.

Poté jsou umístěny samotné i-uzly. Jsou očíslovány od 1 do určitého maxima. Velikost každého i-uzlu je 128 bajtů a popisuje přesně jeden soubor. i-uzel obsahuje účetní informace (včetně všech vrácených voláním statistik, které je jednoduše převezme z i-uzlu), stejně jako dostatek informací k nalezení všech diskových bloků, které obsahují data souboru.

Za i-uzly následují datové bloky. Zde jsou uloženy všechny soubory a adresáře. Pokud se soubor nebo adresář skládá z více než jednoho bloku, pak tyto bloky nemusí být na disku souvislé. Ve skutečnosti budou bloky velkého souboru s největší pravděpodobností rozptýleny po celém disku.

I-uzly odpovídající adresářům jsou rozptýleny ve všech skupinách diskových bloků. Ext2 se pokouší umístit běžné soubory do stejné skupiny bloků jako nadřazený adresář a datové soubory do stejného bloku jako i-uzel zdrojového souboru (za předpokladu, že je tam dostatek místa). Tato myšlenka byla vypůjčena z Berkeley Fast File System (McKusick et al., 1984). Bitmapy se používají k rychlému rozhodování o alokaci

prostor pro nová data souborového systému.

Když jsou alokovány nové bloky souboru, ext2 také předem přidělí několik (osm) dalších bloků do stejného souboru (aby se minimalizovala fragmentace souboru kvůli budoucím zápisům). Toto schéma distribuuje systém souborů na celý disk. Má také dobrý výkon (díky jeho souvislosti a snížené fragmentaci).

Chcete-li získat přístup k souboru, musíte nejprve použít jedno ze systémových volání systému Linux (například open), které vyžaduje zadání cesty k souboru. Tato cesta je analyzována a její složky jsou extrahovány. Pokud je zadána relativní cesta, hledání začne z aktuálního adresáře procesu, jinak - z kořenového adresáře. V každém případě je i-uzel pro první adresář snadno k nalezení: je na něj ukazatel v popisovači procesu nebo (v případě kořenového adresáře) je uložen v konkrétním bloku na disku.

Adresář umožňuje názvy souborů o délce až 255 znaků (obrázek 10.18). Každý adresář se skládá z několika diskových bloků (takže lze adresář zapisovat na disk atomicky). V adresáři jsou prvky souborů a adresářů v netříděném pořadí (každý prvek bezprostředně následuje za předchozím). Prvky nemohou překročit hranice bloků, takže na konci každého bloku disku je obvykle několik nevyužitých bajtů.


Každá položka adresáře na Obr. 10.18 se skládá ze čtyř polí s pevnou délkou a jednoho pole s proměnnou délkou. První pole je číslo i-uzlu, což je 19 pro kolosální, 42 pro objemný a 88 pro bigdir. Další je pole rec_len, které udává velikost celé položky adresáře v bajtech (možná spolu s dalšími výplňovými bajty za jménem). Toto pole je povinné pro nalezení další položky (v případě, že je název souboru doplněn neznámým počtem bajtů). Na obrázku je toto pole označeno šipkou. Následuje pole typu soubor, adresář atd. Poslední pole s pevnou délkou obsahuje délku názvu souboru v bajtech (v tomto příkladu 8, 10 a 6). Nakonec je zde samotný název souboru, který končí prázdným bajtem a je doplněn do 32bitové hranice. Po něm mohou následovat další výplňové bajty.

Na Obr. Obrázek 10.18b ukazuje stejný adresář po odstranění položky pro objemný. To vše v adresáři spočívá v tom, že číslo v poli velikosti položky předchozího kolosálního souboru se zvýší a bajty v položce adresáře pro vzdálený objemný soubor se změní na zástupné symboly pro první položku. Tyto bajty lze později použít pro zápis při vytváření nového souboru.

Protože se adresáře prohledávají lineárně, může hledání záznamu, který je na konci velkého adresáře, trvat dlouho. Systém proto udržuje mezipaměť adresářů, ke kterým se nedávno přistupovalo. Cache se prohledává podle názvu souboru, a pokud je nalezen, pak již není potřeba drahé lineární vyhledávání. Objekt dentry se zadá do mezipaměti záznamů adresáře pro každou komponentu cesty a (prostřednictvím svého i-uzlu) se v adresáři vyhledají následující položky cesty (dokud není nalezen skutečný i-uzel souboru).

Chcete-li například najít soubor určený absolutní cestou (jako /usr/ast/file), musíte postupovat podle těchto kroků. Nejprve systém najde kořenový adresář, který obvykle používá i-uzel číslo 2 (zvláště když je i-uzel číslo 1 rezervován pro práci se špatnými bloky). Umístí odpovídající prvek do mezipaměti položek adresáře (pro budoucí prohledávání kořenového adresáře). Poté vyhledá v kořenovém adresáři řetězec "usr", aby získal číslo i-uzlu pro adresář /usr (který je také uložen v mezipaměti pro položky adresáře). Tento i-uzel je poté přečten a jsou z něj načteny diskové bloky, takže můžete číst adresář /usr a hledat v něm řetězec „ast“. Jakmile je nalezen odpovídající prvek, lze z něj určit číslo i-uzlu pro adresář /usr/ast. Vzhledem k tomuto číslu i-uzlu jej lze číst a lze nalézt bloky adresářů. Nakonec hledáme „soubor“ a najdeme jeho číslo i-uzlu. Použití relativní cesty je tedy nejen pohodlnější pro uživatele, ale také snižuje množství práce pro systém.

Pokud je soubor dostupný, systém načte číslo i-uzlu a použije ho jako index do tabulky i-uzlu (na disku), aby našel odpovídající i-uzel a načetl jej do paměti. Tento i-uzel je umístěn v tabulce i-uzlů, což je datová struktura jádra, která obsahuje všechny i-uzly pro aktuálně otevřené soubory a adresáře. Formát prvku i-uzlu musí obsahovat (minimálně) všechna pole, která vrací systémové volání stat, aby volání statistik fungovalo (viz Tabulka 10.10). V tabulce Obrázek 10.13 ukazuje některá pole struktury i-uzlu podporovaného souborovým systémem Linux. Skutečná struktura i-uzlu obsahuje mnohem více polí, protože stejná struktura se používá k reprezentaci adresářů, zařízení a dalších speciálních souborů. Struktura i-uzlu také obsahuje pole vyhrazená pro budoucí použití. Historie ukázala, že nepoužívané bity dlouho nevydrží.

Nyní se podívejme, jak systém čte soubor. Jistě si vzpomenete, že typické volání procedury knihovny pro spuštění systémového volání čtení vypadá takto:

n = read(fd, buffer, nbytes);


Když jádro převezme kontrolu, vše, co musí začít, jsou tyto tři parametry a informace v jeho interních tabulkách (které se týkají uživatele). Jedním z prvků těchto interních tabulek je pole deskriptorů souborů. Je indexován pomocí deskriptorů souborů a obsahuje jeden prvek na otevřený soubor (až do určitého maximálního počtu, výchozí hodnota je obvykle 32).

Cílem je začít tímto deskriptorem souboru a končit odpovídajícím uzlem. Podívejme se na jedno možné schéma: umístěte ukazatel na uzel v tabulce deskriptorů souboru. I přes svou jednoduchost tato metoda (bohužel) nefunguje. Problém je v tomhle. Každý deskriptor souboru musí mít přidružený ukazatel souboru, který určuje bajt v souboru, ve kterém začne další operace čtení nebo zápisu. Kde by měl být tento ukazatel uložen? Jednou z možností je umístit jej do tabulky Nodes. Tento přístup však nebude fungovat, pokud několik nesouvisejících procesů otevře stejný soubor současně, protože každý proces musí mít svůj vlastní ukazatel.

Druhým řešením je umístit ukazatel do tabulky deskriptorů souboru. V tomto případě má každý proces, který otevírá soubor, svou vlastní pozici v souboru. Bohužel toto schéma také nefunguje, ale důvod selhání v tomto případě není tak zřejmý a souvisí s povahou sdílení souborů v systému Linux. Zvažte skript shellu 5, který se skládá ze dvou příkazů (p1 a p2), které musí být provedeny postupně. Pokud je skript volán z příkazového řádku

očekává se, že příkaz p1 zapíše svůj výstup do souboru x a příkaz p2 také zapíše svůj výstup do souboru x, počínaje místem, kde příkaz p1 skončil.

Když shell spustí proces p1, soubor x bude zpočátku prázdný, takže příkaz p1 jednoduše začne zapisovat do souboru na pozici 0. Když však p1 skončí, bude potřeba nějaký mechanismus, který zajistí, že proces p2 uvidí počáteční pozici jako něco jiného než 0. přesně to se stane, pokud je pozice v souboru uložena v tabulce deskriptorů souboru) a hodnota, na které se pi zastavilo.

Jak se to dělá, je znázorněno na Obr. 10.19. Trik spočívá v zavedení nové tabulky – otevřené tabulky popisu souboru – mezi tabulkou deskriptorů souboru a tabulkou i-uzlu a uložit do ní ukazatel na soubor (a také bit pro čtení/zápis). Na obrázku je rodičovským procesem shell a podřízeným procesem je nejprve proces pi a poté proces p2. Když shell vytvoří proces pi, jeho uživatelská struktura (včetně tabulky deskriptorů souborů) je přesnou kopií stejné struktury shellu, takže oba obsahují ukazatele na stejnou otevřenou tabulku deskriptorů souborů. Když proces pi skončí, deskriptor souboru shellu nadále ukazuje na otevřenou tabulku popisu souboru, která obsahuje pozici procesu p1 v souboru. Když nyní shell vytvoří proces p2, nový podřízený proces automaticky zdědí pozici souboru, aniž by nový proces nebo shell potřebovaly znát aktuální hodnotu této pozice.


Pokud nějaký proces třetí strany otevře soubor, obdrží svůj vlastní záznam v tabulce popisu otevřeného souboru se svou pozicí v souboru, což je přesně to, co je potřeba. Účelem otevřené tabulky popisu souborů je tedy umožnit nadřazeným a podřízeným procesům sdílet jeden ukazatel na soubor, ale přidělit soukromé ukazatele jiným procesům.

Takže (vrátíme-li se k problému provádění čtení), ukázali jsme, jak se určuje poloha souboru a i-uzel. I-uzel obsahuje adresy disku prvních 12 bloků souboru. Pokud pozice v souboru spadá do jeho prvních 12 bloků, pak je načten požadovaný blok souboru a data jsou zkopírována uživateli. U souborů delších než 12 bloků obsahuje i-uzel adresu disku jednoho nepřímého bloku (obrázek 10.19). Tento blok obsahuje diskové adresy dalších diskových bloků. Pokud je například velikost bloku 1 KB a adresa disku zabírá 4 bajty, pak jeden nepřímý blok může uložit až 256 adres disku. Toto schéma umožňuje podporovat soubory o velikosti až 268 kB.

Jak umožnit přístup k diskovému oddílu nebo vyměnitelnému médiu se systémy souborů v prostředí Windows Ext2/3/4 ? Pokud je na počítači například i druhý systém Linux. A s jeho daty z okolí je potřeba pracovat Okna. Nebo jiný příklad - když jsou virtuální disky se systémy nainstalovanými na virtuálních počítačích připojeny uvnitř Windows Linux nebo Android. S Ext2/3/ 4 Windows nemůže fungovat nativně, potřebuje k tomu nástroje třetích stran. Jaké jsou tyto prostředky? Podívejme se na ně níže.

***
První tři nástroje umožní informační zařízení pouze číst Ext2/3/4. Nejnovější řešení vám umožní číst i zapisovat data. Všechny níže popsané nástroje jsou zdarma.

1. DiskInternals Linux Reader

Jednoduchý program je primitivní správce souborů, vytvořený jako standardní průzkumník Windows, s podporou souborových systémů Ext 2/3/4 , Reiser4 , HFS , UFS2. V okně programu uvidíme oddíly a zařízení s Linux nebo Android.

Chcete-li kopírovat, musíte vybrat složku nebo soubor a stisknout tlačítko "Uložit".

Poté zadejte cestu ke kopírování.

2. Plugin pro Total Commander DiskInternals Reader

Fanoušci populární mohou extrahovat data Linux nebo Android uvnitř Windows pomocí tohoto správce souborů. Nejprve si do něj ale nainstalujte speciální plugin. Jedním z těchto pluginů je , dokáže připojit a číst informační zařízení ve formátu Ext2/3/4 , Tuk/exFAT , HFS/HFS+ , ReiserFS. Stáhněte si plugin, rozbalte jeho archiv uvnitř , potvrďte instalaci.

Pojďme spustit (Důležité) jménem správce. Pojďme do sekce. Klikněte.

Zde, spolu s dalšími diskovými oddíly a médii, ten s Ext2/3/4 .

Data se kopírují tradičně způsobem - stisknutím F5 na druhém panelu.

3. Plugin pro Total Commander ext4tc

Zjednodušená alternativa k předchozímu řešení - ext4tc, další plugin pro . Může se připojit ke čtení informačních zařízení naformátovaných pouze v Ext2/3/4. Stáhněte si plugin, rozbalte jeho archiv ve správci souborů a spusťte instalaci.

Pojďme spustit (Důležité) jménem správce. Klikněte. Pojďme .

Pokud potřebujete zkopírovat data, použijte obvyklou metodu s klávesou F5.

4. Ovladač podpory Ext2Fsd

Program Ext2Fsd– toto je řidič Ext2/3/4, implementuje podporu pro tyto souborové systémy na úrovni operačního systému. S diskovými oddíly a jednotkami naformátovanými těmito systémy souborů lze pracovat jako s běžnými mediálními zařízeními podporovanými systémem Windows v okně Průzkumníka nebo s programy třetích stran. Ovladač umožňuje číst i zapisovat data.

Stáhněte si nejnovější aktuální verzi Ext2Fsd.

Během instalace aktivujeme (pokud jde o dlouhodobou práci) tři navrhovaná zaškrtávací políčka:

1 — Automatické spuštění ovladače v systému Windows;
2 - Podpora nahrávání pro Ext2;
3 - Podpora formátování pro Ext3.

Ve fázi před dokončením aktivujeme možnost spuštění okna správce ovladačů - - spolu s přiřazením informací zařízením z Ext2/3/4 písmena jednotek.

V okně, které se otevře Uvidíme média s již přiděleným písmenem. Například v našem případě nosič s Ext4 je dáno první volné písmeno F.

Nyní můžeme pracovat s diskem F v okně Průzkumníka.

Přiřaďte písmeno novým připojeným zařízením s Ext2/3/4 lze provést pomocí kontextového menu vyvolaného na každém z těch zobrazených v okně zařízení. Ale pouhým přiřazením písmene jednotky se takové zařízení po restartu Windows neobjeví, toto řešení je pouze na jednu relaci práce s počítačem. Chcete-li vytvořit nové zařízení s Ext2/3/4 trvale viditelný v prostředí Windows, je potřeba na něj poklepat, abyste otevřeli konfigurační okno a nastavili parametry trvalého připojení. Ve druhém sloupci potřebujete:

U vyměnitelných médií aktivujte zaškrtávací políčko označené číslem 1 na snímku obrazovky a zadejte písmeno jednotky;
U interních disků a oddílů aktivujte zaškrtávací políčko označené na snímku obrazovky níže číslem 2 a také zadejte písmeno jednotky.

Souborový systém Linux je nejčastěji ext4. Je žurnálován a umožňuje pohodlnou práci s daty při řešení naprosté většiny problémů. Existují však i další. V rámci tohoto materiálu budou diskutovány hlavní typy souborových systémů a principy práce s nimi.

Typy souborových systémů Linux a jejich vlastnosti

Charakteristickými vlastnostmi jsou rychlost práce se soubory, zabezpečení a parametry (např. velikost bloku), které existují ve výchozím nastavení a nastavují se při vytváření FS. Snad nejdůležitější funkcí je přítomnost zásobníku. Systémový log zaznamenává údaje popř metadata(pouze záhlaví), ze kterých lze v případě selhání obnovit informace.

Souborový systém lze vytvořit na jakémkoli zařízení: na disku nebo systémovém oddílu.

Souborový systém EXT2

EXT2 je v současnosti zastaralý souborový systém, který se v moderních instalacích prakticky nepoužívá. Hlavní nevýhodou je nedostatek protokolování, což znemožňuje obnovení dat v případě selhání. Stále se používá na přenosných paměťových médiích, jako je USB. Není pro ně vyžadován časopis, protože zabírá určité místo.

Zaručuje také maximální provozní rychlost.

  • pro EXT2 maximální velikost souboru -2 TB

Souborový systém EXT3

Nahraný EXT2, hlavním rysem je vzhled zásobníku, je plně zpětně kompatibilní s EXT2 (EXT2 lze volně převést na EXT3). V dnešní době se také používá téměř vždy EXT4.

Žurnál - speciální oblast v paměti, do které se zapisují informace o všech změnách

  • pro EXT3 maximální velikost souboru -2 TB
  • maximální velikost všech souborů je 32 TB
  • každý adresář může mít až 32 000 podadresářů

Při žurnálování existují tři možnosti (určené při vytváření systému souborů):

  • žurnál – metadata, stejně jako informace samotné, do žurnálu
  • objednané – výchozí možnost, i po zápisu na disk se ukládají pouze metadata
  • zpětný zápis – ukládají se také pouze metadata, můžete si vybrat jejich uložení před nebo po zápisu na disk

Souborový systém EXT4

Jedná se o nejpoužívanější moderní verzi rozšířeného souborového systému

  • maximální velikost souboru -2 TB 16 TB
  • Maximální velikost všech souborů je 1 EB (exabajt). 1 EB = 1024 PB (petabajt). 1 PB = 1024 TB (terabajt).
  • každý adresář může mít až 64 000 podadresářů

V EXT4 lze protokolování vypnout nastavením možnosti data při montáži vypnuto

EXT jako hlavní linuxový souborový systém a operační praxe

Systém souborů je vytvořen pomocí příkazu mk2fs

Požadovaná možnost protokolování je specifikována během montáže, například:

mount /dev/vdc /mnt/1 -t ext3 -o data=žurnál

Převod z EXT2 E na XT3

ReiserFS

ReiserFS (a moderní implementace Reiser4 s podporou SELinux) má dobrý výkon a je velmi produktivní - zejména při práci s velkým množstvím malých souborů. ReiserFS nepřiděluje inody pro každý malý soubor, ale zpracovává je společně a ReiserFS také používá žurnál s několika dostupnými možnostmi. V současné době je souborový systém podporován vývojáři z Ruska.

Pomocí příkazu můžete vytvořit FS pro zařízení

XFS

XFS je žurnálovací souborový systém. K ukládání informací využívá RAM, takže je možná ztráta dat – například při vypnutí napájení.

Chcete-li používat XFS na Ubuntu, budete muset nainstalovat balíčky xfsprogs A xfsdump

vfat

Souborový systém Linux existuje i v prostředí Windows. Používá se, když potřebujete zorganizovat sdílený přístup k určitým diskům a oddílům klientů s různými operačními systémy. V ostatních případech se nedoporučuje používat, protože při práci na Linuxu mohou nastat potíže.

Pokud máte nainstalované dva operační systémy, Windows a Linux, pak byste pravděpodobně chtěli být obsaženi na oddílech svobodného operačního systému přímo z Windows, aniž byste museli restartovat počítač.

Ve Windows bohužel neexistuje podpora pro oddíly OS Linux. Ale marně. Zdá se mi, že by to mohlo být ze strany Microsoftu pěkné gesto.

Podstatou problému je, že Windows používá souborový systém NTFS a Linux má svůj vlastní způsob organizace souborů, rozšířený souborový systém, jehož nejnovější verze má pořadové číslo 4.

Linux je uživatelsky přívětivější než jeho komerční sestra: Linux ve výchozím nastavení podporuje souborový systém Windows NTFS. Samozřejmě nebudete moci nainstalovat Linux na oddíl NTFS, ale můžete číst a zapisovat data z takového oddílu.

Ext2 IFS

Ext2 IFS podporuje Windows NT4.0/2000/XP/2003/Vista/2008 verze x86 a x64 a umožňuje prohlížet obsah linuxových oddílů ext2 a také do nich zapisovat. Nástroj nainstaluje systémový ovladač ext2fs.sys, který rozšiřuje možnosti systému Windows a zahrnuje plnou podporu pro ext2: oddílům ext2 jsou přiřazena písmena jednotek a soubory a složky na nich se zobrazují v dialozích všech aplikací, například, v Průzkumníku.

Ext2 FSD

Ext2 FSD je bezplatný ovladač pro systémy Windows (verze 2K/XP/VISTA/7 x86 a x64). Stejně jako předchozí utilita, která je ve své podstatě také ovladačem, obsahuje plnou podporu souborového systému ext2 ve Windows.

LTOOLS je sada nástrojů příkazového řádku, která vám umožňuje číst a zapisovat data do/z oddílů Linux ext2, ext3 a ReiserFS (standardní systémy souborů Linux) ze stroje se systémem DOS nebo Windows.

Existuje verze programu s grafickým shellem (napsaný v Javě) - LTOOLSgui, stejně jako verze s grafickým shellem napsaným v .

Ext2Read

Dezert je jako vždy nejchutnější.

Ext2Read je nástroj typu správce souborů, který vám umožňuje prohlížet i zapisovat do oddílů ext2/ext3/ext4. Podporuje LVM2 a co jej odlišuje od ostatních programů v této recenzi, souborový systém ext4. Vestavěná podpora pro rekurzivní kopírování adresářů.

A tady je druhý dezert. Nejprve se říkalo, že dobrým gestem ze strany Microsoftu by bylo povolit podporu linuxových oddílů ve Windows ve výchozím nastavení.

Toto gesto bylo nicméně učiněno k 20. výročí Linuxu. Podívej se sám.

To je vše. Děkuji za pozornost. Půjdu zahnat chrousty. Letos na jaře je jich tolik. 🙂

Podívejme se na logickou strukturu souborového systému ext2fs. Fyzicky je pevný disk rozdělen na sektory po 512 bajtech. První sektor diskového oddílu v jakémkoli souborovém systému je považován za spouštěcí oblast. Na primárním oddílu tato oblast obsahuje zaváděcí položku, kus kódu, který zahájí proces načítání operačního systému při spuštění. Tato oblast se na jiných oddílech nepoužívá. Zbývající sektory jsou sloučeny do logických bloků o velikosti 1, 2 nebo 4 kilobajty. Logický blok je nejmenší adresovatelná část dat: data každého souboru zabírají celé číslo bloků. Bloky se zase spojují do skupin bloků. Skupiny bloků a bloky ve skupině jsou číslovány postupně, počínaje 1.

Datové struktury používané při práci se souborovým systémem ext2fs jsou popsány v záhlaví souboru /usr/include/linux/ext2fs .h.

Superblok slouží jako výchozí bod souborového systému a vše ukládá

informace o ní. Má velikost 1024 bajtů a je umístěn v offsetu 1024 bajtů od začátku systému souborů. Je duplikován v každé skupině bloků, což vám umožňuje rychle jej obnovit po selhání. Superblok určuje velikost souborového systému, maximální počet souborů v oddílu, množství volného místa a obsahuje informace o tom, kde hledat nepřidělené oblasti. Když se OS spustí, superblok se načte do paměti a všechny změny v souborovém systému se nejprve projeví v kopii superbloku umístěné v OS a zapisují se na disk pouze periodicky. To zlepšuje výkon systému, protože mnoho uživatelů a procesů neustále aktualizuje soubory. Na druhou stranu při zastavení systému je nutné superblok zapsat na disk, což neumožňuje vypnout počítač pouhým vypnutím napájení. Jinak při příštím spuštění nebudou informace zaznamenané v opalovacím krému

odpovídající skutečnému stavu souborového systému.

Za superblokem následuje popis (deskriptor) skupiny bloků. Informace v něm uložené vám umožňují najít bitmapy bloků a inodů a také tabulku inodů.

Bitmapa bloku je struktura, ve které každý bit udává, zda je souboru přidělen stejný blok. Hodnota 1 znamená, že blok je zaneprázdněn. Tato mapa slouží k vyhledávání volných bloků v případech, kdy je potřeba alokovat místo pro soubor.

Bitmapa inodů plní podobnou funkci jako tabulka inodů: ukazuje, které inody se používají.

Každý soubor má jeden a pouze jeden inode (inode, i-uzel, informační uzel), který je identifikován svým sériovým číslem - indexem souboru. Inode ukládá metadata souboru. Mezi nimi jsou všechny atributy souboru kromě jeho názvu a ukazatele na data souboru.

Pro běžný soubor nebo adresář je tento ukazatel polem 15 blokových adres. Prvních 12 adres v tomto poli jsou přímé odkazy na čísla bloků, ve kterých jsou uložena data souboru. Pokud se data nevejdou do 12 bloků, aktivuje se mechanismus nepřímého adresování. Další adresa v tomto poli je nepřímý odkaz, tedy adresa bloku, který uchovává seznam adres následujících bloků s daty z tohoto souboru.

Kolik bloků dat lze tímto způsobem adresovat? Adresa bloku zabírá 4 bajty, blok, jak již bylo řečeno, 1, 2 nebo 4 kilobajty. To znamená, že nepřímým adresováním je možné umístit 256 - 1024 bloků.

Co když je soubor ještě delší? Další adresa v poli ukazatelů ukazuje na blok dvojitého nepřímého adresování (dvojitý nepřímý blok). Tento blok obsahuje seznam adres bloků, které zase obsahují seznamy adres následujících datových bloků.

A konečně poslední adresa v poli ukazatelů určuje adresu trojitého nepřímého bloku, tedy bloku se seznamem adres bloku, které jsou dvojitými nepřímými bloky.

Zůstává nejasné, kde je název souboru, pokud není mezi daty souboru nebo jeho metadaty. V systémech podobných UNIXu je jméno souboru atributem nikoli samotného souboru, ale souborového systému, chápaného jako logická adresářová struktura. Název souboru je uložen pouze v adresáři, ke kterému je soubor přiřazen, a nikde jinde. Z toho plynou zajímavé důsledky.

Za prvé, jeden inode může odpovídat libovolnému počtu jmen přiřazených různým adresářům, z nichž všechny jsou skutečné. Počet jmen (pevných odkazů) se počítá v inodu. Toto je číslo, které můžete vidět pomocí příkazu Is -1.

Za druhé, smazání souboru jednoduše znamená odstranění jeho záznamu z dat adresáře a snížení počtu odkazů o 1.

Za třetí, název můžete přiřadit pouze číslu inodu ve stejném systému souborů, což je důvod, proč nemůžete vytvořit pevný odkaz na jiný systém souborů (je možný symbolický, má jiný mechanismus ukládání).

Samotný adresář je přiřazen ke svému nadřazenému adresáři stejným způsobem. Kořenový adresář se vždy zapisuje do inodu číslo 2 (číslo 1 je vyhrazeno pro seznam adres chybných bloků). Každý adresář ukládá odkaz na sebe a na svůj nadřazený adresář – to jsou pseudo-podadresáře „.“ A "..".

Počet odkazů na adresář se tedy rovná počtu jeho podadresářů plus dva.

Data adresáře jsou propojeným seznamem s položkami proměnné délky a vypadají asi takto:

Struktura adresářů v ext2fs

A co soubory fyzického zařízení? Mohou být umístěny ve stejných adresářích jako běžné soubory: v adresáři nejsou žádná data, která by naznačovala, že název patří souboru na disku nebo zařízení. Rozdíl je na úrovni inodů. Pokud i-uzel běžného souboru ukazuje na bloky disku, kde jsou uložena jeho data, pak i-uzel souboru zařízení obsahuje ukazatel na seznam ovladačů zařízení v jádře - prvek seznamu, který odpovídá hlavní číslo zařízení:

Rozdíl mezi běžným souborem a souborem zařízení

Vlastnosti systému souborů ext2fs:

Maximální velikost systému souborů je 4 TB.

Maximální velikost souboru je 2 GB.

Maximální délka názvu souboru je 255 znaků.

Minimální velikost bloku je 1024 bajtů.

Počet přidělených inodů je 1 na 4096 bajtů oddílu.




Horní