Typy souborů Linuxu a jejich vlastnosti. Soubor a porušení souborového systému EXT2 Systém souborů EXT2 3

Nyní popisujeme nejoblíbenější systémový souborový systém Linux - EXT2. První vydání Linuxu používalo systém souborů Minix 1, který měl krátké názvy souborů a maximální velikost souboru 64 MB. Systém souborů Minix 1 byl nakonec nahrazen prvním rozšířeným systémem EXT souborů, který umožňuje používat delší názvy souborů a větší velikosti souborů. Vzhledem k nízké účinnosti (ve smyslu výkonnosti) byl systém EXT nahrazen svou sekvencí EXT2, která je stále široce používána.

Diskový oddíl s ext2 obsahuje systém souborů s obrázkem na obr. 10.17 Rozvržení. Blok 0 není používán systémem Linux a obsahuje kód zatížení počítače. Po bloku 0 je diskový oddíl rozdělen do bloků bloků (s výjimkou hranic diskových válců). Každá skupina je organizována následovně.


První blok je superblock (superblock), který ukládá informace o rozložení systému souborů, včetně počtu i-uzlů, počtu bloků disku, začátek seznamu volných bloků disků (to je obvykle několik set prvků ). Poté následuje popisovač skupiny obsahující informace o umístění bitových polí, počet volných bloků a i-uzlů ve skupině, jakož i počet adresářů ve skupině. Tyto informace jsou důležité, protože systém souborů EXT2 se snaží distribuovat adresáře rovnoměrně po celém disku.

Ve dvou bitových polích jsou zaznamenány volné bloky a volné i-uzly (to je také zděděno z systému souborů Minix 1 a rozlišuje jej od většiny systémů souborů UNIX, ve kterém se seznam používá pro volné bloky). Velikost každého bitového pole se rovná jednomu bloku. S velikostí bloku 1 KB toto schéma omezuje velikost bloků bloků 8192 bloků a 8192 I-uzlů. První číslo je skutečným omezením a druhý je prakticky ne. S bloky 4 KB čísel čtyřikrát více.

Pak se nacházejí samotné i-uzly. Jsou číslovány od 1 do určitého maxima. Velikost každého I-uzlu je 128 bajtů a popisuje to přesně jeden soubor. I-uzel obsahuje informace o účtu (včetně celého zpětného volání, které jednoduše berou z I-uzlu), stejně jako dostatečné množství informací k určení umístění všech bloků disku, které obsahují data souborů.

Po uzlech I jsou datové bloky. Všechny soubory a adresáře jsou uloženy zde. Pokud se soubor nebo adresář skládá z více než jednoho bloku, pak se tyto bloky nemusí být nepřetržité na disku. Ve skutečnosti jsou bloky velkého souboru s největší pravděpodobností rozptýleny po celém disku.

Odpovídající katalogy I-uzlů jsou rozptýleny přes všechny skupiny diskových bloků. Ext2 se snaží uspořádat běžné soubory ve stejném bloku bloků jako nadřazeného adresáře a datové soubory jsou ve stejném bloku jako zdrojový kód I-uzel (za předpokladu, že je dostatek místa). Tato myšlenka byla vypůjčena ze systému souborového systému Berkeley Fast File (McKusick et al., 1984). Bitová pole se používají k rychlé rozhodnutí týkající se výběru

místa pro nové datové systémové daty.

Pokud jsou zvýrazněny nové bloky souborů, EXT2 také provádí preemptivní výběr (Předtím) několika (osm) dalších bloků pro stejný soubor (minimalizovat fragmentaci souboru z důvodu budoucích operací pro záznam). Toto schéma distribuuje systém souborů po celém disku. Má také dobrý výkon (díky svému trendu směrem k příbuznému umístění a snížené fragmentaci).

Pro přístup k souboru musíte nejprve použít jeden z systémových volání Linux (například OPEN), pro které chcete zadat cestu k souboru. Tato cesta rozebírala a komponenty jeho katalogů jsou z něj extrahovány. Pokud je specifikována relativní cesta, vyhledávání začíná z aktuálního katalogu procesu, jinak - z kořenového adresáře. V každém případě je I-uzel pro první adresář snadno naleznete: v deskriptoru procesu je na něj ukazatel nebo (v případě kořenového adresáře) je uložen na konkrétním disku na disku.

Adresář umožňuje používat názvy souborů až 255 znaků (obr. 10.18). Každý adresář se skládá z určitého počtu bloků disku (takže adresář lze zapsat na disk Atomino). V adresáři jsou prvky pro soubory a adresáře v neoriginované objednávce (každá položka přímo následuje předchozí). Prvky nemohou překročit hranice bloků, takže na konci každého kotoučového bloku obvykle existuje řada nevyužitých bytů.


Každý vstup adresáře na Obr. 10.18 se skládá ze čtyř polí pevné délky a jedno pole s proměnnou délkou. První pole je číslo I-uzlu 19 pro kolosální soubor, 42 pro objemný a 88 soubor pro adresář BigDir. Následuje pole REC_LEN, které hlásí velikost celé položky adresáře v bajtech (případně spolu s dalšími zástupnými symboly po názvu). Toto pole je nutné najít další záznam (v případě, kdy je název souboru doplněn neznámým číslem bajtů). Na obrázku je toto pole označeno šipkou. Pak je zde pole typu pole, adresář atd. Poslední pole pevné délky obsahuje délku názvu souboru v bajtech (8, 10 a 6 pro tento příklad). Nakonec název souboru je v nulovém bajtu sám a doplněn na 32bitové hranici. Dále mohou následovat další bajty poštovních schránek.

Na Obr. 10.18, B je zobrazen stejný adresář po odstranění prvku pro objemný. Vše, co se provádí v katalogu - zvyšuje počet v velikosti záznamu předchozího kolosálního souboru a položky vstupu adresáře pro vzdálený objemný soubor jsou transformovány do prvních nahrávacích výplňů. Následně tyto bajty lze použít k záznamu při vytváření nového souboru.

Vzhledem k tomu, že vyhledávání v adresářích se provádí lineárně, pak vyhledávání záznamu, který je na konci velkého adresáře trvat dlouho. Systém proto podporuje adresáře mezipaměti, ke kterým byl nedávno proveden přístup. Vyhledávání v mezipaměti je provedeno názvem souboru a pokud je nalezen, pak drahé lineární vyhledávání již není potřeba. Objekt Dentry je zadán do mezipaměti prvků adresářů pro každou ze součástí cesty a (přes jeho I-uzel) hledá v adresáři následujících položek cesty (dokud není nalezen skutečný soubor I-uzel).

Chcete-li například najít soubor zadaný absolutní cestou (například / usr / AST / soubor), musí být provedeny následující kroky. Za prvé, systém najde kořenový adresář, který obvykle používá i-uzel s číslem 2 (zejména když I-uzel s číslem 1 je vyhrazen pro práci se špatnými bloky). Umístěte odpovídající prvek v mezipaměti adresářových položek (pro budoucí vyhledávání kořenového katalogu). Poté hledá řetězec "usr" v kořenovém adresáři, aby se počet I-uzel pro adresář / usr (který je také zadán do mezipaměti prvků adresářů). Tento I-uzel je pak číst a diskové bloky jsou načteny z něj, takže si můžete přečíst adresář / usr a hledat řádek AST v něm. Po nalezení odpovídajícího prvku můžete definovat počet I-uzel pro / usr / AST. Mít toto číslo I-uzlu si můžete přečíst a najít adresářové bloky. Nakonec hledáme "soubor" a najdeme počet jeho I-uzel. Použití relativní cesty je tedy pro uživatele výhodnější, ale také snižuje množství operace pro systém.

Pokud je soubor k dispozici, systém načte číslo I-uzel a používá jej jako index tabulky I-uzlů (na disku) pro vyhledávání odpovídajícího I-uzlu a přečíst si do paměti. Tento I-uzel je umístěn v tabulce I-uzlů (tabulka I-uzlů) - datová struktura jádra, která obsahuje všechny i-uzly pro aktuálně otevřené soubory a adresáře. Formát I-uzlů by měl obsahovat (minimálně) Všechna pole, která vrátí stat systém volání, takže volání Stat může pracovat (viz tabulka 10.10). V záložce. 10.13 ukazuje některé pole struktury I-uzlu podporovanou v systému Linux. Skutečná struktura I-uzlu obsahuje mnohem více polí, protože stejná struktura slouží k reprezentaci adresářů, zařízení a dalších speciálních souborů. Struktura I-uzlu také obsahuje také vyhrazena pro budoucí použití pole. Příběh ukázal, že nepoužité bity jsou dlouho zůstávají bez záležitostí.

Podívejme se, jak systém čte soubor. Nezapomeňte, že typický hovor procedury knihovny pro spuštění systémového volání čte následovně:

n \u003d čtení (fd, vyrovnávací paměť, nbytes);


Když jádro obdrží kontrolu, pak vše, co může začít - tyto tři parametry a informace ve svých interních tabulkách (související s uživatelem). Jeden z prvků těchto interních tabulek je řada deskriptorů souborů. To je indexováno deskriptory souborů a obsahuje jeden prvek každému otevřeným souboru (na určitou maximální částku, výchozí hodnota je obvykle 32).

Myšlenkou je začít s tímto deskriptorem souborů a dokončit odpovídající bublinu. Podívejme se na jeden zcela možný schéma: Umístěme ukazatel Pozel do tabulky deskriptorů souborů. Navzdory jednoduchosti tato metoda (bohužel) nefunguje. Problém je následující. S každým deskriptorem souborů musí být v souboru, který definuje bajt v souboru, ze kterého začne další operace čtení nebo záznamu. Kde by měl být tento ukazatel uložen? Jednou z možností je umístit ji do tabulky autobusů. Tento přístup však nebude schopen pracovat, pokud několik procesů, které nejsou navzájem připojeny současně, otevře stejný soubor, protože každý proces by měl mít vlastní ukazatel.

Druhým řešením řešení je umístit ukazatel v tabulce deskriptory. V tomto případě má každý soubor otevření procesu v souboru vlastní pozici. Bohužel takový režim také nefunguje, ale příčina selhání v tomto případě není tak zřejmé a souvisí s povahou sdílení souborů v systému Linuxu. Zvažte skript s shell Script 5, skládající se ze dvou příkazů (P1 a P2), které by měly být prováděny zase. Pokud je skript volán příkazovým řádkem

očekává se, že příkaz P1 bude zapisovat svůj výstup do souboru X a pak příkaz P2 bude také zapisovat svůj výstup do souboru X, počínaje místem, kde příkaz P1 zastavil.

Když shell spustí proces P1, soubor X bude nejprve prázdný, takže příkaz P1 jednoduše začne psát do souboru v pozici 0. Nicméně, když P1 dokončí svou práci, určitý mechanismus bude potřebovat, že zajišťuje, že proces P2 bude potřebovat Viz jako počáteční pozice není 0 (a to je, jak se stane, pokud je pozice v popisovačech souborů v souboru v tabulce) a hodnota, na které se PI zastavil.

Způsob, jakým se provádí, je znázorněno na Obr. 10.19. Zaměření je zadat novou tabulku - otevřenou tabulku Popis souboru (Otevřít tabulku popisu souboru) - mezi tabulkou deskriptorů souborů a tabulkou I-uzlů a uložte ukazatel v souboru (stejně jako bit čtení / zápis) . Na obrázku je mateřský proces skořápka a dcera je první proces PI a pak proces P2. Když shell vytvoří proces PI, jeho uživatelská struktura (včetně tabulky deskriptorů souborů) je přesnou kopií stejné membránové struktury, takže oba obsahují ukazatele do stejné tabulky popisu otevřených souborů. Když procespi dokončí svou práci, deskriptor souboru Shell i nadále specifikovat tabulku Popis otevřených souborů, která obsahuje polohu pozice P1 v souboru. Když nyní Shell vytvoří proces P2, pak nový podřízený proces automaticky zdědí pozici v souboru, pokud není nový proces, ani Shell není povinen znát aktuální hodnotu této pozice.


Pokud nějaký cizí proces otevře soubor, obdrží vlastní záznam v tabulce popis tabulky s pozicí v souboru, a to je nutné. Úkolem tabulky Popis otevřeného souboru je tedy povolit procesům rodiče a dítěte sdílet jeden ukazatel v souboru, ale pro zahraniční procesy přidělit osobní ukazatele.

Takže (návrat do problému čtení čtení čtení), ukázali jsme, jak je stanovena pozice v souboru a I-uzlu. I-uzel obsahuje diskové adresy prvních 12 bloků souborů. Pokud pozice v souboru spadne do prvních 12 bloků, přečtěte si požadovaný blok souborů a data se zkopírují uživateli. Pro soubory, jejíž délka přesahuje 12 bloků, I-uzel obsahuje diskovou adresu jednotného nepřímého bloku (jeden nepřímý blok) (obr. 10.19). Tento blok obsahuje diskové adresy dalších bloků disku. Pokud je například velikost bloku 1 kb, a adresa disku trvá 4 bajty, jediná nepřímá jednotka může uložit až 256 diskových adres. Toto schéma umožňuje podporovat soubory až 268 kB.

ext2. (také volal jako ext2fs.) - Druhý rozšířený souborový systém(Druhý rozšířený souborový systém) je souborový systém postavený na jádru Linuxu. Stvořitel a vývojář EXT2 je REMY CARD. Systém souborů EXT2 byl postaven v návratu za starý, předchozí verze - EXT.

Podle těchto ukazatelů jako rychlosti a výkonu může tento souborový systém sloužit jako reference. To je řečeno o výsledcích testů výkonového systému souborů. Například v testech pro rychlost konzistentního čtení a psaní, které prováděly technické centrum Dell, soubor File EXT2 překročí ext3 a je nižší při čtení rychlosti pouze modernější ext4.

Hlavní nevýhodou EXT2 je, že to není systém deníku. Tato nevýhoda byla však vyloučena v dalším souborovém systému - EXT3.

eXT2 se používá na flash karet a pevné stavy (SSD), protože nedostatek žurnálů je výhoda při práci s pohonem s omezeními na počtu cyklů záznamů.

Historie vytváření ext2.

V době rychlého vývoje systému Linuxu použil systém minixy souborů. Byla to poměrně vysoká stabilita, ale bylo to 16-bit. V důsledku toho existoval přísné omezení v 64 MB do sekce. Kromě toho došlo k omezení maximální délky názvu souboru, což bylo 14 znaků.

Tato omezení v souhrnu byly důvodem pro rozvoj "vylepšený souborový systém" (tedy termín " Rozšířený souborový systém »). Měla úkol vyřešit dva minix klíčových problémů. Nový souborový systém byl publikován v dubnu 1992. Bylo to ext, rozšířil limit velikosti souboru na 2 gigabajty a nainstaloval limit délku názvu souboru v 255 znakech.

Navzdory úspěchu nového souborového systému však zůstal docela mnoho nevyřešených problémů. Například neexistovala žádná podpora pro samostatný přístup, nebyla tam žádná časová razítka modifikace dat. Potřeba řešit tyto úkoly a sloužil jako motiv k vytvoření další verze rozšířeného systému souborů EXT2 (" Druhý rozšířený souborový systém »). Ext2 byl vyvinut v lednu 1993, také implementuje odpovídající seznamy řízení přístupu ACL a rozšířené atributy souborů.

Logická organizace EXT2.

EXT2 Directory Hierarchie graf je prezentován ve formě sítě. Důvodem je skutečnost, že jeden soubor může okamžitě zadat několik adresářů.

Všechny typy souborů mají symbolické názvy. V hierarchicky organizovaných souborových systémech se používají tři typy jmen: jednoduché, kompozitní a relativní. Takže v ext2. V případě jednoduchého jména je omezení, že jeho délka by neměla překročit 255 znaků, navíc musí být v názvu přítomen symbol null a lomítko.

Pokud jde o symbol , omezení jsou spojena s reprezentací řádků v jazyce SI, v případě symbolu lomítka je vše, že se používá jako dělící charakter mezi adresáři.

Celé jméno je řetěz jednoduchých symbolických jmen všech adresářů, kterým je k tomuto souboru spuštěna cesta z kořene. V EXT2 může soubor zadat několik adresářů, znamená to, že může mít několik úplných jmen (jeden soubor je několik plných jmen). Ale stejně, celé jméno definuje soubor.

Atributy EXT2:

  • zadejte a přístupová práva k souboru,
  • vlastník, přístupová skupina,
  • informace o povolených operacích,
  • time Time, poslední datum přístupu, poslední datum změny a poslední čas odstranění,
  • aktuální velikost souboru
  • specifikace souboru:
    • pravidelný soubor
    • katalog,
    • zařízení orientované na zařízení,
    • zařízení pro blokování souborů,
    • jmenovaný kanál
    • symbolický odkaz
  • počet obsazených bloků,
  • ostatní

Atributy souborů jsou obsaženy ve speciálních tabulkách a nikoli v adresářích, protože to může být v jednoduchých souborových systémech. V důsledku toho má adresář velmi jednoduchou strukturu sestávající ze dvou částí: počet deskriptoru indexu a názvu.

Fyzická organizace EXT2.

Struktura disku disku

Jako součást EXT2 lze rozlišit následující:

  • bloky a bloky bloků;
  • deskriptor indexu;
  • superblock.

Celý prostor diskového oddílu je rozdělen do pevných bloků, blokuje více sektoru velikosti (1024, 2048, 4096 nebo 8192 bajtů). Velikost bloku je specifikována při vytváření souborového systému v sekci disku. Všechny bloky jsou přiřazeny sekvenční čísla. Pro snížení fragmentace a počet pohybů hlav pevných disků při čtení velkých datových polí jsou bloky kombinovány do skupin.

Základním pojmem souborového systému je deskriptor indexu (nazývá také inoda - informační uzel.). Jedná se o speciální strukturu obsahující informace o atributech a fyzickém umístění souboru. Index Decapscastors jsou kombinovány do tabulky obsažené na začátku každého bloku bloků. Superblock je hlavní prvek souboru EXT2. Obsahuje obecné informace o systému souborů. SuperBlock se nachází v 1024 bajtech od začátku sekce. Integrita superblock určuje funkčnost systému souborů. OS vytváří několik záložních kopií superblock - v případě poškození oddílu. V dalším bloku po superblock je globální tabulka deskriptorů - popis blokových skupin ve formě pole s obecnými informacemi o všech skupinách bloků.

Blok Group.

Všechny bloky Ext2 bloků jsou rozděleny do skupin. Pro každou skupinu je v tabulce globální deskriptoru vytvořen samostatný záznam. Tato položka ukládá hlavní parametry, stejně jako: Číslo bloku v bitmapech a tabulkách, počet volných bloků ve skupině, počet deskriptorů indexu obsahující adresáře.

Bitová mapa Blok. - Jedná se o systém, ve kterém každý bit informuje, zda soubor odpovídající jej má soubor. Pokud je bit 1, pak je blok obsazeno. Podobná funkce je prováděna bitmapou deskriptorů indexu: ukazuje, které deskriptory indexu jsou zaneprázdněni a které nejsou. Linux jádro se pokusí rovnoměrně distribuovat adresář inode ve skupinách a inode soubory - přesunout do skupiny s mateřským katalogem. Zbývající místo se zobrazí v tabulce, protože data jsou přiřazena k ukládání souborů.

Systém datového adresování dat

Systém datového adresování je jedním z nejzávažnějších a klíčových komponent souborového systému. Díky tomu je požadovaný soubor mezi mnoha prázdnými nebo obsazenými bloky na disku.

ext2 aplikuje následující schéma blokování souborů. Pro ukládání adresy souboru jsou izolovány 15 polí, z nichž každá se skládá ze 4 bajtů. Pokud se soubor vejde do 12 bloků, čísla příslušných klastrů jsou uvedeny v prvních dvanácti adresách. Pokud velikost souboru překročí 12 bloků, následující pole obsahuje adresu clusteru, ve které lze umístit čísla následujících bloků souborů. Takže třinácté pole se používá pro nepřímé adresování.

S maximální velikostí bloku v 4096 bajtech může cluster odpovídající 13. poli obsahovat až 1024 čísel následujících bloků souborů. Pokud velikost souboru přesahuje 12 + 1024 bloků, použije se 14. pole, ve kterém je umístěna adresa clusteru obsahující čísla clusteru 1024, z nichž každá se vztahuje na 1024 bloku souboru. Existuje již dvojnásobná nepřímé adresování. A pokud soubor obsahuje více než 12 + 1024 + 1048576 bloků, použije se poslední 15. pole pro trojité nepřímé adresy.

Takový adresářový systém umožňuje mít soubory, přes 2 TB s maximální velikostí bloku v 4096 bajtech.

Pokud máte dvě operační systémy, jsou nainstalovány Windows a Linux, pak byste pravděpodobně chtěli být obsaženy na sekcích volného operačního systému přímo ze systému Windows bez překládky počítače.

Bohužel, podpora sekcí OS Linux v systému Windows není poskytována. A marně. Zdá se mi, že by to mohlo být krásné gesto od společnosti Microsoft.

Podstatou problému je, že systém Windows používá systém souborů NTFS a Linux má svůj vlastní způsob, jak organizovat soubory, rozšířený souborový systém, nejnovější verzi, která má sekvenci číslo 4.

Linux je přátelštější pro své uživatele, spíše než její obchodní sestra: V Linuxu je výchozí nastavení podporováno systémem souborů Windows NTFS. Samozřejmě nebudete moci nainstalovat Linux na sekci NTFS, ale můžete z toho číst a zapisovat data.

Ext2 IFS.

EXT2 IFS podporuje Windows NT4.0 / 2000 / XP / 2003 / Vista / 2008 verze X86 a X64 a umožňuje zobrazit obsah Sekce Linux EXT2 a může také zaznamenat. Utility nastavuje systémový ovladač EXT2FS.SYS, který rozšiřuje možnosti systému Windows a obsahuje plnou podporu pro ext2 v něm: oddíly Ext2 jsou přiřazeny písmena disků a soubory a složky se na nich zobrazují v dialogových oknech všech aplikací, například , v průzkumníku.

Ext2 fsd.

Ext2 FSD je volný ovladač pro systémy Windows (2K / XP / Vista / 7 verze X86 a X64). Stejně jako předchozí nástroj, který je ve své podstatě také řidič, zahrnuje plnou podporu systému EXT2 souborů v systému Windows.

LTOOLS - příkazový řádek Sada nástrojů, která umožňuje číst a nahrávat data na / z Linux EXT2, EXT3 a Reiserfs (standardní systémy Linuxu) z DOS nebo Windows.

Existuje verze programu s grafickým skořápkou (napsanými na Java) - LTOOLSGUI, stejně jako verze s grafickou skořápkou.

Ext2Read.

Pro dezert jako vždy nejtěžší.

Ext2Read je nástroj založený na souboru Manager, který umožňuje zobrazit a zapisovat do sekcí EXT2 / EXT3 / EXT4. Podporuje LVM2 a který ji odlišuje od jiných programů tohoto přehledu, soubor File EXT4. Vložená podpora pro rekurzivní kopírování adresářů.

A tady je druhý dezert. Zpočátku bylo řečeno, že dobré gesto od společnosti Microsoft bude zahrnuta podpora pro Linuxové sekce ve Windows ve výchozím nastavení.

Gesto bylo stále děláno na 20. výročí Linuxu. Vidíte se.

To je vše. Děkuji za pozornost. Půjdu bojovat z května broušky. Jejich na jaře je hodně sooo. 🙂.

Vladimir Miskov.

Architektura souborového systému EXT2

Článek pojednává o logické struktuře systému souborového systému EXT2 operačního systému Linuxu.

Základní součásti souborového systému EXT2

Stejně jako v systému souborového systému UNIX lze v rámci systému souborového systému EXT2 rozlišovat následující komponenty:

  • bloky a bloky bloků;
  • informační uzel;
  • superblock.

Bloky a bloky bloků

Celý prostor diskového oddílu je rozdělen do bloků pevné velikosti, velikosti sektoru sektoru - 1024, 2048 a 4096 bajtů. Velikost bloku je indikována při vytváření systému souborů na pevném disku. Menší velikost bloku šetří místo na pevném disku, ale také omezuje maximální velikost systému souborů. Všechny bloky mají sekvenční čísla. Aby se snížila fragmentace a počet pohybů hlav pevných disků při čtení velkých datových polí, bloky jsou kombinovány do skupin.

Informační uzel

Základním pojmem souborového systému je informační uzel, informační uzel nebo inode. Jedná se o speciální strukturu, která obsahuje informace o atributech a fyzickém umístění souboru. Atributy souborů jsou jeho typ (Normální soubor, adresář atd.), Přístupová práva, identifikátor vlastníkem, velikost, čas vytvoření. Informace o fyzické lokalitě jsou sekvencí absolutních bloků bloků obsahujících data souborů.

Superblock.

Superblock je hlavní prvek souboru EXT2. Obsahuje následující informace o systému souborů (neúplný seznam):

  • celkový počet bloků a inode v systému souborů;
  • počet volných bloků a inode v systému souborů;
  • velikost bloku systému souborů;
  • počet bloků a inode ve skupině;
  • inoda velikosti;
  • identifikátor systému souborů;
  • číslo prvního datového bloku.

Jinými slovy, jedná se o blokové číslo obsahující superblock. Toto číslo je vždy rovno 0, pokud velikost bloku systému souborů je větší než 1024 bajtů, a 1, pokud je velikost bloku 1024 bajtů.

Funkčnost systémového systému přímo závisí na integritě superblock. Operační systém vytvoří několik záložních kopií superblock, aby bylo možné jej obnovit v případě poškození. Hlavní kopie je umístěna na posunu 1024 bajtů od začátku sekce, na kterém je vytvořen souborový systém (prvních 1024 bajtů jsou vyhrazeny pro operační systém Bootloader).

Časné verze systému EXT2 vytvořily kopie superblock na začátku každého bloku bloků. To vedlo k velké ztrátě místa na disku, takže později bylo sníženo počet záložních kopií superblock, a skupiny bloků 0, 1, 3, 5 a 7 byly přidělovány pro jejich umístění.

Formát skupiny Blok Group.

Zobecněný strukturální schéma systému EXT2 je uveden na Obr. jeden.

Téměř všechny blokové skupiny mají stejný formát. V každé skupině, kromě informačních bloků, informace o zaměstnávání bloků a inode skupin ve formě bitmapu jsou uloženy. Blok bloků 0 zahrnuje také superblocks a deskriptory tabulky skupin, které zvážíme níže.

Bittová mapa pracovních bloků se obvykle nachází v prvním bloku skupiny. Pokud je ve skupině přítomna záložní kopie, bitmapa je umístěna ve druhém bloku skupiny. Velikost bitmapy je jeden blok. Každý kousek této karty označuje stav bloku. Pokud je bit nastaven (1), blok je zaneprázdněn, pokud je blok resetován (0) - blok je volný. První blok skupiny odpovídá nulovému kousku karty, druhý blok - první bit atd.

Inoda, umístěná ve stejné skupině, se shromažďuje v tabulce. Ve skupině inode Mapa Bite Mapa Mapa každý bit charakterizuje stav prvku v tabulce skupiny inode.

Každý blok bloků je popsán pomocí deskriptoru skupiny bloků. Skupinová rukojeť je struktura, která obsahuje informace o adresách bitmapy bloků bloků, inode obsazené bitmapy a inode tabulku odpovídající skupiny. Všechny deskriptory skupiny jsou shromážděny v tabulce deskriptorů skupiny, která je uložena ve skupině bloků 0. Stejně jako pro superblock, operační systém vytvoří záložní kopie deskriptorů tabulky.

Algoritmus čtení souboru

Každý inode, stejně jako blok, má pořadové číslo, jedinečné v systému souborů a obsahuje informace pouze o jediném souboru. Pro přístup k obsahu souboru musíte znát pořadové číslo odpovídajícího vstupu odpovídajícího.

Jak je uvedeno výše, informace o fyzickém umístění souboru jsou obsaženy v inode. Tyto informace jsou sekvencí 32bitových blokových čísel obsahujících data souborů (obr. 1). Prvních 12 čísel jsou přímé odkazy na informační bloky (číslo přímého bloků). 13. číslo je nepřímý odkaz (číslo nepřímých bloků). Obsahuje adresu bloku, ve kterém jsou uloženy adresy informačních bloků. 14. místnost je dvojitý nepřímý odkaz (číslo dvojité bloky), 15. číslo je trojitý nepřímý odkaz (trojnásobné bloky).

Název souboru v Inode není součástí dodávky, nastavení shody mezi názvy souborů a čísly sekvencí inode se provádí prostřednictvím adresářů.

Katalogy

Soubory v systému UNIX a POSIX jsou uloženy v systému hierarchického souboru stromu. Kořen souborového systému je kořenový adresář označený symbolem "/". Každý mezilehlý uzel ve stromovém stromu souborů je adresář. Konečné vrcholy stromového systému souborů jsou buď prázdné adresáře nebo soubory. Absolutní název cesty souboru se skládá z názvů všech adresářů vedoucích do zadaného souboru, počínaje kořenem adresáře. Takže název skladby /Home/test.File znamená, že soubor test.file je umístěn v domovském adresáři, který je zase umístěn v katalogu kořenového adresáře "/".

Katalog, stejně jako soubor, je popsán pomocí Inode. Obsah adresáře je řada záznamů, z nichž každá obsahuje informace o souboru, který je "uvnitř" aktuálního adresáře.

Záznam adresáře má následující formát:

  • sekvenční číslo inode;
  • délka nahrávání v bajtech;
  • název souboru;
  • délka názvu souboru.

Hledání souboru inode vždy spustí s kořenovým adresářem. Například, aby se získal číslo pořadí inode v kořenovém adresáři, musí operační systém získat obsah kořenového adresáře, najít jej v něm s názvem tohoto souboru a odebrat číslo souboru inody z tohoto záznamu.

Několik čísel inode je rezervováno systémem souborů, jejich seznam je obsažen v souboru záhlaví:

* Speciální čísla inode

#Define ext2_bad_ino 1 / * špatné bloky inode * /

#Define ext2_root_in 2 / * root inode * /

#Define ext2_acl_idx_in 3 / * ACL inode * /

#Define ext2_acl_data_ino 4 / * ACL inode * /

#Define ext2_boot_loader_ino 5 / * zaváděcí inode * /

#Define ext2_undel_dir_ino 6 / * Undelete Directory Inode * /

Chcete-li nahrát kořenový adresář, je inoda vyhrazena na čísle 2 (root inode). Tento inode je v bloku bloků 0 a má druhou polohu v inode tabulce této skupiny. Počet prvních neopříkovaných inode je uložen v superblock.

Po určení čísla inode sekvence, jádro vypočítá číslo skupiny, ve kterém se tento inode nachází, a jeho poloha v tabulce skupiny inode. S ohledem na inodu z této pozice, operační systém přijímá úplné informace o souboru, včetně bloků bloků, ve kterých je obsah souboru uložen.

Počet bloků, ve kterém je umístěn inode, je vypočítán vzorcem:

skupina \u003d (inode_num - 1) / inodes_per_group

kde:

  • skupina.- požadovaný počet blokových bloků;
  • inode_num. - číslo sekvenčního čísla definujícího soubor;
  • inodes_per_group. - počet inode ve skupině (tyto informace jsou v superblock).

Poloha inody v tabulce skupiny inode je určena vzorcem:

index \u003d (inode_num - 1)% inodes_per_grupa

kde index je poloha inody v tabulce.

Zvažte příklad získávání obsahu souboru test.file umístěného v kořenovém adresáři. Chcete-li si přečíst soubor /test.file:

  • v poli Záznamy kořenového adresáře naleznete záznam o tomto souboru;
  • extrahovat číslo sekvence souboru inode, vypočítat číslo skupiny, ve kterém je tento inode umístěn;
  • od deskriptoru této skupiny extrahujete adresu skupiny inode skupiny;
  • vypočítat polohu inody v této tabulce;
  • přečtěte si soubor inode;
  • z inode extrahovat adresy adresy adresy a přečtěte si informace v těchto blokech.

Na Obr. 2 Podrobnosti Zobrazit čtení souborového souboru / testu. Soubor.

    Kroky 1-6 - čtení katalogu kořenů:

  1. Ze skupiny bloků 0 jsou deskriptory tabulky čteny.
  2. Z tabulky deskriptorů tabulky je skupina bloků skupiny 0 získána a adresa skupiny inode je od ní přečtena.
  3. Ze skupiny bloků 0 čte tabulku inody.
  4. Číslo sledování inode kořenového adresáře je pevné a rovné 2, takže druhý prvek je čten z inode skupiny 0, který obsahuje adresu bloku s obsahem kořenového adresáře. Předpokládejme, že tato jednotka je umístěna v bloku A. bloků.
  5. Ze skupiny bloků A je čten blokem obsahující záznamy kořenového adresáře.
  6. Hledaný záznam o záznamu s názvem "Test.File". Pokud je takový záznam nalezen, soubor inode "Test.File" je načten z něj.
  7. Definováním čísla inody můžete přistupovat k informačním blokům souboru (kroky 7-11):

  8. Číslo skupiny se vypočítá, ve kterém je tato inoda umístěna, a jeho poloha v tabulce skupiny inode (předpokládá, že číslo skupiny je rovno b, a poloha v tabulce - X).
  9. Z tabulky deskriptorů skupiny vyjměte deskriptor skupiny B, a adresa inode tabulky tohoto bloku bloků je od ní přečtena.
  10. Tabulka inode je čtena ze skupiny B blok.
  11. Z inode tabulky bloků bloků B přečte inode, umístěný v poloze X.
  12. Ze číst inode, adresy bloků s obsahem obsahu /test.file je načtena a informace jsou čteny z bloku se zadanou adresou.

Implementace softwaru algoritmu čtení souborů

Zdrojová data: Existuje oddíl pevného disku, na kterém je vytvořen systém EXT2. Tato část odpovídá souboru Device / Dev / HDA3. V kořenovém adresáři sekce je vytvořen domovský podadresář a obsahuje soubor test.file následujícího obsahu:

Žije Cystrus na jihu?

Ano, ale falešná instance!

1234567890-=

Nemyslím si špatně, to není nesmysl, ale zkušební cvičení z průběhu školení telegrafistů v jednotkách sdělení bývalého SSSR!

Pozornost! Je třeba vzít v úvahu jeden důležitý bod. Vytvořený soubor nebude okamžitě zaznamenán na disku a nejprve spadat do vyrovnávací paměti disku. Pokus o okamžité získání obsahu souboru podle výše uvedeného algoritmu nevede k ničemu, protože informace o tomto souboru nejsou fyzicky na disku. Je nutné "sílu" systém nahrávat diskovou vyrovnávací paměť na disku. Nejjednodušší způsob, jak to udělat, je provést operaci restartu. Proto po vytvoření souboru restartujte systém.

Naším úkolem je používání souboru Device / Dev / HDA3, pro čtení souboru /Home/test.file pomocí metody přímého přístupu k jeho informačním blokům.

Zvažte implementaci programu modulu, který tuto operaci provádí.

Soubory záhlaví:

#Zahrnout.

#Zahrnout.

#Zahrnout.

#Zahrnout.

#Zahrnout.

#Zahrnout.

Soubor záhlaví definuje strukturní typy popisující hlavní komponenty souborového systému EXT2 - Superblock, deskriptor skupiny bloků, informační uzel, vstup adresáře.

Zvažte stručně pole, která jsou zahrnuta do každé z těchto struktur:

  1. Strukturní struktura EXT2_SUPER_BLOCK:
    • __U32 s_inodes_count.- celkový počet inod v systému souborů;
    • __U32 s_blocks_count.- celkový počet bloků v systému souborů;
    • __U32 s_free_blocks_count.- počet volných bloků;
    • __U32 s_free_inodes_count.- počet volných inode;
    • __U32 s_first_data_block.- číslo prvního datového bloku (číslo bloku, ve kterém je superblock umístěn);
    • __U32 s_log_block_size. - Tato hodnota se používá k výpočtu velikosti bloku. Velikost bloku je určena vzorcem: Velikost bloku \u003d 1024<< s_log_block_size;
    • __U32 s_blocks_per_group. - počet bloků ve skupině;
    • __U32 s_inodes_per_group. - počet inod ve skupině;
    • __U16 s_magic. - identifikátor souborového systému EXT2 (0xEF53 podpis);
    • __U16 s_inode_size. - velikost informačního uzlu (inode);
    • __U32 s_first_ino. - Počet prvních než nejednoznačných inode.
  2. Struktura deskriptoru sestavy ext2_group_descstr Skupina konstrukce:
    • __U32 bg_block_bitmap.- bitmapa zaměstnání skupinových bloků;
    • __U32 bg_inode_bitmap.- Bitting mapa skupiny inode zaměstnání;
    • __U32 bg_inode_table. - Adresa inode tabulky.
  3. Struktura informační uzlu EXT2_INODE:
    • __U16 i_Mode je typ souboru a přístupových práv. Typ souboru Definujte bity 12-15 tohoto pole:
      • 0xA000.- symbolický odkaz;
      • 0x8000.- normální soubor;
      • 0x6000.- blokové blokové zařízení;
      • 0x4000.- katalog;
      • 0x2000.- symbolický soubor zařízení;
      • 0x1000.- FIFO kanál.
    • __U32 i_size. - velikost v bajtech;
    • __U32 i_atime.- poslední časový čas souborů;
    • __U32 i_CTIME. - čas vytvoření souboru;
    • __U32 i_mtime.- doba poslední modifikace;
    • __U32 i_blocks. - počet bloků obsazených souborem;
    • __U32 i_block. - adresy informačních bloků (včetně všech nepřímých odkazů).
  4. Hodnota ext2_n_blocks je definována v souboru:

    * Konstanty vzhledem k datovým blokům

    #Define ext2_ndir_blocks 12.

    #Define ext2_ind_block ext2_ndir_blocks.

    #define ext2_dind_block (ext2_ind_block + 1)

    #Define ext2_tind_block (ext2_dind_block + 1)

    #Define ext2_n_blocks (ext2_tind_block + 1)

  5. Struktura EXT2_DIR_ENTRY_2 Struktura vstupu adresáře:
  6. #Define ext2_name_len 255.

  • __U32 inode. - číslo inody;
  • __U16 Rec_len. - Délka záznamu adresáře;
  • __U8 název_len.- délka názvu souboru;
  • char název.název souboru.

Definujeme název sekce, na kterém je vytvořen souborový systém, globální struktury a proměnné.

#Define part_name "/ dev / hda3"

sTRUCT EXT2_SUPER_BLOCK SB;

/ * Vyrovnávací paměť pro ukládání deskriptorů tabulky * /

unsigned char buff_grp;

nepodepsaný znak buff; / * Informační vyrovnávací paměť * /

int indev; / * Zařízení zařízení zařízení * /

int blksize; / * SYSTEM SYSTÉMY SYSTÉMU SYSTÉMU * /

Definujeme několik funkcí, které potřebujeme pracovat:

Funkce čtení superblock:

void read_sb ()

MEMSET (& SB, 0.1024);

Jsme posunuti o 1024 bajtů od začátku sekce a přečtěte si superblock ke struktuře sestavy ext2_super_block sb:

IF (Ldeek (Indev, 1024.0)< 0) {

Perror ("ldeek");

Výstup (-1);

Pokud (Čtení (IndEV, Char * & SB, SizeOf (SB))< 0) {

Perror ("přečteno");

Výstup (-1);

Zkontrolujte identifikátor systému souborů:

IF (sb.s_magic! \u003d Ext2_super_magic) (

Printf ("Neznámý typ souborového systému!");

Výstup (-1);

Hodnota ext2_super_magic je definována v souboru záhlaví.

Zobrazí informace o systému souborů, který je umístěn v SuperBlock:

tiskf ("superblock info -----------");

Printf ("inodes počet -% u", sb.s_inodes_count);

Printf ("počet bloků -% u", sb.s_blocks_count);

Printf ("Velikost bloku -% u", 1024<< sb.s_log_block_size);

Printf (první inode -% d ", sb.s_first_ino);

Printf ("Magic - 0x% x", sb.s_magic);

Printf ("velikost inode -% d", sb.s_inode_size);

Printf ("inodes na skupinu -% u", sb.s_inodes_per_group);

Printf ("blosks na skupinu -% u", sb.s_blocks_per_group);

Printf ("První datový blok -% u", sb.s_first_data_block);

Vrátit se;

Funkce čtení tabulky deskriptory:

void read_gdt ()

Vypočítejte velikost bloku systému souborů:

Blksize \u003d 1024.<< sb.s_log_block_size

Tabulka deskriptorů skupiny je umístěna v bloku, který je umístěn ihned za prvním datovým blokem (pro superblock).

Přečtěte si tabulku:

IF (Ldeek (Indev, (SB.S_FIRST_DATA_BLOCK + 1) * blksize, 0)< 0) {

Perror ("ldeek");

Výstup (-1);

Pokud (čtení (indev, buff_grp, blksize)< 0) {

Perror ("přečteno");

Výstup (-1);

Vrátit se;

Funkce obsahu inode podle jeho čísla:

void get_inode (int inode_num, struct ext2_inode * in)

Vstupní funkce funkce - číslo inode sekvence a struktura sestavy ext2_inode.

Struktur Ext2_Group_desc GD;

U64 skupina, index, pos;

Vypočítejte počet skupin bloků, ve které je inoda umístěna s číslem inode_num sekvence:

Skupina \u003d (INDE_NUM - 1) / sb.s_inodes_per_group;

Z popisovačů tabulky odstraňte deskriptor skupiny a zkopírujte jej do struktury Struct EXT2_Group_DESC:

MEMSET ((VOID *) & GD, 0, SIZEOF (GD));

Memcpy (void *) & gd, buff_grp + (skupina * (Sizeof (gd))), velikost (gd));

Vypočítejte polohu inody s číslem inode_num sekvence v tabulce inode skupiny skupiny a přečtěte si tento inode ve struktuře struktury ext2_inode:

index \u003d (inode_num - 1)% sb.s_inodes_per_group;

POS \u003d ((__U64) gd.bg_inode_table) * blksize + (index * sb.s_inode_size);

Pread64 (Indev, in, sb.s_inode_size, POS);

Vrátit se;

Funkce čtení datového bloku:

void Read_iblock (Struct Ext2_inode * in, int blk_num)

U64 POS;

Parametry vstupního funkcí - struktura inode a číslo bloku (znamenají číslo z sekvence bloku adresy umístěné v inode).

Vypočítejte ofset na informační blok v sekci a přečtěte si tuto jednotku do globální vyrovnávací paměti buff:

Pos \u003d (__U64) in-\u003e i_block) * blksize;

Pread64 (Indev, Buff, Blksize, POS);

Vrátit se;

Funkce pro příjem obsahu kořenového katalogu:

void get_root_dentry ()

Struct ext2_inode v;

Číslo pořadí inode kořenového adresáře je známo, takže se dostaneme obsah inode kořenového adresáře a přečtěte si jeho obsah v vyrovnávací paměti:

get_inode (ext2_root_ino, & in);

Read_iblock (& \u200b\u200bin, 0);

Buff vyrovnávací paměť bude obsahovat obsah kořenového adresáře.

Vrátit se;

Funkce přijetí čísla inody podle názvu souboru:

int get_i_num (název char *)

Parametry vstupních funkcí - název souboru. Návratová hodnota - Sekvenční číslo inode.

Int i \u003d 0, rec_len \u003d 0;

Struct ext2_dir_entry_2 dent;

V buff Buffer je řada položek adresářů. Chcete-li určit číslo sekvence souboru inody, musíte najít v tomto poli s názvem tohoto souboru:

Protože já< 700; i++) {

Memcpy ((void *) & Dent, (buff + rec_len), SizeOf (Dent));

Jestliže (! Memcmp (dent.name, jméno, dent.name_len)) přerušení;

Rec_len + \u003d dent.rec_len;

Vrátit dent.inode;

A teď zapíšeme hlavní funkci:

int hlavní ()

Proměnné a struktury:

struct ext2_inode v;

// absolutní název cestovního souboru

Unsigned char * full_path \u003d "/Home/test.file";

Unsigned char buff1;

Statický int i \u003d 1;

Int n, i_num, outf, typ;

První znak ve jménu absolutní cesty souboru by měl být přímým lomítkem (/). Zkontroluj to:

Pokud (full_path! \u003d "/") (

Perror ("lomítko");

Výstup (-1);

Otevřete soubor zařízení, přečtěte si superblocks a deskriptory tabulky:

INDEV \u003d OTEVŘENO (PART_NAME, O_RDONLY);

Pokud (Indev.< 0) {

Perror ("otevřeno");

Výstup (-1);

Read_sb ();

Read_gdt ();

Dostáváme obsah kořenového katalogu:

get_root_dentry ();

Nyní Buff Buffer obsahuje všechny záznamy o kořenovém adresáři (pokud chcete, můžete je uložit do samostatného souboru). Nyní, mající záznamy kořenového adresáře, můžeme se dostat na obsah souboru test.file pomocí výše uvedeného souboru číst algoritmus. Pro tento účel organizujeme cyklus. V těle cyklu budeme analyzovat absolutní název cesty souboru, zvýraznění jeho prvků - podadresáře (je to jeden, domovský) a název vyhledávacího souboru (test.file). Pro každý prvek definujeme číslo sekvence inody, zvažujeme tento inde a poté získat obsah nulového bloku (ze sledu adresních bloků umístěných v inode):

zatímco (1) (1)

MEMSET (buff1.0, SizeOf (buff1));

Pro (n \u003d 0; n< EXT2_NAME_LEN; n++, i++) {

Buff1 [n] \u003d full_path [i];

Pokud ((((buff1 [n] \u003d\u003d "/") || (buff1 [n] \u003d\u003d "?") (

I ++;

Přestávka;

buff1 [n] \u003d "?";

Pro každý prvek absolutní cesty názvu souboru určujeme číslo sekvence ine, přečtěte si tento inode v paměti a získejte obsah nulového bloku:

I_num \u003d get_i_num (buff1);

Get_inode (i_num, & in);

Read_iblock (& \u200b\u200bin, 0);

Zobrazte informace o souboru (název, číslo inody, velikost souboru a jeho typ):

Printf ("Inode číslo -% u", i_num);

Printf (název souboru -% s ", buff1);

Printf ("velikost souboru -% u", in.i_size);

Typ souboru je určen staršími čtyřmi bity struktury pole I_MODE EXT2_INODE:

typ \u003d ((in.i_mode & 0xf000) \u003e\u003e 12);

Tisk ("typ -% d", typ);

Přepínač (typ) (

Případ (0x04):

Printf ("(katalog)");

Přestávka;

Případ (0x08):

Printf ("(normální soubor)");

Přestávka;

Případ (0x06):

Printf ("(bloková jednotka)");

Přestávka;

Případ (0x02):

Printf ("(symbolické zařízení)");

Přestávka;

Výchozí hodnota:

Printf ("(neznámý typ)");

Přestávka;

Zkontrolujte typ souboru. Pokud se jedná o pravidelný soubor - přerušit cyklus:

If (typ & 0x08) (

Buff Buffer bude informace o čtení z informačních bloků souboru /Home/test.file. Tyto informace píšeme do souboru:

Outf \u003d Open ("Out", O_Creat | O_RDWR, 0600);

Zápis (outf, buff, velikost (buff));

Zavřít (outf);

Přestávka;

Odcházíme:

Zavřít (indev);

Vrátit 0;

O této zvážení logické struktury systému EXT2 souborů.

(Druhý rozšířený souborový systém).

· Lesnictví systémů Linuxu

· Struktura diskové oddíly v ext2fs

·

· Katalogy

· Soubory zařízení

·

·

· Knihovna EXT2FS.

· Sekce systému ext2fs

· Výpočet soukromí

Matfak

Prog.

2. Kurz 5. gramy.

Chichirov Andrey.

Falomethem Ext2fs (druhý rozšířený souborový systém).

PSÍZENÍ SYSTÉMŮ LINUXU

Proměnné Linuxu byly databáze založená na operačním systému Minix. Bylo by to nominované disky mezi dvěma systémy než mít nový systém souborů, takže Linus Torvalds následoval pododdíl v systému souborů Linux Minix. Zatímco tento souborový systém byl poměrně účinný s relativně malým množstvím chyb.

Blesky spojené s systémovým systémem Minix je však poměrně vysoká, takže začali přemýšlet nad novým souborovým systémem pro Linux.

Chcete-li ovládat implementaci nového systému souborového systému v aplikaci Linuxu, byl použit systém virtuálního souboru (VFS). VFS napsal Chris Provenzano, a pak Linus Torvalds prošla integraci do jedu.

Po instalaci v jedu VFS byl nový systém FAL SYSTEM FAL (rozšířený souborový systém) snadno a přidán do Linuxu 0.96c VEXA. V novém systému souborů byly odstraněny dva podstatné systémy Minixy: Jeho maximální objem by mohl dosáhnout 2 gigabajtů a maximální název souboru je 255 znaků. Byl to úspěch s minixním souborovým systémem, i když některé z pouhých zjevných jsou stále psaní. Nebyl žádný subdependentní přístup, modifikaci indexového descippetu a modifikovat buňky změny souboru. Tento souborový systém používal související seznamy pro otevření volných bloků a indexového potoka, což značně ovlivnilo systém systému: se seznamy seznamů se stalo nespecifikováno a doused, který se používá k podání souborového systému.

Rozhodnutí této sondy bylo vydání dvou nových souborových systémů v lednu 1993: XIA a EXT2FS (druhý rozšířený souborový systém). Z větší části byl soubor Xia založen na minixu s přidáním několika nových funkcí. V podstatě to byla možnost cvičení s dlouhými názvy souborů, schválení disků většího objemu a napětí buněk změn souboru. S jemnými kameny, EXT2FS byl založen na EXTFS s mnoha vylepšeními a dodatky. Měla také příležitost pro budoucnost.

Když byly tyto dva souborové systémy vydány, byly funkčně pupeticky. Systém XIA byl spolehlivější než Ext2FS, vzhledem k jeho minimalizaci. Chyby v systému Ext2FS byly nezpevněny na jejich tichou aplikaci a byl přidán velký počet nových funkcí a vylepšení. Současný systém EXT2FS je velmi spolehlivý a stal se systémem De Facto Linuxového systému.

Následující tabulka poskytuje společné informace o funkčnosti funkčních funkcí, které jsou dodávány s přerušovanými souborovými systémy.

Minix fs.

Ext fs.

Ext2 fs.

XIA FS.

Maximální souborový systém

Maximální délka souboru

Maximální délka názvu souboru

Pododdíly změn změn souboru

Schopnost PACE.

Vyměnitelný Pazmp Bloka.

Ochrana Incomentu

Pokud potřebujete délku názvu souboru Ext 2. Lze jej zvýšit na 1012.

Ext2fs pronikají některé bloky pro uživatele root. Obvykle je to 5% z celkového počtu, což umožňuje správu systému, aby se zabránilo nedostatku pevného disku jeho plnění s využitím uživatelů uživatelů DPUUGI.

Struktura diskového rozdělení v ext2fs

Výrobci pevného disku obvykle dodávají své produkty formátované na nízké úrovni. Pokud vím, znamená to, že všechny místo na disku s pomocí speciálních štítků je přerušeno pomocí "sektorů", velikosti 512 bajtů. Takový disk (disk disk) musí být připraven pro použití v konkrétním operačním systému. V systému MS-DOS nebo Windows se postup přípravy nazývá formátování a v Linuxu - vytváření souborového systému. Vytvoření souborového systému ext2fs. Je vytvořit v části disku určité logické struktury. Tato struktura je postavena následovně. Za prvé je na disku přiděleno boty. Bootová oblast je vytvořena v libovolném souboru. Na primárním oddílu obsahuje spouštěcí vstup - fragment kódu, který iniciuje proces načítání operačního systému při spuštění. Na jiných sekcích se tato oblast nepoužívá. Všechny zbytek místa na disku je rozdělen do bloků. Jednotka může být velikost od 1, 2 nebo 4 kilobajty. Blok je oslovitelný jednotkou místa na disku. Výběr umístění souborů je prováděn celé bloky, takže při výběru velikosti bloku musíte kompromisovat. Velká velikost bloku zpravidla snižuje počet odvolání na disk při čtení nebo zápisu souboru, ale zvyšuje podíl zřídka používaného prostoru, zejména pokud existuje velké množství malých souborů.

Bloky, ve své oblasti jsou kombinovány do skupin bloků. Skupiny bloků v systému souborů a bloky uvnitř skupiny jsou očíslovány postupně, počínaje 1. První blok na disku má číslo 1 a patří do skupiny s číslem 1. Celkový počet bloků na disku (na disku Sekce) je rozdělovač svazku disku vyjádřený v sektorech. A počet blokových skupin není nutný pro rozdělení počtu bloků, protože poslední skupina bloků nemusí být dokončena. Začátek každého bloku bloků má adresu, kterou lze získat jako ((číslo skupiny - 1) * (počet bloků ve skupině)).

Každá skupina bloků má stejnou strukturu. Jeho struktura je prezentována v následující tabletě.

Struktura skupiny bloků diskového oddílu ext2fs.

První prvek této struktury (superblock) je stejný pro všechny skupiny a všechny ostatní jsou individuální pro každou skupinu. Superblock je uložen v prvním bloku každé skupiny bloků (s výjimkou skupiny 1, ve kterém je záznam načítání umístěn v první jednotce). Superblock. Jedná se o výchozí bod systému souborů. Má velikost 1024 bajtů a vždy nachází se na posunu 1024 bajtů od začátku souborového systému. Přítomnost několika kopií superblock je způsobena extrémním významem tohoto souboru systémového prvku. Duplikáty superblock se používají při obnově systému souborů po poruchách.

Informace uložené v superblock se používá k uspořádání přístupu k ostatním datům na disku. Superblock definuje velikost systému souborů, maximální počet souborů v sekci, množství volného místa a obsahuje informace o tom, kde hledat neobsazené oblasti. Když spustíte OS, superblock je čten do paměti a všechny změny v systému souborů nejprve najdou zobrazení v kopii superblock umístěného v OP, a jsou zaznamenány pouze periodicky. To vám umožní zvýšit výkon systému, tolik uživatelů a procesů neustále aktualizovat soubory. Na druhou stranu, když je superblock vypnut, musí být zapsáno na disk, což vám neumožňuje vypnout počítač jednoduchým vypnutím napájení. V opačném případě, s dalším zatížením, informace zaznamenané v superblock nebudou vhodné pro reálný stav souborového systému.

Superblock má následující strukturu

Jméno pole

Typ

Komentář

s_inodes_count.

Ulong.

Počet deskriptorů indexu v systému souborů

s_blocks_count.

Ulong.

Počet bloků v systému souborů

s_r_blocks_count.

Ulong.

Počet bloků vyhrazených pro superuživatel

s_free_blocks_count.

Ulong.

Počet volných bloků

s_free_inodes_count.

Ulong.

Čítač počtu deskriptorů volného indexu

s_first_data_block.

Ulong.

První blok, který obsahuje data. V závislosti na velikosti jednotky může být toto pole rovno 0 nebo 1.

s_log_block_size.

Ulong.

Indikátor velikosti logiky: 0 \u003d 1 kb; 1 \u003d 2 kB; 2 \u003d 4 kb.

s_log_frag_size.

Dlouho.

Indikátor velikosti fragmentu (zdá se, že koncept fragmentu se v současné době nepoužívá)

s_blocks_per_group.

Ulong.

Počet bloků v každém bloku bloku

s_frags_per_group.

Ulong.

Počet fragmentů v každém bloku bloku

s_inodes_per_group.

Ulong.

Počet deskriptorů indexu (Inodes) v každém bloku bloku

s_mtime.

Ulong.

Čas, kdy byl souborový systém naposledy připojen.

s_wtime.

Ulong.

Čas, kdy byl naposledy zaznamenán v systému souborů

s_mnt_count.

Ushort.

Měřič montážního systému. Pokud tento pult dosáhne hodnoty zadané v následujícím poli (S_MAX_MNT_COUNT), musí být systém souborů ověřen (to se provádí při restartování) a počítadlo je resetováno.

s_max_mnt_count.

Krátký

Číslo určující, kolikrát lze připojit systémový systém

s_magic.

Ushort.

"Magic Číslo" (0xef53), označující, že souborový systém patří do typu Ex2FS

s_state.

Ushort.

Vlajky označující aktuální stav systému souborů (zda je čistý (čistý) atd.)

s_Errors.

Ushort.

Vlajky, které určují procedury chybových zpráv (co dělat, pokud jsou nalezeny chyby).

s_PAD.

Ushort.

Plnicí

s_laskeck.

Ulong.

Čas poslední kontroly souboru

s_checkInterval.

Ulong.

Maximální časová doba mezi kontrolami souborového systému

s_creator_os.

Ulong.

Určení typu OS, ve kterém je souborový systém vytvořen

s_rev_level.

Ulong.

Systém souborů úrovně revize.

s_rerved.

Ulong.

Naplnění až 1024 bytů

Po superblock je umístěn popis skupiny bloků (deskriptory skupiny). Tento popis je pole s následující strukturou.

Jméno pole

Typ

Účel

bg_block_bitmap.

Ulong.

Adresa bloku obsahující bloky bitových karet (BLOCK BITMAP) této skupiny

bg_inode_bitmap.

Ulong.

Adresa bloku obsahujícího bitmapu deskriptorů indexu (inode bitmapa) této skupiny

bg_inode_table.

Ulong.

Adresa bloku obsahující tabulku deskriptorů indexu (inode tabulka) této skupiny

bg_free_blocks_count.

Ushort.

Čítač počtu volných bloků v této skupině

bg_free_inodes_count.

Ushort.

Počet snímků volného indexu v této skupině

bg_used_dirs_count.

Ushort.

Počet deskriptorů indexu v této skupině, které jsou katalogy

bg_pad.

Ushort.

Plnicí

bg_reserved.

Ulong.

Plnicí

Velikost blokového popisu bloku lze vypočítat jako (Size_Group_blok_v_ext2 * číslo_groups) / SIZE_BLOCK (Pokud je to nutné, zaokrouhleno).

Informace, které jsou uloženy ve skupinovém popisu, se používají k hledání bitových karet bloků a deskriptorů indexu, stejně jako tabulka deskriptorů indexu. Nezapomeňte, že bloky a bloky bloků jsou číslovány od 1.

Bitová mapa bloku (bloku bitmapa) je struktura, jehož každý bit označuje, zda je příslušný blok přiřazen. Pokud je bit 1, pak je blok obsazeno. Tato karta slouží k vyhledávání volných bloků v případech, kdy je nutné zvýraznit umístění pod souborem, bitmapa bloků zaujímá počet bloků rovných (Number_block_v_group / 8) / SIZE_BLOCK (Pokud je to nutné, zaokrouhleno).

Bitmapa deskriptorů indexu provádí podobnou funkci s ohledem na tabulku deskriptorů indexu: ukazuje, které deskriptory jsou zaneprázdněni.

Následující oblast v konstrukci struktury bloků slouží k uložení tabulky deskriptorů indexových souborů. Struktura samotné indexové deskriptoru je považována za následující pododdíl.

No, konečně zbývající místo v Skupině bloků je přiděleno pro ukládání vlastních souborů.

Souborový systémExt. 2 je charakterizován:

  • hierarchická struktura
  • dohodnuté zpracování datových polí,
  • rozšíření dynamického souboru,
  • informační zabezpečení v souborech
  • interpretace periferních zařízení (například terminálů a páskových zařízení) jako soubory.

Interní pohled na soubory

Každý soubor v systému Ext 2 má jedinečný index. Index obsahuje informace nezbytné pro jakýkoli proces odkazovat na soubor. Procesy se týkají souborů pomocí jasně definované sady systémových volání a identifikace souboru řetězce souborů, který funguje jako název kompozitního souboru. Každé kompozitní jméno určitě určuje soubor, takže systémový jádro převádí tento název do indexu souboru. Rejstřík obsahuje tabulku umístění adresy informací o disku na disku. Vzhledem k tomu, že každý blok na disku je určen k jeho číslo, tato tabulka ukládá sadu čísel bloků disku. Aby se zvýšila flexibilita, jádro se připojuje k souboru jeden jeden blok, což umožňuje informace o souboru, které mají být rozptýleny po celém systému souborů. Toto schéma umístění komplikuje úkol vyhledávání dat. Tabulka adresy obsahuje seznam čísel bloků obsahujících soubor vlastněný soubor, nicméně jednoduché výpočty ukazují, že lineární seznam bloků souborů v indexu je obtížné ovládat. Aby byla malá struktura indexu pracovat s velkými soubory, tabulka bloků disku se uvádějí do řádku se strukturou zobrazenou na obrázku 1

Většina souborů v systému ext 2 má velikost, která nepřesahuje 10 kb a dokonce 1 kb! Od 10 kB souboru je umístěn v přímých adresách, do značky dat uložených v souborech, přístup může být proveden v jednom odvolání na disk. Proto na rozdíl od přístupu k velkým souborům probíhá práce se standardní velikostí souborů rychle.

Deskriptory indexového souboru.

Každý soubor na disku odpovídá jednomu a pouze jeden rukojeť indexového souboru, která je identifikována jeho pořadovým číslem - index souboru. To znamená, že počet souborů, které mohou být vytvořeny v systému souborů, je omezen počtem deskriptorů indexu, který je jednoduše definován při vytváření systému souborů nebo se vypočítá na základě fyzického objemu diskového oddílu. Indické potoky existují na disku ve statické podobě a jádro je čte do paměti před zahájením s nimi pracovat.

Rubuška indexových souborů má následující strukturu:

Jméno pole

Typ

Popis

I_Mode.

Ushort.

Typ a přístupová práva k tomuto souboru.

I_uid.

Ushort.

Identifikátor vlastníka souboru (vlastník UID).

I_size.

Ulong.

Velikost souboru v bajtech.

I_atime.

Ulong.

Čas posledního přístupu k souboru (čas přístupu).

I_CTIME.

Ulong.

Doba tvorba souboru.

I_mtime.

Ulong.

Čas poslední změny souboru.

I_dtime.

Ulong.

Doba vymazání souborů.

I_gid.

Ushort.

Identifikátor skupiny (gid).

I_links_count.

Ushort.

Počítadlo vztahů (počet odkazů).

I_blocks.

Ulong.

Počet bloků obsazených souborem.

I_flags.

Ulong.

Flags File. Příznaky souborů)

I_rerved1

Ulong.

Vyhrazeno pro os

I_block.

Ulong.

Ukazatele k blokování, ve kterých se zaznamenávají data souboru (příklad přímého a nepřímého adresování na obr. 1)

I_version.

Ulong.

Verze souboru (pro NFS)

I_file_acl.

Ulong.

Soubor ACL.

I_dir_acl.

Ulong.

Katalog ACL

I_faddr.

Ulong.

Adresa fragmentu (adresa fragmentu)

I_frag.

Uchar.

Číslo fragmentu (číslo fragmentu)

I_fsize.

Uchar.

Velikost fragmentu (velikost fragmentu)

I_pad1.

Ushort.

Plnicí

I_rerved2.

Ulong.

Rezervováno

Typové pole a přístupová práva k souboru je dvoupodlažní slovo, jehož každý bit slouží jako příznak označující poměr souborů na konkrétní typ nebo instalaci jednoho konkrétního práva na soubor.

Identifikátor

Hodnota

Vlajka schůzky (pole)

S_ifmt.

F000.

Typ souboru maska

S_ifsock.

A000.

Doménové hnízdo (zásuvka)

S_iflnk.

C000

S_ifreg.

8000

Normální (pravidelný) soubor

S_ifblk.

6000

Blokově orientované zařízení

S_ifdir.

4000

Katalog

S_ifchr.

2000

Byte-orientované (symbolické) zařízení

S_ififi.

1000

Jmenovaný kanál (FIFO)

S_isuid.

0800

Suid - Bit SHIFT majitel

S_ISGID

0400

SGID - Skupina Shift bity

S_isvtx.

0200

Úkol ochrany bit (lepkavý bit)

S_irwxu.

01C0.

Maska práv vlastníků souboru

S_irusr.

0100

Právo na čtení

S_iwusr.

0080

Právo na záznam

S_ixusr.

0040

Právo na provedení

S_irwxg.

0038

Skupina skupiny maska

S_irgrp.

0020

Právo na čtení

S_IWGRP.

0010

Právo na záznam

S_IXGRP.

0008

Právo na provedení

S_irwxo.

0007

Maska práv jiných uživatelů

S_iroth.

0004

Právo na čtení

S_iwoth.

0002

Právo na záznam

S_ixoth.

0001

Právo na provedení

Mezi deskriptory indexu Existuje několik deskriptorů, které jsou vyhrazeny pro speciální účely a hrají zvláštní roli v systému souborů. To jsou následující deskriptory

Identifikátor

Hodnota

Popis

Ext2_bad_ino.

Deskriptor indexu, ve kterém jsou uvedeny adresy vadných bloků na disku (inoda špatné bloky)

Ext2_root_ino.

Deskriptor indexu kořenového adresáře souborů souborů (kořenový inde)

Ext2_acl_idx_ino.

ACL INODE.

Ext2_acl_data_ino.

ACL INODE.

Ext2_boot_loader_ino.

Deskriptor indexu nakladače (inoda zavaděče)

Ext2_undel_dir_ino.

Undelete Directory Inode.

Ext2_first_ino.

První deskriptor bez pro-indexu

Nejdůležitější popisovač v tomto seznamu je deskriptor kořenového adresáře. Tento deskriptor poukazuje do kořenového adresáře, který, stejně jako všechny adresáře, sestává ze záznamů o následující struktuře:

Jméno pole

Typ

Popis

Inoda

Ulong.

Číslo deskriptoru indexu souborů (index)

rec_len.

Ushort.

Délka tohoto záznamu

jméno_len.

Ushort.

Délka názvu souboru.

Název.

Char.

Název souboru

Samostatný záznam v katalogu nemůže překročit hranici bloků (tj. Mělo by být umístěno zcela uvnitř jednoho bloku). Pokud tedy, pokud další záznam se v tomto bloku nezapadne, je přenesen do dalšího bloku a předchozí záznam pokračuje tak, že vyplní blok do konce.

Obrázek 1 bloky přímého a nepřímého adresování v indexu

Obrázek 2 Objem souboru v bajtech v bloku Velikost 1 Kb

Obrázek 3. Příklad indexu disku

Obrázek 3 ukazuje index disku určitého souboru. Tento index patří k obvyklému souboru, jehož vlastníkem je "MJB" a velikost je 6030 bajtů. Systém umožňuje uživateli "MJB" číst, zápis a spuštění souboru; Členové skupiny "OS" a všichni ostatní uživatelé jsou povoleny pouze číst nebo provádět soubor, ale ne zaznamenávat data do něj. Naposledy byl soubor číst 23. října 1984 v 13:45, záznam byl naposledy provedeno 22. října 1984 v 10:30. Index změnil naposledy dne 23. října 1984 v 13:30, i když v této době nebyly zaznamenány žádné informace. Kernel kóduje všechny výše uvedené údaje v indexu. Věnujte pozornost rozdílu v záznamu obsahu indexu a obsahu souboru. Obsah souboru se změní pouze v případě, že je soubor zaznamenán. Obsah indexu se mění oba při změně obsahu souboru a při změně vlastníka souboru, přístupových práv a ukazatelů. Změna obsahu souboru automaticky způsobí korekci indexu, ale korekce indexu neznamená změnu obsahu souboru.

Katalogy

Katalogy jsou soubory, ze kterých je postavena hierarchická struktura systému souborů; Hrají důležitou roli při otočení názvu souboru na číslo indexu. Adresář je soubor obsahující, který je sada záznamů sestávajících z čísla indexu a název souboru součástí adresáře. Kompozitní jméno je řetězec symbolů, doplněn prázdným symbolem a nakloněným sdíleným řádkem ("/") do několika komponent. Každá komponenta, kromě toho, musí být název adresáře, ale poslední komponenta může být soubor, který není adresářem. V verzi systému Unixu je délka každé komponenty omezena na 14 znaků; Tak spolu s 2 bajty přidělené k číslu indexu, velikost záznamu adresáře je 16 bajtů.

OFFSET IN BYTES.
Uvnitř katalogu

Číslo indexu
(2 bajty)

názevsoubor

1798

init

1276

fsck.

clri.

1268

motd.

1799

montáž

mknod.

2114

passwd.

1717

umount.

1851

kontrolní seznam.

fsdbld.

konfigurace

1432

getty.

pád.

mkfs.

Obrázek 4 Formát katalogu / atd

Obrázek 4 ukazuje formát adresáře "atd.". Každý adresář má soubory, protože názvy jsou označeny bod a dva body ("." A "a" a "..") a indexová čísla, která odpovídají indexovým číslům tohoto katalogu a nadřazeného katalogu. Indexové číslo pro soubor ". Adresář "/ etc" má adresu s ofsetem 0 a hodnotu 83. Číslo indexu pro soubor ".." má adresu s ofsetem 16 od začátku adresáře a hodnota 2. Záznamy v adresáři mohou být prázdné a číslo indexu je 0. Například záznam s adresou 224 v adresáři "/ etc" je prázdný, navzdory skutečnosti, že kdysi obsahoval vstupní bod pro soubor s názvem "Crash". Program MKFS inicializuje systém souborů tak, aby indexová čísla pro soubory ". A ".." Kořenový adresář se shoduje s číslem kořenového indexu systému souborů.

Kernel ukládá data v adresáři stejným způsobem jako v souboru normálního typu pomocí struktury indexu a bloků s úrovněmi přímého a nepřímého adresování. Procesy mohou číst data z adresářů stejným způsobem, jak číst pravidelné soubory, ale exkluzivní vstup přímo do adresáře je vyhrazen jádrem, což zajišťuje správnost struktury adresáře. Katalogová přístupová práva mají následující význam: právo na čtení dává zpracovává možnost číst data z katalogu; Righting vpravo umožňuje procesu vytvářet nové položky v adresáři nebo odstranit staré (používání operace aplikace Create, Mknod, Link, Link a Un propojení), v důsledku čehož obsahu katalogu se změní; Právo spuštění umožňuje procesu vyhledávání v adresáři podle názvu souboru (protože "Provedení" katalog je bezvýznamný).

Když libovolný program používá cestu k souboru, odpovídající NomeP indexového sestupu obsahuje v katalogech. Po použití názvu souboru v indexu popisu popisu je tento descvot umístěn v paměti a poté se používá v následujícím zapnutí.

Koncepce souborů souborů UNIX zahrnuje koncept odkazu. Jeden index Descupboard lze přidružit s více názvy souborů. DeskPott je nápomocen pole, Hinner, se kterým souborů souborů. Přidání odkazu je vytvořit položku adresáře, kde index descippet číslo indikuje diskpot a zvýšení referenčního čítače v aplikaci DESPPORT. Měli byste odstranit odkazy jedu snižuje referenční čítač a odstraní desqpot, pokud se tento metr stane null.

Takové odkazy se nazývají tuhé a mohou být použity pouze v jednom souboru systému (nemůžete vytvořit odkaz pro souborový systém z systému Flip File). Kromě toho, tuhý odkaz může určit soubor (přísný odkaz na adresář lze použít k zaostření do systému souborů).

Ve většině systémů UNIX existuje další typ odkazu. Tyto odkazy, které podporují pouze název souboru, se nazývají symbolicky. Používáte chudší z těchto odkazů, přičemž používáte cestu k souboru k indexovému descvoky indexu, jedová nahradí název odkazu na software Descing (tj. Ve jménu cílového souboru) a re-Internet Cesty cesta k souboru. Vzhledem k tomu, že symbolický odkaz neindikuje index desqpot, je možné vytvořit odkazy na soubory, které jsou umístěny v dezinfinovaném systému souborů. Tyto odkazy mohou uvést soubor libovolného typu, a to i na neexistující. Symbolické odkazy se tak používá, protože nemají ty požáry, které mají tvrdý odkaz. Nicméně, oni zabírají nějaký objem na disku, kde je povoleno index descipboard a datové bloky. Jejich použití může být použito pro způsoby související s výbojem, které používají cestu k souboru do indexového vzorku, který je způsoben skutečností, že symbolická vazba jedu by měla znovu zadávat cestu k souboru.

Soubory zařízení

V operačních systémech podobných unixu se přístup k zařízení provádí prostřednictvím speciálních souborů. Tento soubor se neuskutečňuje v systému souborů. Jedná se pouze o přístupový bod k jednotce zařízení.

Existují dva typy souborů zařízení: symbolický a blok. Při použití symbolického typu je možné vyměnit data se zařízením pouze v režimu znaků, zatímco soubory typu bloků zařízení umožňují vyměnit pouze bloky pomocí vyrovnávací paměti. Při požadavku na I / O požadavku do souboru zařízení je tento dotaz přesměrován na ovladač příslušného zařízení. Každý podobný soubor odpovídá staršímu počtu, které definuje typ zařízení a mladší místnost, která určuje samotné zařízení.

Další funkce EXT2FS.

Kromě UNIX, EXT2FS Standal Funkce existují některé další funkce, které obvykle nejsou následně předloženy systémy souborů UNIX.

Soubor ATPIBUT vám umožní změnit stisknutí poláry pomocí souborů se soubory. Můžete nainstalovat do souboru nebo adresáře. Ve druhém případě se soubory vytvořené v tomto adresáři zdědí tyto aliquetic.

V průběhu montizace systému mohou být nainstalovány některé konkrétní funkce spojené s altikvoti souborů. Volba Mount umožňuje správě vybrat funkce vytváření souborů. V systému souborů s funkcemi BSD jsou soubory vytvořeny se stejným identifikátorem GPPP, stejně jako katalogem bytu. Funkce System V je poněkud složitější. Pokud je nastaven katalog SETGID bitů, jsou přijaty soubory vytvořené identifikátorem GPPS tohoto adresáře a podadresáře zdědí identifikaci GPPP a Setgid bitů. V projednávaném případě jsou soubory a katalogy vytvořeny se základním identifikátorem GPPP způsobujícího PPRESS.

Systém EXT2FS může používat synchronní úpravu dat podobná systému BSD. Volba Mount umožňuje správě určete všechna data (index potápěč, bity, nepřímých bloků a bloků adresářů) zaznamenaných na synchronně stejnosměrné pro synchronně v jejich modifikacích. To lze použít k dosažení vysokých informačních záznamů, ale také vezme na zhoršení v kněžství. Ve skutečnosti se tato funkce obvykle nepoužívá, protože zhoršení proliferace může být použito k potu uživatelů uživatelů, které nejsou označeny pomocí systému souborů.

Ext2fs umožňuje vytvořit systém souborů pro výběr logického bloku. Může to být Pazmer 1024, 2048 nebo 4096 bajtů. Použití velkých objemových bloků pro optimalizaci I / O (jako množství nasávání na disk se snižuje), a proto na menší hlavičku hlav. S druhou stranou bloku, použití velkých bloků bloků k voliči disku disku. Typicky, poslední blok souboru není použitý zcela pro pole informací, tedy se zvýšením objemu bloku, je zvýšen hlasitost teped Disk Punch.

Ext2fs umožňuje používat osikované symbolické odkazy. Použití takových odkazů, blokové datové bloky nejsou použity. Název cílového souboru není v datovém bloku, ale v samotném indexu. Taková struktura umožňuje udržovat disk punč a odpařovat skotskou symbolickou vazbou. Samozřejmě, že tam je potrubí, trouba pod deskcí, flaky, takže ne každý odkaz může být upisován jako Hersal. Maximální délka názvu souboru v sekundárním odkazu má 60 znaků. V blízké budoucnosti je plánováno pozastavit toto schéma pro malé objemové soubory.

Ext2fs následuje stav souborového systému. Chudí používá samostatné pole v pozastavení k označení stavu systému souborů. Pokud je souborový systém namontován v čtení / zápisu, je jeho stav instalován jako "ne čistý". Pokud je znovu demontován nebo namontován v požitku pouze pro čtení, pak je jeho stav instalován v "čistém". Když systém systému a souborový systém probíhá, tyto informace slouží k provozu potřeby systému souborů. Chudák také umístí některé zlomyslné chyby v tomto poli. Otevřel non-compliance jed, souborový systém je označen jako "chybný". Simulátor systému souborů bude testovat tyto informace pro systém systému, a to i v případě, že jeho stav je ve skutečnosti "čisté".

Prodloužené ignorování testování souborového systému Někdy může někdy být s nějakou dostatečností, takže ext2fs zahrnuje dvě metody regulačního systému. Spearlock je propagován čítačem montáže systému. Tento pult zvyšuje každou PA, když je systém namontován v prvotřídní funkce čtení / zápisu. Pokud jeho hodnota dosáhne maxima (je také uložena v suspenzi), pak se testování souborového systému spustí pokladně, i když je jeho stav "čistý". Ten, poprvé a maximální inteligentní inteligentní mezi prvními jsou také v suspenzi také zajištěn. Je-li dosaženo maximální inteligence mezi růžové, stav souborového systému je ignorován a spustí se kontrolní bod.

Systém EXT2FS je podporován pro jeho přítomnost. Tune2fs Bramma lze použít ke změně:

  • akce Pri Chyba Vybalení. Otevřeno s neplenění jedem, souborový systém je označen jako "chybný" a lze provést jeden z následujících kroků: implementace provedení, aktualizace systému souborů v radostném čtení, aby se zabránilo jeho Spojení, pagingový systém systému pro souborový systém.
  • maximální montovaná hodnota.
  • maximální inteligence mezi kolíky.
  • počet logických bloků, který je řízen pro uživatele root.

Možnosti určené namontovaným lze také použít ke změně akcí závazku chybového jedu.

Použití aplikace ATPIBUT umožňuje uživatelům mazat sekvenční soubory. Podobný soubor můžete smazat, v blocích, které slouží k použití tohoto souboru, je zaznamenán náhodným informacím. Bude to povýšeno, aby se dostal do prvního záhybu tohoto souboru v autoritě a nápovědy disku.

Systém EXT2FS nedávno přidal nové typy souborů pořízených z 4.4 Systém souborů BSD. Soubory uvedení typu lze použít pouze pro čtení: Nikdo je nemusí měnit nebo odstranit. To lze použít k ochraně důležitých konfiguračních souborů. Jedná se o typ souborů, jedná se o soubory, které lze obrátit na funkce záznamu a data mohou být přidána až do konce tohoto souboru. Tento typ souborů lze také odstranit nebo trvalé. Mohou být použity jako soubory zeper, které mohou zvýšit pouze hlasitost.

Optimalizace soukromí

Systém EXT2FS je usnadněn mnoha funkcemi, které optimalizují svůj profil, což vede ke zvýšení rozsahu výměny informací o čtení a psaní souborů.

Ext2fs aktivně používá vyrovnávací paměť disku. Když musí být jednotka přečtena, jed se zobrazí I / O opt / výstup neprůhledný. Chudší se tedy snaží ujistit, že další blok, který by měl být čten, je již na starosti vyrovnávací paměť disku. Takové opory jsou obvykle prováděny pomocí sériových souborů čtení.

Systém EXT2FS také poskytuje velké množství informací o optimalizaci informací. Bloky slouží k kombinování odpovídajícího indexového descippets a datových bloků. Jeden se vždy snaží zmáčknout datové bloky jednoho souboru v jednom GPUP, stejně jako jeho desqpot. To je aplikováno tak, aby se snížilo řízení hlavičky hlavičky a čtení popisu a odpovídající datové bloky odpovídající.

Tyto datové záznamy v souboru, EXT2FS budou posílit až 8 sousedních bloků pomocí nového bloku. Taková metoda umožňuje dosáhnout silných stránek systému systému. To také umožňuje používat sousední bloky pro soubory, které zapadají do jejich následného čtení.

Knihovna EXT2FS.

Chcete-li využít použití EXT2FS škůdců a řízení kontaktních stroje tohoto souborového systému, LIBEXT2FS knihovna byla snadná. Tato knihovna poskytuje funkce, které lze použít k ovládání a změně tohoto systému EXT2 souborů odkazem na fyzicky eliminující.

Většina EXT2FS Utilities (MKKE2FS, E2FSCK, Tune2FS, Dumpte2FS, Debugfs a DP.) Tato knihovna použijte. Důrazně doplňuje úpravu těchto nástrojů, protože jakékoli změny zavádějí další funkce do systému souborů Ext2FS by měly být samostatné pouze v knihovně Ext2FS.

Vzhledem k tomu, že Internet Library Ext2FS je dostatečně Shiyky a pomocný, může být snadno napsán s jeho pomocí, která bude snadno napsána, pro práci, na které lze použít souborový systém. Použít knihovnu Ext2FS byla použita výpisem 4,4 BSD a obnovu některých nástrojů. Bylo zabito, aby se velmi málo změn, aby se tyto použití přizpůsobily Linux (bylo nutné nahradit několik funkcí, které spolupracují se systémem souborů, aby volal do knihovny Ext2fs).

Knihovna Ext2FS obsahuje přístup k operacím několika tříd. Třída puberty je neprůhledná spojená s souborovým systémem. Jakýkoliv šampon může otevřít nebo posunout systém souborů, číst nebo zápis bitového bloku, vytvořit nový souborový systém na disku. Existují také funkce seznamu chybných bloků bloků bloků.

Druhá třída neprůhlednosti bude používat katalogy. Prokamma Použití knihovny Ext2FS může vytvářet nebo skautovat adresář, stejně jako přidat nebo odstranit záznamy v adresáři. Existují funkce jako hnací látky na indexové sestupné cestě k souboru a cestu cesty do souboru podle zadaného sestupu.

Poslední třída neprůhlednosti se otevírá s indexem DescilePts. Je možné si přečíst tabulku DescPort, počítat nebo zapisovat DescPotp, PP Zobrazení všech bloků zadaného Desqpot. Je možné postupovat funkce formace a uvolnění bloků a potoka.

Sekce systému ext2fs

Pro systém ext2fs bylo použito silné využití komplementárního použití. Tato použití se používají k vytvoření, úpravy a coppe jakýchkoliv nesrovnalostí v systémech souborů ext2fs. Program MKE2FS se používá k instalaci diskové vložky, která poskytuje prázdný systém souborů Ext2fs.

Aplikace Tune2FS může být použita pro napájení souborového systému Papalmet .CC může být změněno tak, aby se změnilo na vznikající chyby, maximální počet montáže systému, maximum určené mezi postupy systému a počtem logických bloků řízených pro uživatele root.

Snad nejvíce inteligentnějším použitím je zjednodušený systém souborů. E2FSCK zajišťoval dokončit nesrovnalosti v systému souborů po necesení o přijetí celého systému. Počáteční verze Prokamma E2FSCK je založena na souboru Linus Torvald FSCT pro systém souborů Minix. Současné verze transmanentního období pomocí knihovny Ext2fs a je rychlejší a mohou být prováděny pouze ve větším počtu chyb v oblasti svého dotazu, podle přípravy s papalingem VEXA.

Hanebka E2FSCK byla studována v takovém čase tak, aby byl proveden s maximální rychlostí. Vzhledem k tomu, že picky souborového systému jsou volány na diskovou hlavu, měli byste optimalizovat blikající algoritmy E2FSCK tak, že postup pro systém souborů by měl být mnohem snazší. A navíc by úmysly indexu desptů a adresářů byly provedeny podle čísla bloku, aby se snížilo hlavy diskových jednotek.

V rozbití E2FSCK, souborový systém je písten všemi vztyčemi indexu a jeden descopputs jako samostatný prvek systému. Taková příležitost, tyto testy nehodí objekty souborového systému. Jedním z cílů takových pinů je vstup existence typu typu souboru, stejně jako korespondence všech bloků v potrubi s bloky s existujícími čísly. V rozvaděči jsou bity v provozu označující použití bloků a potápěčů.

Pokud E2FSCK najde datové bloky, z nichž NOMS jsou shromažďovány ve více než jednom sestupu, pak se 1D 1d výlety stanovují nesrovnalosti - buď zvýšením přenosných bloků nebo odstranění jednoho nebo více descputs.

Nejbližší pečlivina zabírá především, protože všechny indexové descippes musí být přečten do paměti a neoddělitelné. Chcete-li snížit vstupní / výstupy v následujících orgánech, zůstane ve vyrovnávací paměti všechny potřebné informace. HappableLable čtení tohoto schématu je vyhledat všechny bloky adresáře souborového systému. Pro získání těchto informací jsou sekvence všech adresářů souborových systémů čteny ve druhém výletech.

Ve druhém obložení adresáře zadávají jako jednotlivé prvky systému souborů. Blok každého adresáře je oddělený, bez odkazu na dpuch adresářových bloků. To umožňuje E2FSCK odpojit všechny bloky adresářů na počtu bloků a kontaktovat je v době spuštění, takový čas snížení přístupu k disku. Katalog bloků jsou testovány na korespondenci reality svých záznamů a že přispívají k odkazům na sestupné sestupy s existujícím číslem (jak bylo zapnuto v lámání).

Pro adresářový blok v každém rozvrhu adresáře bude existovat existence záznamů. ". a "..", a že číslo sestavy je pro nahrávání. " Odpovídá aktuálnímu adresáři. (Počet plánů pro nahrávání ".." netestuje, dokud se otočí.)

Při provádění druhého fode je v vyrovnávací paměti uložen pohybový pohyb odpovídající katalogu bytu.

Je třeba poznamenat, že do konce druhé PHODA budou pokryty téměř všechny vstupní / výstupy s disku. Všechny info hnutí, které se snaží pro tisíce čtvrtého a pátého výletu, je však povýšen v paměti, nicméně zbývající jámy PPPSOP a trvá méně než 5-10% z celkového provedení E2FSCK.

Katalogová připojení jsou součástí tretku. E2FSCK dělá cesty každého adresáře k pití do lože, pomocí informací získaných druhým fodem. Zde je záznam ".." pro každý katalog. Všechny katalogy identifikované po prvním a bez připojení jsou umístěny v adresáři / Lost + nalezen.

Ve čtvrtém, E2FSCK TRIPS, referenční čítače pro každý index sestupuje pomocí PPPlaying všechny potápěče a odrážejí referenční měřiče (tyto informace jsou uchovávány z příčného nudného) s vnitřními měřidly, které byly vypočteny hodnoty sekundy a kmeny. Všechny neúspěšné soubory s nulovým referenčním měřičem jsou také umístěny v adresáři / Lost + nalezen.

A konečně, v pátém, E2FSCK je korespondence všech informací o informacích v systému souborů. Zde jsou bity bloků a potažecích, které byly získány v prvním povrchu, s platnými hodnotami, a v případě potřeby dojde k informacím disku na disku.

Použijte užitečné využití debuggeru souborového systému. Debugfs je mocná marnost, která vám umožní sestoupit a nastavit stav souborového systému. V podstatě je to interaktivní internet do knihovny Ext2fs, tj. Typické příkazy k volání funkcí knihovny.

Debugfs lze použít k provozu interního systému souborového systému, ponechání systému obnovy nebo vytváření podmíněných testů pro E2FSCK. Bohužel, tento Jammy může vyhrát souborový systém, pokud nevíte, jak jej používat. S touto silou stačí zničit souborový systém. Proto Debugfs promění systém souborů ve výchozí poloze pouze pro čtení. Pro přístup k obálce čtení / zápisu byste měli zadat možnost -W.

Výpočet soukromí

Výsledky testu Bonnie jsou viditelné z následující tabulky:

Nahrávání cukru (CB / S)

Záznam patch (CB / S)

Výkon (KB / S)

Čtení cukru (Cb / S)

Číslo kusu (kb / s)

BSD Async.

BSD Sync.

Ext2 fs.

1237

1033

XIA FS.

Výsledky jsou dostatečně obeznámeny s vstupem / výstupem bloku: systém ext2fs vyhrává v referenčním systému. To je způsobeno optimalizací obsaženou v aproximaci PA. Záznam je také dostatečně rychlý, podle skutečnosti, že je pupier v Gupiene Purem. Vysoká rychlost čtení se týká skutečnosti, že bloky byly taženy do souboru, takže hlavové hlavy nejsou prováděny mezi dvěma odečtením a optimalizací prvního čtení zcela plně.

S druhou stranou boku obsahuje systém FreeBSD symbolický vstup / výstup referenční hodnoty výše. Možná je to kvůli skutečnosti, že FreeBSD a Linux používají vhodné knihovny odpovídající odpovídajícím knihovnám C. Kromě toho, v FreeBSD, více optimalizovaná symbolická knihovna čtení, a proto je zde trochu lepší.

Výsledky testu andrew.

Výsledky testu Andrew jsou viditelné z následující tabulky:

Papež 1 Vytváření

Instalatérství 2 kopírování

Instalatérství 3 Status

Instalatérství 4 Bapti.

Instalatér 5 kompilace

2203

7391

6319

17466

75314

BSD Sync.

2330

7732

6317

17499

75681

Ext2 fs.

Výsledky posledních dvou boxů ukazují, že Linux vyhraje asynchonální výměnu dat. Vytváříte adresáře a soubory, systém BSD synchronně zaznamenává sestupy a záznamy adresářů. Existuje hovor, který asynchpone subdepending pro FreeBSD ještě nebyl plně implementován.

V poctu hodnoty Linuxu a BSD jsou velmi podobné. Zatímco když je BSD popsána výše, přidání bujání pro názvy souborů do systému Linux VFS je nastaven na tento typ.

V pátém a pátém PPODu bude Linux rychle FreeBSD, zejména na použití kombinované kytice. Objem vyrovnávací paměti může trvat více paměti a využít více paměti než v FreeBSD, kde se používá pevný objem. Výsledky odpovědí EXT2FS a XIA FS ukazují, že je skutečně použita optimalizace, s nimiž se vyskytla v EXT2FS: pachatel těchto systémů je asi 5-10%.

Závěr

Systém souborů Ext2 je nejvíce krátce používán v uživatelích Linuxu. Poskytuje standardní funkce UNIX a další funkce. Díky optimalizaci obsažené v jedu se navíc ukazuje vynikající výsledky odpovědi.

Systém Ext2FS obsahuje funkce pro přidání nových funkcí. Někteří lidé se postarají o použití PA pro reálný souborový systém: Seznam řízení přístupu, odpovídající POSIX Standa, obnovení vzdálených souborů a komprimovat soubory v dlouhodobém rezidenci.

Za prvé, systém EXT2FS byl integrován do jedu Linuxu a aktivně se pohybuje na provozu operačních systémů. Ext2fs je také důležitou součástí operačního systému MASIX, který je v současné době studován jedním z autops.