Typy súborov Linuxu a ich funkcie. Súbor a porušenie Súbor Systém EXT2 Systém súborov EXT2 3

Teraz popisujeme najpopulárnejší systém súborového systému Linux - EXT2. Prvé vydanie Linuxu používalo systém súborov Minix 1, ktorý mal krátke názvy súborov a maximálnu veľkosť súboru 64 MB. Systém súborov MINIX 1 bol nakoniec nahradený prvým rozšíreným systémovým systémom EXT, ktorý umožnil používať dlhšie názvy súborov a väčšie veľkosti súborov. Vďaka svojej nízkej účinnosti (v zmysle výkonu) bol systém EXT nahradený jeho sekvenciou EXT2, ktorá je stále široko používaná.

Disk oddielu s ext2 obsahuje súborový systém s znázornený na obr. 10.17 Usporiadanie. Systém Linuxu nepoužíva blok 0 a obsahuje kód zaťaženia počítača. Po bloku 0 je diskový oddiel rozdelený na bloky blokov (s výnimkou hraníc diskových valcov). Každá skupina je organizovaná nasledovne.


Prvým blokom je SuperBlock (Superblock), ktorý ukladá informácie o rozložení súboru systému, vrátane počtu I-uzlov, počet diskových blokov, začiatok zoznamu voľných diskových blokov (to je zvyčajne niekoľko stoviek prvkov ). Potom nasleduje deskriptor skupiny obsahujúci informácie o umiestnení bitových polí, počet voľných blokov a I-uzlov v skupine, ako aj počet adresárov v skupine. Tieto informácie sú dôležité, pretože súborový systém EXT2 sa snaží distribuovať adresáre rovnomerne po celom disku.

V dvoch bitových poliach sa zaznamenávajú voľné bloky a bezplatné I-uzly (to je tiež zdedené z súborového systému MINIX 1 a odlišuje ho z väčšiny súborov UNIX súborov, v ktorých sa zoznam používa na voľné bloky). Veľkosť každej bitovej polí sa rovná jednému bloku. S veľkosťou bloku 1 kB sa táto schéma obmedzuje veľkosť blokov blokov 8192 blokov a 8192 I-uzlov. Prvé číslo je skutočné obmedzenie a druhá je prakticky nie. S blokmi 4 kB čísel štyrikrát viac.

Potom sa nachádzajú samotné I-uzly. Sú očíslované od 1 do určitých maxima. Veľkosť každého I-uzla je 128 bajtov a popisuje to presne jeden súbor. I-uzol obsahuje informácie o účte (vrátane celého spätného volania, ktoré ho jednoducho berú z I-uzla), ako aj dostatočné množstvo informácií na určenie umiestnenia všetkých diskových blokov, ktoré obsahujú údaje súborov.

Nasleduje I-uzly sú dátové bloky. Všetky súbory a adresáre sú tu uložené. Ak súbor alebo adresár pozostáva z viac ako jedného bloku, potom tieto bloky nie sú potrebné na kontinuálne na disku. V skutočnosti sú bloky veľkého súboru s najväčšou pravdepodobnosťou rozptýlené na celom disku.

Zodpovedajúce katalógy I-uzly sú roztrúsené cez všetky skupiny diskových blokov. EXT2 sa snaží zariadiť bežné súbory v rovnakom bloku blokov ako materský adresár, a dátové súbory sú v rovnakom bloku ako zdrojový kód I-uzol (za predpokladu, že existuje dostatok miesta). Táto myšlienka bola požičaná z Berkeley Fast File System System System (McKusick et al., 1984). Bitové polia sa používajú na rýchle rozhodnutia týkajúce sa výberu

miesta pre nové údaje súborového systému.

Keď sú zvýraznené nové bloky súborov, EXT2 tiež robí preventívny výber (Preallocates) niekoľkých (osem) dodatočných blokov pre rovnaký súbor (aby sa minimalizovala fragmentácia súborov v dôsledku budúcich záznamových operácií). Táto schéma distribuuje súborový systém na celom disku. Má tiež dobrý výkon (kvôli jeho trendu smerom k súvisiacej polohe a zníženej fragmentácii).

Ak chcete pristupovať k súboru, musíte najprv použiť jeden z systémových hovorov LINUX (napr. Otvorené), pre ktoré chcete určiť cestu k súboru. Táto cesta rozobratá a komponenty jej katalógov sú z nej extrahované. Ak je špecifikovaná relatívna cesta, vyhľadávanie začína zo súčasného katalógu procesu, inak - z koreňového adresára. V každom prípade je I-uzol pre prvý adresár ľahko nájsť: V deskriptore procesu je ukazovateľ k nej alebo (v prípade koreňového adresára) je uložený v konkrétnom disku na disku.

Adresár vám umožňuje používať názvy súborov do 255 znakov (obr. 10.18). Každý adresár sa skladá z určitého počtu diskových blokov (takže adresár môže byť zapísaný na disk Atomino). V adresári sú prvky pre súbory a adresáre v nepokojnej objednávke (každá položka priamo sleduje predchádzajúcu). Prvky nemôžu prekročiť hranice blokov, takže na konci každého blokového bloku je zvyčajne niekoľko nevyužitých bajtov.


Každá položka adresára na obr. 10.18 sa skladá zo štyroch polí pevnej dĺžky a jedného poľa dĺžky premennej. Prvé pole je číslo I-uzliny 19 pre kolosálny súbor, 42 pre objemný a 88 súbor pre adresár bigdir. Nasleduje pole REC_LEN, ktorý hlási veľkosť celého čísla adresára v bajtoch (prípadne spolu s ďalšími zástupcami po mene). Toto pole je potrebné nájsť nasledujúci záznam (v prípade, keď je názov súboru doplnený neznámym počtom bajtov). Na obrázku je toto pole indikované šípkou. Potom sa nachádza pole typu poľa, adresár atď. Posledná oblasť pevnej dĺžky obsahuje dĺžku názvu súboru v bajtoch (8, 10 a 6 pre tento príklad). Nakoniec, názov súboru prichádza v samotnom nulovom bajte a doplnený na 32-bitovú hranicu. Dodatočná poštová schránka Bytes môže nasledovať.

Na obr. 10.18, B sa zobrazí rovnaký adresár po odstránení prvku pre objemné. Všetko, čo sa vykonáva v katalógu - zvyšuje číslo v veľkosti nahrávania predchádzajúceho kolosálneho súboru a vstupné bajty adresára pre vzdialený objemný súbor sa transformuje do prvých rekordných plnív. Následne môžu tieto bajty použiť na nahrávanie pri vytváraní nového súboru.

Keďže vyhľadávanie v adresároch je lineárne, potom vyhľadávanie záznamu, ktorý je na konci veľkého adresára, môže trvať dlho. Systém preto podporuje adresáre cache, ku ktorému bol nedávno prijatý prístup. Vyhľadávanie v pamäti cache je vyrobené podľa názvu súboru a ak sa nachádza, potom drahé lineárne vyhľadávanie už nie je potrebné. Objekt DENTRY je zadaný do vyrovnávacej pamäte prvkov adresára pre každú z komponentov cesty, a (prostredníctvom svojho i-uzla) vyhľadáva v adresári následných položiek cesty (kým sa nachádza skutočný súbor I-uzol).

Ak chcete napríklad nájsť súbor zadaný absolútnou cestou (napríklad / usr / ast / súbor), musia sa vykonať nasledujúce kroky. Po prvé, systém nájde koreňový adresár, ktorý zvyčajne používa I-uzol s číslom 2 (najmä keď I-uzol s číslom 1 je vyhradený pre prácu so zlými blokmi). Zodpovedajúci prvok umiestni do vyrovnávacej pamäte položiek adresár (pre vyhľadávanie budúceho koreňového katalógu). Potom hľadá "USR" reťazec v koreňovom adresári, aby ste získali číslo I-uzol pre adresár / usr (ktorý je tiež zadaný do vyrovnávacej pamäte prvkov adresárov). Tento i-uzol je potom čítaný a diskové bloky sú získané z neho, takže si môžete prečítať adresár / usr a vyhľadávať v ňom AST. Po nájdení zodpovedajúceho prvku môžete definovať číslo I-uzol pre / usr / AST. S týmto číslom I-Node si môžete prečítať a nájsť adresárové bloky. Nakoniec hľadáme "súbor" a nájdite číslo jeho I-uzol. Použitie relatívnej dráhy je teda nielen vhodnejšie pre užívateľa, ale tiež znižuje množstvo prevádzky pre systém.

Ak je súbor k dispozícii, systém načíta číslo I-uzla a používa ho ako index tabuľky I-uzol (na disku) na vyhľadávanie zodpovedajúceho I-uzla a prečítajte ho do pamäte. Tento I-uzol je umiestnený v tabuľke I-uzol (tabuľka I-uzol) - dátová štruktúra jadra, ktorá obsahuje všetky I-uzly pre aktuálne otvorené súbory a adresáre. Formát I-uzlov by mal obsahovať (minimálne) všetky polia, ktoré vracajú systémové volanie stat, takže štat \u200b\u200bhovoru môže pracovať (pozri tabuľku 10.10). V Tab. 10.13 Zobrazuje niektoré polia štruktúry I-Node podporované v systéme súborov Linux. Skutočná štruktúra I-uzla obsahuje oveľa viac polí, pretože rovnaká štruktúra sa používa na reprezentáciu adresárov, zariadení a iných špeciálnych súborov. Štruktúra I-uzla tiež obsahuje tiež vyhradené pre budúce použitie poľa. Príbeh ukázal, že nevyužité bity sú dlhé bez záležitostí.

Pozrime sa, ako systém číta súbor. Pamätajete si, že typický hovor pre postup knižnice na spustenie systémového hovoru číta nasledovne:

n \u003d čítať (FD, pufor, NBYTES);


Keď jadro prijíma kontrolu, potom všetko, čo môže začať - tieto tri parametre a informácie vo svojich interných tabuľkách (súvisiacich s užívateľom). Jedným z prvkov týchto interných tabuliek je pole deskriptorov súborov. Je indexované deskriptormi súborov a obsahuje jeden prvok do každého otvoreného súboru (do určitého maximálneho množstva, predvolená hodnota je zvyčajne 32).

Myšlienkou je začať s týmto deskriptorom súborov a dokončiť zodpovedajúcu bublinu. Pozrime sa na jednu úplne možnú schému: Umiestnite ukazovateľ Pozel do tabuľky deskriptorov súborov. Napriek jednoduchosti táto metóda (bohužiaľ) nefunguje. Problém je nasledovný. S každým deskriptorom súborov musí byť v súbore pripojený ukazovateľ, ktorý definuje bajt v súbore, z ktorého začne ďalšia operácia čítania alebo nahrávania. Kde by sa mal tento ukazovateľ skladovať? Jednou z možností je umiestniť ho do tabuľky autobusov. Tento prístup však nebude schopný pracovať, ak niektoré procesy, ktoré nie sú navzájom spojené súčasne, otvorí rovnaký súbor, pretože každý proces by mal mať vlastný ukazovateľ.

Druhým riešením roztoku je umiestniť ukazovateľ v deskriptoroch tabuľky. V tomto prípade má každý otvor, ktorý otvorí proces, má vlastnú pozíciu v súbore. Bohužiaľ, takýto systém tiež nefunguje, ale príčinou zlyhania v tomto prípade nie je tak zrejmé a súvisí s charakterom zdieľania súborov v systéme Linuxu. Zvážte skript 5 shell, pozostávajúci z dvoch príkazov (P1 a P2), ktorý by sa mal vykonať zase. Ak je skript nazývaný príkazovým riadkom

očakáva sa, že príkaz P1 bude napísať výstup do súboru X a potom príkaz P2 bude tiež zapisovať svoj výstup do súboru X, počnúc miestom, kde sa príkaz P1 zastaví.

Keď Shell spustí proces P1, X súbor bude najprv prázdny, takže príkaz P1 jednoducho začne písať súbor do súboru v pozícii 0. Keď však P1 dokončí svoju prácu, určitý mechanizmus bude potrebovať, aby to zabezpečilo, že proces P2 bude potrebovať Pozri ako počiatočná pozícia nie 0 (a to je, ako sa stane, ak je poloha v deskriptoroch súborov v súbore v tabuľke) a hodnota, na ktorej PI zastavil.

Spôsob, akým sa vykonáva, je znázornené na obr. 10.19. Zameranie sa zastupuje do novej tabuľky - otvorený súbor popisov súborov (otvorený súbor popisov) - medzi tabuľkou deskriptorov súborov a tabuľkou I-uzlov a uložte ukazovateľ do súboru (ako aj čítanie / zápis bit) . Na obrázku je materským procesom škrupina a dcéra je najprv proces PI a potom proces P2. Keď škrupina vytvára proces PI, jeho používateľská štruktúra (vrátane tabuľky deskriptorov súboru) je presná kópia rovnakej membránovej štruktúry, takže obaja obsahujú ukazovatele na rovnakú tabuľku popisu otvorených súborov. Keď procesPI dokončí svoju prácu, deskriptor shell súborov naďalej zadá tabuľku popisu otvorených súborov, ktorá obsahuje polohu polohy P1 v súbore. Keď teraz shell vytvorí proces P2, potom nový detský proces automaticky zdedí pozíciu v súbore, zatiaľ čo nie nový proces, ani škrupina nie je povinná poznať aktuálnu hodnotu tejto pozície.


Ak súbor otvorí súbor, dostane vlastný záznam v tabuľke popisovacej tabuľky s jeho polohou v súbore, menovite, je potrebné. Úlohou otvoreného tabuľky popisu súboru je teda umožniť rodičovským a detským procesom zdieľať jeden ukazovateľ v súbore, ale pre zahraničné procesy prideliť osobné ukazovatele.

Takže (návrat k problému čítania čítania čítania), sme ukázali, ako sa stanoví pozícia v súbore a i-uzol. I-uzol obsahuje adresy disku prvých 12 súborov súborov. Ak poloha v súbore spadá do prvých 12 blokov, požadovaný blok súborov sa číta a údaje sa skopírujú používateľovi. Pre súbory, ktorých dĺžka presahuje 12 blokov, I-uzol obsahuje adresu disku jednotlivého nepriameho bloku (jediný nepriamy blok) (Obr. 10.19). Tento blok obsahuje adresy diskov dodatočných diskových blokov. Ak je napríklad veľkosť bloku 1 kb a adresa disku trvá 4 bajty, jediná nepriama jednotka môže uložiť až 256 adresy disku. Táto schéma vám umožňuje podporovať súbory do 268 kB.

ext2. (tiež volal ako ext2fs.) - Druhý rozšírený súborový systém(Druhý rozšírený súborový systém) je súborový systém postavený na jadre Linuxu. Stvoriteľ a vývojár Ext2 je karta REMY. Systém súborov EXT2 bol postavený na oplátku za starú, predchádzajúcu verziu - ext.

Podľa takýchto ukazovateľov ako rýchlosť a výkon môže tento súborový systém slúžiť ako odkaz. Toto je povedané o výsledkoch testov výkonnosti súborového systému. Napríklad v testoch pre rýchlosť konzistentného čítania a písania, ktorá vykonala technické centrum Dell, systém File EXT2 presahuje ext3, a je horší pri rýchlosti čítania len modernej EXT4.

Hlavnou nevýhodou EXT2 je, že nie je systém žurnálovania. Avšak, táto nevýhoda bola odstránená v nasledujúcom systéme súborov - EXT3.

eXT2 sa používa na flash kariet a jednotkách s pevným štátom (SSD), pretože nedostatok žurnálovania je výhodou pri práci s pohonmi s obmedzeniami na počte cyklov nahrávania.

História vytvárania ext2.

V čase rýchleho vývoja systému Linuxu používal systém súborov MINIX. Bola dosť vysoká stabilita, ale to bolo 16-bitové. V dôsledku toho existovalo prísne obmedzenie v 64 MB k sekcii. Okrem toho došlo k limitu maximálnej dĺžky názvu súboru, ktorý bol 14 znakov.

Tieto obmedzenia v agregácii boli dôvodom na rozvoj "rozšíreného súboru systému" (teda termín " Rozšírený súborový systém »). Mala úlohu vyriešiť dva problémy s minixom. Nový súborový systém bol uverejnený v apríli 1992. Bolo to ext, rozšírilo limit na veľkosť súboru na 2 gigabajty a nainštalovala limitnú dĺžku názvu súboru v 255 znakoch.

Napriek úspechu nového súboru systému však zostal dosť nevyriešených problémov. Napríklad nebola žiadna podpora pre samostatný prístup, neexistovali žiadne časové pečiatky s úpravou údajov. Potreba vyriešiť tieto úlohy a slúžiť ako motív na vytvorenie nasledujúcej verzie rozšíreného systému File EXT2 (" Druhý rozšírený súborový systém »). EXT2 bol vyvinutý v januári 1993, tiež implementuje zodpovedajúce zoznamy riadenia prístupu ACL a rozšírené atribúty súborov.

Logická organizácia EXT2.

Graf EXT2 Directory Hierarchia je prezentovaný vo forme siete. Je to spôsobené tým, že jeden súbor môže okamžite zadávať niekoľko adresárov.

Všetky typy súborov majú symbolické mená. V hierarchicky organizovaných súborových systémoch sa používajú tri typy mien: jednoduché, kompozitné a relatívne. Takže v ext2. V prípade jednoduchého mena je obmedzenie, že jej dĺžka by nemala prekročiť 255 znakov, okrem toho, že null symbol a lomka musia byť prítomné v mene.

Pokiaľ ide o symbol , obmedzenia sú spojené s reprezentáciou radov v jazyku SI, v prípade symbolu lomky, všetko je, že sa používa ako deliaci charakter medzi adresármi.

Celé meno je reťaz jednoduchých symbolických mien všetkých adresárov, prostredníctvom ktorých je cesta z koreňa beží do tohto súboru. V EXT2 môže súbor vstúpiť do niekoľkých adresárov, znamená to, že môže mať niekoľko úplných mien (jeden súbor je niekoľko celách). Ale rovnako, celé meno definuje súbor.

Atribúty EXT2:

  • typ a prístupové práva k súboru,
  • majiteľ, prístupová skupina,
  • informácie o povolených operáciách,
  • tREATION TIME, POSTUPY POSLEDNÝCH PRÍSTUPOV, POSLEDNÝCH ZMENA DÁTOM
  • aktuálna veľkosť súboru
  • Špecifikácia súborov:
    • pravidelný súbor
    • katalóg,
    • zariadenie na svetelné zariadenie,
    • zariadenie orientované na súbory,
    • pomenovaný kanál
    • symbolický odkaz
  • počet obsadených blokov,
  • iní

Atribúty súborov sú obsiahnuté v špeciálnych tabuľkách, a nie v adresároch, pretože môžu byť v jednoduchých systémoch súborov. V dôsledku toho má adresár veľmi jednoduchá štruktúra pozostávajúca z dvoch častí: číslo indexového deskriptora a názvu.

Fyzická organizácia EXT2.

Štruktúra disku

Ako súčasť EXT2 možno rozlíšiť: \\ t

  • bloky a bloky blokov;
  • indexový deskriptor;
  • superblock.

Celý priestor na disku je rozdelený na pevné bloky, blokuje viacnásobnú sektorovú veľkosť (1024, 2048, 4096 alebo 8192 bajtov). Veľkosť bloku je zadaná pri vytváraní súboru systému na disku. Všetky bloky sú priradené poradové čísla. Ak chcete znížiť fragmentáciu a počet pohybu hlavy pevného disku, pri čítaní veľkých dátových polí, bloky sú kombinované do skupín.

Základným konceptom súboru systému je deskriptor indexu (tiež nazývaný vrodený - informačný uzol.). Ide o špeciálnu štruktúru obsahujúcu informácie o atribútoch a telesnom mieste. Index DecAptštruktory sú kombinované do tabuľky obsiahnutého na začiatku každého bloku blokov. Superblock je hlavným prvkom systému súborov EXT2. Obsahuje všeobecné informácie o systéme súborov. Superblock sa nachádza v 1024 bajtoch od začiatku časti. Integrita superblock určuje funkčnosť systému súborov. OS vytvorí niekoľko záložných kópií superblock - v prípade poškodenia oddielu. V nasledujúcom bloku po superblock je globálny tabuľka deskriptorov - popis blokových skupín vo forme radu so všeobecnými informáciami o všetkých blokových skupinách.

BLOK GROUP

Všetky bloky blokov EXT2 sú rozdelené do skupín. Pre každú skupinu je v tabuľke globálnej deskriptora vytvorená samostatná položka. Tento vstup ukladá hlavné parametre, rovnako ako: číslo bloku v bitmapoch a tabuľkách, počet voľných blokov v skupine, počet indexových deskriptorov obsahujúcich adresáre.

Bitová mapa - Toto je systém, v ktorom každý bit informuje, či súbor zodpovedajúci tomu má súbor. Ak je bit 1, potom je blok zaneprázdnený. Podobná funkcia vykonáva bitmap indexových deskriptorov: ukazuje, ktoré indexové deskriptory sú zaneprázdnení a ktoré nie. Linuxové jadro sa snaží rovnomerne distribuovať adresár inode v skupinách a súboroch inode - presunúť sa do skupiny s materským katalógom. Zostávajúce miesto sa zobrazí v tabuľke, pretože údaje sú priradené k ukladaniu súborov.

Systém adresovania údajov

Systém adresovania údajov je jednou z najzávažnejších a kľúčových komponentov súboru systému. Vďaka tomu je požadovaný súbor medzi mnohými prázdnymi alebo obsadenými blokmi na disku.

eXT2 aplikuje nasledujúci súbor adresovania súborov. Na ukladanie adresy súboru sa izoluje 15 polí, z ktorých každý pozostáva zo 4 bajtov. Ak súbor zapadá do 12 blokov, čísla príslušných klastrov sú uvedené v prvých dvanástich adries. Ak veľkosť súboru presiahne 12 blokov, nasledujúce pole obsahuje adresu klastry, v ktorej je možné umiestniť čísla nasledujúcich súborov súborov. Thirteenth pole sa teda používa na nepriame adresovanie.

S maximálnou veľkosťou bloku v bajtoch 4096 môže klaster zodpovedajúci 13. poli obsahovať až 1024 čísiel nasledujúcich súborov súborov. Ak veľkosť súboru presahuje bloky 12 + 1024, potom sa použije 14. poli, v ktorom sa nachádza adresa klastra obsahujúcej 1024 klasterových čísel, z ktorých každý odkazuje na blok súborov 1024. Už existuje dvojité nepriame adresovanie. A ak súbor obsahuje viac ako 12 + 1024 + 1048576 blokov, potom sa aplikuje posledné 15. pole pre trojité nepriame adresovanie.

Takýto systém adresovania umožňuje mať súbory, viac ako 2 TB s maximálnou veľkosťou bloku v 4096 bajtoch.

Ak máte dva operačné systémy, Windows a Linux sú nainštalované, potom by ste sa pravdepodobne radi obsiahli na častiach voľného operačného systému priamo z Windows bez toho, aby sa obnovil počítač.

Bohužiaľ, podpora Linuxových OS sekcií v systéme Windows nie je k dispozícii. A márne. Zdá sa mi, že to môže byť krásne gesto od spoločnosti Microsoft.

Podstatou problému je, že systém Windows používa systém súborov NTFS a Linux má svoj vlastný spôsob, ako usporiadať súbory, rozšírený súborový systém, ktorý má najnovšiu verziu, ktorá má poradové číslo 4.

Linux je skôr priateľský k svojim užívateľom skôr ako jej obchodná sestra: v Linuxe, predvolené je podporované systémom súborov Windows NTFS. Samozrejme, nebudete môcť inštalovať Linux na sekcii NTFS, ale môžete z toho čítať a písať údaje.

EXT2 IFS.

EXT2 IFS podporuje Windows NT4.0 / 2000 / XP / 2003 / Vista / 2008 verzie X86 a X64 a umožňuje zobraziť obsah sekcií Linux EXT2 a môže tiež nahrávať na ne. Utility nastaví ovládač systému ext2fs.sys, ktorý rozširuje možnosti systému Windows a obsahuje plnú podporu pre EXT2 v IT: Oddiely EXT2 sú priradené písmená diskov a súbory a priečinky sa na nich zobrazujú v dialógoch všetkých aplikácií, napríklad , v prieskumníkovi.

EXT2 FSD.

EXT2 FSD je voľný ovládač pre systémy Windows (verzie 2K / XP / Vista / 7 X86 a X64). Podobne ako predchádzajúca pomôcka, ktorú je v jeho podstate aj vodičom, obsahuje plnú podporu pre súborový systém EXT2 v systéme Windows.

LTOLS - Utility príkazového riadka, ktorý vám umožní čítať a nahrávať dáta na / z Linuxu EXT2, EXT3 a REISERFS (štandardné systémy súborov Linux) z DOS alebo Windows.

Existuje verzia programu s grafickým plášťom (napísaným na Java) - Ltoolsgui, ako aj verzia s grafickým plášťom.

Ext2Read.

Pre dezert ako vždy najchutnejšie.

Ext2Read je nástroj založený na manažérskom súbore, ktorý vám umožňuje zobraziť a zapisovať do sekcií EXT2 / EXT3 / EXT4. Podporuje LVM2 a to odlišuje od iných programov tohto preskúmania, súborového systému EXT4. Vložená podpora rekurzívnych adresárov.

A tu je druhý dezert. Spočiatku bolo povedané, že dobré gesto zo spoločnosti Microsoft by bolo zahrnuté v predvolenom nastavení podpory pre časti Linuxu v systéme Windows.

Gesto sa stále uskutočnilo na 20. výročí Linuxu. Vidieť sami.

To je všetko. Ďakujem za pozornosť. Budem bojovať späť z nechtov. Ich toto jar je veľa sooo. 🙂

Vladimir Miskov

Architektúra systému EXT2

Článok sa zaoberá logickou štruktúrou súboru súboru EXT2 systému operačného systému Linux.

Základné komponenty systému súborov EXT2

Rovnako ako v akomkoľvek systéme súborov UNIX, môžu byť uvedené nasledujúce komponenty ako súčasť súborového systému EXT2:

  • bloky a bloky blokov;
  • informačný uzol;
  • superblock.

Bloky a bloky blokov

Celý priestor na disk diskov je rozdelený na pevné veľkostné bloky, viacero sektorových veľkostí - 1024, 2048 a 4096 bajtov. Veľkosť bloku je indikovaná pri vytváraní súboru systému na pevnom disku. Menšia veľkosť bloku šetrí priestor na pevnom disku, ale tiež obmedzuje maximálnu veľkosť systému súborov. Všetky bloky majú poradové čísla. Aby sa znížila fragmentácia a počet pohybu hlavy pevného disku, pri čítaní veľkých dátových polí, bloky sú kombinované do skupín.

Informačný uzol

Základným konceptom súboru systému je informačný uzol, informačný uzol alebo inode. Toto je špeciálna štruktúra, ktorá obsahuje informácie o atribútoch a polohe fyzického súboru. Atribúty súborov sú jeho typ (normálny súbor, adresár atď.), Prístupové práva, identifikátor majiteľa, veľkosť, stvorenie času. Informácie o fyzickej polohe je postupnosť absolútnych blokových čísel obsahujúcich údaje.

Superblock

Superblock je hlavným prvkom systému súborov EXT2. Obsahuje nasledujúci textový systém súborov (neúplný zoznam):

  • celkový počet blokov a inode v súbore;
  • počet voľných blokov a inode v systéme súborov;
  • veľkosť bloku súborového systému;
  • počet blokov a inode v skupine;
  • veľkosť inode;
  • identifikátor systému súborov;
  • Číslo prvého dátového bloku.

Inými slovami, toto je číslo bloku obsahujúce superblock. Toto číslo sa vždy rovná 0, ak je veľkosť blokového bloku súborového systému väčšia ako 1024 bajtov a 1, ak veľkosť bloku je 1024 bajtov.

Funkčnosť súboru systému priamo závisí od integrity superblock. Operačný systém vytvorí niekoľko záložných kópií superbloku, aby ste mohli obnoviť v prípade poškodenia. Hlavná kópia sa nachádza na posunu 1024 bajtov zo začiatku časti, na ktorom je vytvorený súborový systém (prvé 1024 bajtov sú vyhradené pre zavádzač operačného systému).

Včasné verzie systému súborov EXT2 vytvorili kópie superblock na začiatku každého bloku blokov. To viedlo k veľkej strate miesta na disku, takže neskôr sa znížil počet záložných kópií superblock a skupiny blokov 0, 1, 3, 5 a 7 boli pridelené na ich umiestnenie.

Formát skupiny BLOK

Všeobecný konštrukčný diagram súboruového systému EXT2 je uvedený na obr. jeden.

Takmer všetky blokové skupiny majú rovnaký formát. V každej skupine sa okrem informačných blokov uložia informácie o zamestnávaní blokov a skupín inode vo forme bitmapy. Blok blokov 0 tiež obsahuje superbloky a deskriptory tabuľky skupín, ktoré budeme zvážiť nižšie.

Bittou mapu blokov zamestnanosti sa zvyčajne nachádza v prvom bloku skupiny. Ak je v skupine prítomná záložná kópia, bitmap sa nachádza v druhom bloku skupiny. Veľkosť bitmapy je jeden blok. Každý bit tejto karty označuje stav bloku. Ak je bit nastavený (1), blok je zaneprázdnený, ak sa blok resetuje (0) - blok je bezplatný. Prvý blok skupiny zodpovedá nulovému kúsku karty, druhý blok - prvý bit, atď.

Inode, ktorý sa nachádza v tej istej skupine, sa zbierajú v tabuľke. V skupine Bite MAPE MAPO AKTULÁCIE CHAPTY CHARTY CHCEUTIZÁCIE POTREBUJÚCEHO STAVY prvku v tabuľke skupiny Inode.

Každý blok blokov je opísaný pomocou deskriptora blokovej skupiny. Skupinová rukoväť je štruktúra, ktorá obsahuje informácie o adrese bitovej mapy blokov blokov, nastavovacej bitovej bitovej bitovej bitky a inode tabuľky príslušnej skupiny. Všetky deskriptory skupiny sa zbierajú v tabuľke deskriptorov skupiny, ktorá je uložená v skupine blokov 0. Rovnako ako pre superblock, operačný systém vytvára záložné kópie deskriptorov tabuliek.

Algoritmus súborov

Každý inode, rovnako ako blok, má poradové číslo, jedinečné v systéme súborov, a obsahuje informácie len o jednom súbore. Ak chcete získať prístup k obsahu súboru, musíte poznať poradové číslo zodpovedajúceho inódu zodpovedajúcej.

Ako je uvedené vyššie, informácie o umiestnení fyzického súboru sú obsiahnuté v Inode. Tieto informácie sú sekvenciou 32-bitových blokov obsahujúcich údaje obsahujúce súbory (obr. 1). Prvých 12 čísiel sú priame odkazy na informačné bloky (číslo priameho bloku). 13. číslo je nepriamy odkaz (nepriame číslo blokov). Obsahuje adresu bloku, v ktorej sú uložené adresy informačných blokov. 14. miestnosť je dvojitý nepriamy odkaz (dvojité číslo blokov), 15. Číslo je trojnásobný nepriamy odkaz (číslo trojitého bloku).

Názov súboru v Inode nie je zahrnutý, nastavenie zhody medzi názvami súborov a číslami sekvencií Inode sa vykonáva prostredníctvom adresárov.

Katalógy

Súbory v systéme UNIX a POSIX sú uložené v systéme hierarchického súboru stromu. Koreňový adresár súboru je koreňový adresár označený symbolom "/". Každý prechodný uzol v strome súborov je adresár. Konečné vrcholy stromu súborového systému sú buď prázdne adresáre alebo súbory. Absolútna cesta Názov súboru sa skladá z mien všetkých adresárov, ktoré vedú k zadanému súboru, počnúc koreňovým adresárom. Názov skladby /Home/test.File znamená, že súbor testu.file sa nachádza v domovskom adresári, ktorý sa zase nachádza v katalógu root "/".

Katalóg, ako aj súbor, je opísaný pomocou inode. Obsah adresára je rad záznamov, z ktorých každý obsahuje informácie o súbore, ktorý je "vnútri" aktuálneho adresára.

Záznam adresára má nasledujúci formát:

  • súbor inode sekvenčného čísla;
  • dĺžka nahrávania v bajtoch;
  • názov súboru;
  • dĺžka názvu súboru.

Vyhľadávanie inode súboru vždy začína s koreňovým adresárom. Napríklad, aby sa dosiahlo číslo sekvencie Inode v koreňovom adresári, operačný systém musí získať obsah koreňového adresára, nájsť ho v ňom s názvom tohto súboru a odstrániť číslo súboru Iny z tohto záznamu.

Niekoľko čísiel inódu sú vyhradené systémom súborov, ich zoznam je obsiahnutý v súbore hlavičky:

* Špeciálne čísla inode

#Define ext2_bad_ino 1 / * Zlé 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ádzač Inode * /

#Define ext2_undel_dir_ino 6 / * Undelete Directory Inode * /

Na zaznamenanie koreňového adresára je Inode vyhradený na čísle 2 (root inode). Tento inode je v bloku blokov 0 a berie druhú polohu v tabuľke inode tejto skupiny. Počet prvých confartovaných inódy je uložený v superblock.

Po určení čísla sekvencie Inode, jadro vypočíta číslo skupiny, v ktorom sa tento inódium nachádza, a jeho poloha v tabuľke skupiny Inode. Vzhľadom k tomu, že operačný systém dostane plnú informáciu o súboroch, vrátane blokových adries, v ktorých sa uloží obsah súboru.

Počet blokov, v ktorom sa nachádza INODE, je vypočítaný vzorcom:

skupina \u003d (INODE_NUM - 1) / INODES_PER_GROUP

kde:

  • skupina.- požadovaný počet blokových blokov;
  • inode_num - InDode sekvenčného čísla definujúci súbor;
  • inodes_per_group - Počet inóru v skupine (tieto informácie sú v superbloku).

Poloha inode v tabuľke skupiny Inode sa stanovuje vzorcom:

index \u003d (inode_num - 1)% inodes_per_grupa

kde index je pozícia v tabuľke.

Zvážte príklad získania obsahu súboru test.File umiestnený v koreňovom adresári. Prečítajte si súbor /test.file:

  • v poli záznamov o koreňovom adresári nájdite záznam o tomto súbore;
  • extrahuje poradové číslo súboru inode, vypočítajte číslo skupiny, v ktorom sa tento inode nachádza;
  • z deskriptora tejto skupiny získate adresu tabuľky skupiny Inode;
  • vypočítajte polohu inódu v tejto tabuľke;
  • prečítajte si súbor Inode;
  • od iného na extrahovanie adresy adresy adresy a prečítajte si informácie v týchto blokoch.

Na obr. 2 Podrobnosti zobrazujú údaje / testovací súbor. Súbor.

    Kroky 1-6 - Čítanie katalógu koreňov:

  1. Z skupiny blokov 0 sa čítajú deskriptory tabuľky.
  2. Z tabuľky deskriptorov tabuľky sa získa skupina skupín 0 blokov 0 a adresa skupiny inode sa odčíta.
  3. Z skupiny blokov 0 číta tabuľku inode.
  4. Číslo sekvencie inóru koreňového adresára je fixované a rovné 2, takže druhý prvok číta z skupiny 0, ktorá obsahuje adresu bloku s obsahom koreňového adresára. Predpokladajme, že táto jednotka sa nachádza v bloku A. blokov.
  5. Z skupiny blokov A číta blok obsahujúci záznamy koreňového adresára.
  6. Hľada sa záznam o zázname s názvom "test.file". Ak sa nájde takýto záznam, súbor Inode Series "test.file" sa z nej získa.
  7. Definovaním čísla Inode môžete pristupovať k informačným blokom súboru (kroky 7-11):

  8. Číslo skupiny sa vypočíta, v ktorom sa tento inódium nachádza, a jeho poloha v tabuľke skupiny inode (predpokladá sa, že číslo skupiny sa rovná B a polohu v tabuľke - X).
  9. Z tabuľky deskriptorov skupiny vyberte deskriptor skupiny B a adresa tabuľky inóru tohto bloku blokov je z neho číta.
  10. Tabuľka inode sa číta z skupiny B Blok.
  11. Z tabuľky inóru blokov blokov B číta inode, ktorý sa nachádza v polohe X.
  12. Zo čítacieho inódu je blokové adresy s obsahom obsahu /test.file načítané a informácie sa čítajú z bloku so zadanou adresou.

Implementácia softvéru algoritmu čítania súborov

Zdrojové údaje: Tam je rozdelenie pevného disku, na ktorom je vytvorený súborový systém EXT2. Táto časť zodpovedá súboru zariadenia / Dev / HDA3. V koreňovom adresári sekcií sa vytvorí domáci podadresár a obsahuje súbor test.FILE nasledujúceho obsahu:

By cytry žil na juhu?

Áno, ale falošná inštancia!

1234567890-=

Nemyslite si, že zlé, nie je nezmysel, ale test cvičenia z výcviku telegrafistov v jednotkách komunikácie bývalého ZSSR!

Pozor! Je potrebné vziať do úvahy jeden dôležitý bod. Vytvorený súbor nebude okamžite zaznamenaný na disk a najprv spadnúť do nárazníka na disk. Pokus o okamžité získanie obsahu súboru podľa vyššie uvedeného algoritmu nevedie k ničomu, pretože informácie o tomto súbore nie sú fyzicky na disku. Je potrebné "vynútiť" systém na nahrávanie diskového pufra na disku. Najjednoduchší spôsob, ako to urobiť, je vykonanie reštartu. Preto po vytvorení súboru reštartujte systém.

Našou úlohou používa súbor zariadenia / Dev / HDA3, čítať súbor /home/test.file pomocou metódy priameho prístupu k svojim informačným blokom.

Zvážte implementáciu programu modulu, ktorý vykonáva túto operáciu.

Súbory hlavičky:

#Include.

#Include.

#Include.

#Include.

#Include.

#Include.

Súbor hlavičky definuje konštrukčné typy opisujúce hlavné komponenty systému súborov EXT2 - SuperBlock, deskriptor blokovej skupiny, informačný uzol, položku adresára.

Zvážte krátko polia, ktoré sú zahrnuté v každej z týchto štruktúr:

  1. Štruktúra EXT2_SUPER_BLOCK SUPERBLOCK ŠTRUKTÚRA:
    • __U32 s_inodes_count- celkový počet inódu v súbore;
    • __U32 s_blocks_count.- celkový počet blokov v systéme súborov;
    • __U32 s_Free_blocks_count.- počet voľných blokov;
    • __U32 s_Free_inodes_count.- počet voľných inódu;
    • __U32 S_FIRST_DATA_BLOCK- číslo prvého dátového bloku (číslo bloku, v ktorom sa nachádza superblock);
    • __U32 s_log_block_size. - Táto hodnota sa používa na výpočet veľkosti bloku. Veľkosť bloku je určená vzorcom: veľkosť bloku \u003d 1024<< s_log_block_size;
    • __U32 s_blocks_per_group - počet blokov v skupine;
    • __U32 s_inodes_per_group - počet inode v skupine;
    • __U16 s_magic. - Identifikátor súboru File System (0xEf53 podpis);
    • __U16 s_inode_size - veľkosť informačného uzla (inode);
    • __U32 S_FIRST_INO. - Počet prvých nešikovných inódy.
  2. Štruktúra EXT2_GROUP_DESC Skupina Deskriptor Konštrukčná štruktúra:
    • __U32 BG_BLOCK_BITMAP- bitmap zamestnania skupinových blokov;
    • __U32 BG_INODE_BITMAP- Bitting Mapa skupiny zamestnanosti Inode;
    • __U32 BG_INODE_TABLE - Adresa tabuľky inóru.
  3. Štruktúra EXT2_INODE INFORMÁCIE ŠTRUKTÚRY NODE:
    • __U16 I_MODE je typom súborov a prístupových práv k nemu. Typ súboru Definovanie bitov 12-15 tohto poľa:
      • 0xA000.- symbolický odkaz;
      • 0x8000.- normálny súbor;
      • 0x6000.- blok blokového bloku;
      • 0x4000- katalóg;
      • 0x2000- symbolický súbor zariadenia;
      • 0x1000- kanál FIFO.
    • __U32 I_SIZE. - veľkosť v bajtoch;
    • __U32 I_ATIME.- Posledný čas prístupu súborov;
    • __U32 I_CTIME - čas tvorby súboru;
    • __U32 I_MTIME.- čas poslednej úpravy;
    • __U32 i_blocks. - počet blokov obsadených súborom;
    • __U32 i_block - Adresy informačných blokov (vrátane všetkých nepriamych odkazov).
  4. Hodnota EXT2_N_BLOCKS je definovaná v súbore:

    * Konštanty v porovnaní s dátovými blokmi

    #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. Štruktúra EXT2_DIR_ENTRY_2 DIRECTORY VSTUPUJÚCEJ ŠTRUKTÚRY:
  6. #Define ext2_name_len 255.

  • __U32 Inode - súbor inode;
  • __U16 REC_LEN. - Dĺžka nahrávania adresára;
  • __U8 NAME_LEN.- dĺžka názvu súboru;
  • názov char.názov súboru.

Definujeme názov sekcie, na ktorej je vytvorený súborový systém, globálne štruktúry a premenné.

#Define Part_name "/ Dev / HDA3"

struct ext2_super_block sb;

/ * Buffer na ukladanie deskriptorov tabuliek * /

nepodpísaný char buff_grp;

nepodpísaný charff; / * Informácie o vyrovnávacej pamäti * /

induv; / * Zariadenie zariadenia * /

int bkslize; / * Veľkosť bloku súborov * /

Definujeme niekoľko funkcií, ktoré potrebujeme pracovať:

Funkcia čítania Superblock:

void Read_sb ()

MEMETOVANIE (& SB, 0,1024);

Od začiatku sekcie sme posunuli 1024 bajtov a prečítajte si superblock na štruktúru štruktúry STRUSTER EXT2_SUPER_BLOCK SB:

Ak (Lseek (Indev, 1024.0)< 0) {

Perror ("Lseek");

Výstup (-1);

Ak (čítať (induv, char * & sb, SIBEROF (SB))< 0) {

Perror ("čítanie");

Výstup (-1);

Skontrolujte identifikátor systému súborov:

Ak (sb.s_magic! \u003d Ext2_super_magic) (

Printf ("Neznámy typ súborového systému!");

Výstup (-1);

Hodnota ext2_super_magic je definovaná v súbore hlavičky.

Zobrazí informácie o systéme súborov, ktorý sa nachádza v Superblock:

printf ("Superblock info -----------");

Printf ("počítať inodes -% u", sb.s_inodes_count);

Printf ("Blocks Count -% U", sb.s_blocks_count);

Printf ("Veľkosť bloku -% u", 1024<< sb.s_log_block_size);

Printf ("prvý inode -% D", sb.s_first_ino);

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

Printf ("veľkosť 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 ("prvý dátový blok -% U", sb.s_first_data_block);

Návrat;

Funkčné čítanie deskriptorov tabuľky:

void Read_GDT ()

Vypočítajte veľkosť bloku súborového systému:

BLKSIZE \u003d 1024.<< sb.s_log_block_size

Tabuľka deskriptorov skupiny sa nachádza v bloku, ktorý sa nachádza hneď za prvým dátovým blokom (pre superblock).

Prečítajte si tabuľku:

Ak (lseek (induv, (sb.s_first_data_block + 1) * BLKSIZE, 0)< 0) {

Perror ("Lseek");

Výstup (-1);

IF (čítať (Indev, Buff_GRP, BLKSIZE)< 0) {

Perror ("čítanie");

Výstup (-1);

Návrat;

Funkcia obsahu inódu podľa jej čísla:

void Get_inode (Int inode_num, struct ext2_inode * in)

Vstupné funkcie funkcie - Číslo sekvencie inode a štruktúra štruktúry STRUKTY EXT2_INODE.

Štruktúra ext2_group_desc GD;

U64 Skupina, index, POS;

Vypočítajte počet blokových skupín, v ktorom je inéda umiestnený so sekvenčným číslom INODE_NUM:

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

Z deskriptorov tabuľky odstráňte deskriptor skupiny a skopírujte ho na štruktúru GD GD STRUKTY EXT2_GROUP_DEV)

MEMANT ((VOID *) & GD, 0, SITEOF (GD));

Memcpy ((Void *) & GD, Buff_GRP + (skupina * (SITEOF (GD))), SITEOF (GD));

Vypočítajte polohu inode so sekvenčnou hodnotou INODE_NUM v tabuľke inode skupinovej skupiny a prečítajte si tento inode v štruktúre štruktúry STRUKTY 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);

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

Návrat;

Funkcia čítania údajov:

void Read_iblock (struct ext2_inode * in, int blk_num)

U64 POS;

Parametre vstupných funkcií - Štruktúra inode a číslo bloku (priemerné číslo zo sekvencie blokov adresy sa nachádza v inode).

Vypočítajte posun na informačný blok na úseku a prečítajte si túto jednotku do Global Buffer Buff:

POS \u003d ((__U64) IN-\u003e I_BLOCK) * BLKSIZE;

PERAD64 (Indev, Buff, Blksize, POS);

Návrat;

Funkcia pre prijímanie obsahu koreňového adresára:

vAID GET_ROOT_DENTRY ()

Štruktúra ext2_inode;

Číslo sekvencie inódu koreňového adresára je známe, takže dostaneme obsah inému koreňového adresára a prečítame jeho obsah v pufri:

get_inode (ext2_root_ino, & in);

READ_IBLOCK (& IN, 0);

Buff buffer bude obsahovať obsah koreňového adresára.

Návrat;

Funkcia prijímania čísla inódu podľa názvu súboru:

int get_i_num (názov char *)

Parametre vstupných funkcií - názov súboru. Return Hodnota - súbor sekvenčného čísla Inode.

Int i \u003d 0, rec_len \u003d 0;

Struct ext2_dir_entry_2 dent;

V buff buffom je pole položiek adresára. Ak chcete určiť poradové číslo súboru Inode, musíte nájsť v tomto poli s názvom tohto súboru:

Pre (; ja< 700; i++) {

Memcpy ((Void *) & Dent, (buff + rec_len), veľkosť (dent));

Ak (! MEMCMP (Dent.Name, názov, dent.name_len)) prestávka;

Rec_len + \u003d dent.rec_len;

Návrat dent.inode;

A teraz zapíšeme hlavnú funkciu:

int hlavné ()

Premenné a štruktúry:

Štruktúra ext2_inode;

// Absolútny názov cestovného súboru

Nepodpísaný char * full_path \u003d "/home/test.file";

Nepodpísaný charf1;

Statický int i \u003d 1;

Int n, i_num, utone, typ;

Prvý znak v Absolútnom mene súboru by mal byť priamym lomkou (/). Skontrolujte:

Ak (Full_path! \u003d "/") (

Perror ("Slash");

Výstup (-1);

Otvorte súbor zariadenia, prečítajte si superblocks a deskriptory tabuľky:

Indev \u003d otvorené (part_name, o_rdonly);

Ak (Indev.< 0) {

Perror ("otvorený");

Výstup (-1);

Read_sb ();

Read_gdt ();

Dostávame obsah katalógu root:

get_root_dentry ();

Teraz buff buffer obsahuje všetky záznamy koreňového adresára (ak chcete, môžete ich uložiť v samostatnom súbore). Teraz, s koreňovým adresárovým záznamom, môžeme sa dostať na obsah súboru test.file pomocou vyššie uvedeného algoritmu čítania súborov. Na tento účel organizujeme cyklus. V tele cyklu budeme analyzovať názov absolútnej cesty súboru, zvýraznenie jej prvky - podadresáre (je to jeden, domov) a názov vyhľadávacieho súboru (test.file). Pre každý prvok definujeme poradové číslo inode, považujeme tento inode a potom získate obsah nulového bloku (zo sekvencie adresných blokov umiestnených v Inode):

zatiaľ čo (1) (

MEMSET (IFF1,0, SITEF (FUFF1));

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

Buff1 [n] \u003d full_path [i];

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

I ++;

Prestávka;

buff1 [n] \u003d "?";

Pre každý prvok absolútnej cesty názvu súboru určujeme číslo sekvencie Iny, prečítame tento inode v pamäti a potom získate obsah nulového bloku:

I_num \u003d get_i_num (buff1);

Get_inode (i_num, & in);

READ_IBLOCK (& IN, 0);

Zobrazenie informácií o súbore (meno, číslo inode, veľkosť súboru a jeho typ):

Printf ("Number inode -% U", I_NUM);

Printf ("názov súboru -% s", buff1);

Printf ("veľkosť súboru -% u", in.i_size);

Typ súboru je určený staršími štyrmi bitmi oblasti I_MODE FIELD STRUSTER EXT2_INODE:

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

Printf (typ -% D ", typ);

Prepínač (typ) (

Prípad (0x04):

Printf ("(katalóg)");

Prestávka;

Prípad (0x08):

Printf ("(normálny súbor)");

Prestávka;

Prípad (0x06):

Printf ("(bloková jednotka)");

Prestávka;

Prípad (0x02):

Printf ("(symbolické zariadenie)");

Prestávka;

Predvolené:

Printf ("(neznámy typ)");

Prestávka;

Skontrolujte typ súboru. Ak je to pravidelný súbor - prerušte cyklus:

Ak (typ & 0x08) (

Buff Buffer budú informácie prečítané z informačných blokov súboru /home/test.file. Tieto informácie píšeme do súboru:

Outp \u003d Otvoriť ("OUT", O_CREAT | O_RDWR, 0600);

Písať (oblečenie, buff, veľkosť (buff));

Blízko (utwa);

Prestávka;

Odchádzame:

Blízko (induv);

Návrat 0;

O tejto úvahe logickej štruktúry súborového systému EXT2.

(Druhý rozšírený súborový systém).

· Lesníctvo súborových systémov Linuxu

· Štruktúra diskov v ext2F

·

· Katalógy

· Zariadenia súborov

·

·

· Knižnica EXT2FS

· Časť systému EXT2FS

· Výpočet súkromia

Matfak

Prog.

2. kurz 5. gramy.

Chichirov Andrey

Falomethem Ext2Fs (druhý rozšírený súborový systém).

Expirácie súborových systémov Linuxu

Linuxové premenné boli databázou na základe operatívneho systému MINIX. Bolo by nominované disky medzi dvoma systémami, ako mať nový súborový systém, takže Linus Torvalds nasledoval pododdiel v Linuxovom Minixovom systéme. Kým tento súborový systém bol celkom účinný s relatívne malým množstvom chýb.

Blezy spojené s systémom MINIX sú však pomerne vysoké, takže začali premýšľať o novom súborovom systéme pre Linux.

Ak chcete ovládať implementáciu nového súboru systému v jedom Linuxu, bol použitý virtuálny súborový systém (VFS). VFS napísal Chris Provenzano, a potom Linus Torvalds to prešlo do integrácie do jedu.

Po inštalácii do jedu VFS, nový systém System FAL FAL (rozšírený súborový systém) bol jednoduchý a pridaný do Linuxu 0,96c VexA. V novom systéme súborov boli odstránené dva značné minixové systémy: jeho maximálny objem by mohol dosiahnuť 2 gigabajty a maximálny názov súboru je 255 znakov. Bol to úspech s Minixovým súborovým systémom, hoci niektoré jednoducho zrejmé sú stále písanie. Neexistoval žiadny čiastkový prístup, modifikácia indexového desippetu a modifikovať bunky zmeny súboru. Tento súborový systém používal súvisiace zoznamy, ktoré sa majú otvoriť s voľnými blokmi a indexovými odjazdmi, čo značne ovplyvnili systém systému: S zoznammi zoznamov sa stal nešpecifikovaným a doutovým, ktorý sa používa na podanie súboru systému.

Rozhodnutie týchto sondy bolo vydanie dvoch nových súborových systémov v januári 1993: XIA a EXT2FS (druhý rozšírený súborový systém). Z väčšej časti bola súborový systém XIA založený na Minix s pridaním niekoľkých nových funkcií. V podstate to bola možnosť cvičenia s dlhými názvami súborov, schválenie diskov väčšieho objemu a napätia buniek zmien súborov. S jemnými kameňmi bola ext2FS založená na exTRF s mnohými vylepšeniami a dodatkami. Mala tiež možnosť pre budúcnosť.

Keď boli tieto dva súborové systémy uvoľnené, boli funkčne pily. Systém XIA bol spoľahlivejší ako ext2F, v dôsledku jeho minimalizácie. Chyby v systéme EXT2FS boli nespevnené na ich pokojnejšiu aplikáciu a bol pridaný veľký počet nových funkcií a vylepšení. Aktuálny súbor File ELT2FS je veľmi spoľahlivý a stal sa systémom súborového systému de facto Linux.

Nasledujúca tabuľka poskytuje spoločné informácie o funkčnosti funkčných funkcií, ktoré sú vybavené systémovými systémami.

Minix FS.

Ext fs.

Ext2 fs.

Xia FS.

Maximálny systém súborov

Maximálna dĺžka súboru

Maximálny názov názvu súboru

Pododdiel veže zmien zmien súborov

Schopnosť tempo

Premeniteľná PazMP BLOKA

Ochrana infoment

Ak potrebujete dĺžku názvu súboru Ext 2. Môže sa zvýšiť na 1012.

EXT2FS preniknú niektorým blokom pre užívateľa root. Zvyčajne je to 5% z celkového počtu, čo umožňuje administrácii systému, aby sa zabránilo nedostatku pevný disk rozsah jeho plnenia používateľom užívateľov užívateľov DPUUGI.

Štruktúra diskov v ext2F

Výrobcovia pevného disku zvyčajne dodávajú svoje výrobky naformátované na nízkej úrovni. Pokiaľ viem, to znamená, že všetky miesta na disku s pomocou špeciálnych štítkov je rozbité "sektormi", veľkosť 512 bajtov. Takýto disk (alebo disk) musí byť pripravený na použitie v špecifickom operačnom systéme. V MS-DOS alebo Windows sa postup prípravy nazýva formátovanie a v Linuxe - vytvorenie systému súborov. Vytvorenie systému súborov ext2fs. Je to vytvoriť v časti Disková časť konkrétnej logickej štruktúry. Táto štruktúra je postavená nasledovne. Po prvé, oblasť zavádzania je pridelená na disku. Boot oblasť je vytvorená v ľubovoľnom systéme súborov. Na primárnom oddiele obsahuje zavádzací zápis - kódový fragment, ktorý iniciuje proces načítania operačného systému pri spustení. Na iných častiach sa táto oblasť nepoužíva. Všetok zvyšok miesta na disku je rozdelený do blokov. Jednotka môže byť veľkosť od 1, 2 alebo 4 kilobajtov. Blok je adresovaný jednotkou miesta na disku. Výber polohových súborov sa vykonáva celé bloky, takže pri výbere veľkosti bloku musíte kompromitovať. Veľká veľkosť bloku, spravidla znižovať počet odvolaní na disk pri čítaní alebo písaní súboru, ale zvyšuje podiel zriedkavo použitého priestoru, najmä ak existuje veľký počet malých súborov.

Bloky, v jeho oblasti, sú kombinované do skupín blokov. Blokové skupiny v systéme súborov a blokov vo vnútri skupiny sú očíslované postupne, počnúc 1. Prvý blok na disku má číslo 1 a patrí do skupiny s číslom 1. Celkový počet blokov na disku (na disku Časť) je delič zväzku disku vyjadrený v sektoroch. A počet blokových skupín nie je potrebný na rozdelenie počtu blokov, pretože posledná skupina blokov nemusí byť úplná. Začiatok každého bloku blokov má adresu, ktorú možno získať ako ((počet skupín - 1) * (počet blokov v skupine)).

Každá skupina blokov má rovnakú štruktúru. Jeho štruktúra je prezentovaná v nasledujúcej tablete.

Štruktúra skupiny blokov diskového oddielu v ext2fs.

Prvý prvok tejto štruktúry (Superblock) je rovnaký pre všetky skupiny, a všetky ostatné sú pre každú skupinu jednotlivec. Superblock je uložený v prvom bloku každej skupiny blokov (s výnimkou skupiny 1, v ktorom sa v prvej jednotke umiestni načítanie záznamu). Superblock Je to východiskový bod súboru. Má veľkosť 1024 bajtov a vždy umiestnené na posunu 1024 bajtov zo začiatku systému súborov. Prítomnosť niekoľkých kópií superbloku je spôsobená extrémnym významom tohto prvku systému. Superblock Duplicates sa používajú pri obnovení súboru systému po zlyhaniach.

Informácie uložené v Superblock sa používajú na usporiadanie prístupu k ostatným údajom na disku. Superblock definuje veľkosť systému súborov, maximálny počet súborov v sekcii, množstvo voľného miesta a obsahuje informácie o tom, kde hľadať neobsadené oblasti. Keď spustíte operačný systém, superblock sa číta do pamäte a všetky zmeny v systéme súborov najprv nájdete displej v kópii superblock umiestneného v OP a sú zaznamenané len periodicky. To vám umožní zvýšiť výkon systému, čo najviac používateľov a procesov neustále aktualizovať súbory. Na druhej strane, keď je superblock vypnutý, musí byť zapísaný na disk, ktorý vám nedovoľuje vypnúť počítač jednoduchým vypnutím výkonu. V opačnom prípade, s ďalším zaťažením, informácie zaznamenané v superbloku nie sú vhodné pre skutočný stav systému súborov.

Superblock má nasledujúcu štruktúru

Názov poľa

Typ

Komentár

s_inodes_count

Drobný

Počet deskriptorov indexov v systéme súborov

s_blocks_count.

Drobný

Počet blokov v súbore

s_r_blocks_count.

Drobný

Počet blokov vyhradených pre Superuser

s_free_blocks_count.

Drobný

Počet voľných blokov

s_free_inodes_count.

Drobný

Počet deskriptorov bezplatného indexu

s_first_data_block

Drobný

Prvý blok, ktorý obsahuje údaje. V závislosti od veľkosti jednotky môže byť toto pole rovné 0 alebo 1.

s_log_block_size.

Drobný

Indikátor veľkosti bloku LOGIC: 0 \u003d 1 kb; 1 \u003d 2 kb; 2 \u003d 4 kb.

s_log_frag_size.

Dlho.

Indikátor veľkosti fragmentu (Zdá sa, že koncepcia fragmentu sa momentálne nepoužíva)

s_blocks_per_group.

Drobný

Počet blokov v každom blokovom bloku

s_frags_per_group.

Drobný

Počet fragmentov v každom blokovom bloku

s_inodes_per_group

Drobný

Počet deskriptorov indexov (inodes) v každom blokovom bloku

s_mtime.

Drobný

Čas, kedy bol súborový systém naposledy namontovaný.

s_wtime.

Drobný

Čas, kedy bol posledný čas zaznamenaný v systéme súborov

s_mnt_count.

Ushort

Meradlo montážneho systému. Ak tento počítadlo dosiahne hodnotu zadanú v nasledujúcom poli (S_MAX_MNT_COUNT), musí byť systém súborov overiť (toto sa vykoná pri reštartovaní) a počítadlo sa resetuje.

s_max_mnt_count

Krátky

Číslo určujúce, koľkokrát je možné súborový systém namontovať

s_magic

Ushort

"Magic Number" (0xEf53), čo naznačuje, že súborový systém patrí do typu Ex2FS

s_state.

Ushort

Vlajky označujúce aktuálny stav systému súborov (či už je čisté (čisté) atď.)

s_errors.

Ushort

Vlajky, ktoré určujú postupy správy chýb (čo robiť, ak sa nájdu chyby).

s_pad.

Ushort

Plnenie

s_lastcheck.

Drobný

Čas kontroly posledného systému súborov

s_checkInterval

Drobný

Maximálna doba medzi kontroly súborov

s_creater_os.

Drobný

Zadanie na typ OS, v ktorom je vytvorený súborový systém

s_rev_level.

Drobný

Systém súborov revízie.

s_erved

Drobný

Plnenie až 1024 bajtov

Po superblock sa nachádza opis blokovej skupiny (deskriptory skupiny). Tento opis je pole s nasledujúcou štruktúrou.

Názov poľa

Typ

Účel

bg_block_bitmap

Drobný

Adresa bloku obsahujúceho bloky bitovej karty (bloková bitmap) tejto skupiny

bg_inode_bitmap

Drobný

Adresa bloku obsahujúceho bitmapu indexových deskriptorov (inode bitmap) tejto skupiny

bg_inode_table

Drobný

Adresa bloku obsahujúceho tabuľku deskriptorov indexov (tabuľka inódu) tejto skupiny

bg_free_blocks_count.

Ushort

Počítadlo počtu voľných blokov v tejto skupine

bg_free_inodes_count

Ushort

Počet voľných deskriptorov indexov v tejto skupine

bg_used_dirs_count.

Ushort

Počet deskriptorov indexov v tejto skupine, ktoré sú katalógy

bG_PAD.

Ushort

Plnenie

bg_Reserved.

Drobný

Plnenie

Veľkosť bloku bloku môže byť vypočítaná ako (SIBOPT_GROUP_BOK_V_EXT2 * NUMBER_GROUPS) / SIVER_BLOCK (V prípade potreby zaoblené).

Informácie, ktoré sú uložené v popise skupiny, sa používajú na nájdenie bitových kariet blokov a deskriptorov indexov, ako aj tabuľku deskriptorov indexov. Nezabudnite, že bloky a bloky blokov sú očíslované z 1.

Blok bitovej mapy (bloková bitmapka) je štruktúra, z ktorých každý znamená, či je príslušný blok priradený. Ak je bit 1, potom je blok zaneprázdnený. Táto karta slúži na vyhľadávanie bezplatných blokov v prípadoch, keď je potrebné zdôrazniť umiestnenie v súbore, bitmap blokov zaberá počet blokov rovných (Number_block_v_group / 8) / SIVERE_BLOCK (V prípade potreby zaoblené).

Bitmap indexových deskriptorov vykonáva podobnú funkciu vzhľadom na tabuľku deskriptorov indexov: ukazuje, ktoré deskriptory sú zaneprázdnení.

Nasledujúca oblasť v štruktúre blokovej štruktúry slúži na uloženie tabuľky deskriptorov indexových súborov. Štruktúra samotného indexového deskriptora sa uvažuje v nasledujúcom pododseku.

Nuž, nakoniec, zostávajúce miesto v skupinovej skupine je pridelené na ukladanie skutočných súborov.

Systém súborovExt. 2 je charakterizovaný:

  • hierarchická štruktúra
  • dohodnuté spracovanie súborov údajov, \\ t
  • dynamické rozšírenie súborov,
  • informačná bezpečnosť v súboroch
  • interpretácia periférnych zariadení (napríklad terminálov a páskových zariadení) ako súborov.

Interný pohľad na súbory

Každý súbor v systéme EXT 2 má jedinečný index. Index obsahuje informácie potrebné na akýkoľvek proces, ktorý sa má odkazovať na súbor. Procesy sa týkajú súborov pomocou jasne definovaného sady systémových hovorov a identifikáciu súboru súboru reťazca, ktorý pôsobí ako názov kompozitného súboru. Každý kompozitný názov určite určuje súbor, takže systém Kernel konvertuje tento názov do indexu súboru. Index obsahuje tabuľku adries umiestnenie informácií o súbore na disku. Keďže každý blok na disku je adresovaný na jeho číslo, táto tabuľka ukladá sadu čísiel blokových blokov. Aby sa zvýšila flexibilita, jadro pripojí k súboru jeden jedným blokom, čo umožňuje informácie o súbore, ktoré majú byť roztrúsené v celom systéme súborov. Tento systém umiestnenia však komplikuje úlohu vyhľadávania údajov. Tabuľka adries obsahuje zoznam blokových čísel obsahujúcich súbor vo vlastníctve súboru, avšak jednoduché výpočty ukazujú, že lineárny zoznam súborov súborov v indexe je ťažké ovládať. Aby ste mali malú indexovú štruktúru pracovať s veľkými súbormi, tabuľka adresy diskových blokov sú uvedené do riadku so štruktúrou uvedenou na obrázku 1

Väčšina súborov v systéme EXT 2 má veľkosť, ktorá nepresahuje 10 kB a dokonca 1 KB! Vzhľadom k tomu, 10 kB súboru sa nachádza v priamom adresovacom blokoch, do z väčšej časti dát uložených v súboroch, prístup je možné vykonať v jednom odvolaní na disk. Preto, na rozdiel od prístupu k veľkým súborom, práca so súbormi štandardných veľkostí prebieha rýchlo.

Indexové deskriptory súborov

Každý súbor na disku zodpovedá jednej a iba jednej rukoväti indexového súboru, ktorý je identifikovaný svojimi poradovými číslom - indexom súboru. To znamená, že počet súborov, ktoré možno vytvoriť v systéme súborov, je obmedzený počtom deskriptorov indexov, ktorý je jednoducho definovaný pri vytváraní súboru systému, alebo sa vypočíta na základe fyzického objemu disku. Indian Descpports existujú na disku v statickej forme a jadro ich číta v pamäti, než sa s nimi začne pracovať.

Rukoväť indexového súboru má nasledujúcu štruktúru:

Názov poľa

Typ

Popis

I_mode.

Ushort

Typ a prístupové práva k tomuto súboru.

I_uid

Ushort

Identifikátor vlastníka súboru (vlastník UID).

I_size.

Drobný

Veľkosť súboru v bajtoch.

I_atime.

Drobný

Čas posledného prístupu k súboru (prístup prístup).

I_CTIME.

Drobný

Čas tvorby súborov.

I_mtime.

Drobný

Čas poslednej úpravy súboru.

I_dtime.

Drobný

Čas vymazania súboru.

I_gid

Ushort

Identifikátor skupiny (GID).

I_links_count.

Ushort

Počítadlo vzťahov (počet odkazov).

I_blocks.

Drobný

Počet blokov obsadených súborom.

I_flags.

Drobný

File Flags File Flags)

I_RERVED1

Drobný

Vyhradené pre OS

I_block

Drobný

Ukazovatele na bloky, v ktorých sa zaznamenávajú údaje súborov (príklad priameho a nepriameho adresovania na obr. 1)

I_version.

Drobný

Verzia súboru (pre nfs)

I_file_acl

Drobný

Súbor ACL.

I_dir_acl

Drobný

ACL katalóg

I_faddr.

Drobný

Adresa fragmentu (adresa fragmentu)

I_frag

Uchar.

Číslo fragmentu (číslo fragmentu)

I_fsize.

Uchar.

Veľkosť fragmentu (veľkosť fragmentu)

I_PAD1

Ushort

Plnenie

I_ervered2.

Drobný

Rezervovaný

Typové pole a prístupové práva k súboru je dvojbajtové slovo, ktorého každý kúsok, ktorý slúži ako vlajka, ktorá označuje pomer súboru na konkrétny typ alebo inštaláciu jedného konkrétneho práva na súbor.

Identifikátor

Hodnota

Vlajka menovania (polia)

S_IFMT.

F000.

Maska typu súboru

S_IFSOCK

A000.

Doménové hniezdo (zásuvka)

S_IFLNK.

C000

S_IFREG.

8000

Normálny (pravidelný) súbor

S_IFBLK.

6000

Blokovo orientované zariadenie

S_IFDIR.

4000

Katalóg

S_IFCHR

2000

Byte-orientované (symbolické) zariadenie

S_IFIFO.

1000

Pomenovaný kanál (FIFO)

S_isuid

0800

SUID - BIT Majiteľ zmeny

S_isgid

0400

SGID - Skupina Shift Bity

S_isvtx

0200

Ochrana úlohy Bit (Sticky Bit)

S_irwxu.

01c0.

Maska vlastníka vlastníka súboru

S_irusr.

0100

Právo čítať

S_iwusr.

0080

Právo nahrávať

S_IXUSR.

0040

Právo na vykonanie

S_irwxg.

0038

Group Mass Group

S_irgr.

0020

Právo čítať

S_iwgrp.

0010

Právo nahrávať

S_IXGRP.

0008

Právo na vykonanie

S_irwxo.

0007

Maska práv iných používateľov

S_iroth

0004

Právo čítať

S_iwoth

0002

Právo nahrávať

S_ixinoth

0001

Právo na vykonanie

Medzi deskriptormi indexov existuje niekoľko deskriptorov, ktoré sú vyhradené na špeciálne účely a zohrávajú osobitnú úlohu v súbore. Toto sú nasledujúce deskriptory

Identifikátor

Hodnota

Popis

Ext2_bad_ino.

Indexový deskriptor, v ktorom sú uvedené adresy chybných blokov na disku (zlé bloky blokov)

Ext2_root_ino

File System System Root Directory Index Deskriptor (root inode)

Ext2_acl_idx_ino

ACL INODE

Ext2_acl_data_ino.

ACL INODE

Ext2_boot_loeder_ino.

Index indexov nakladač (zavádzací nakladač)

Ext2_undel_dir_ino.

Undelete Directory Inode.

Ext2_first_ino.

Prvý non-pro-index deskriptor

Najdôležitejšou rukoväťou v tomto zozname je deskriptor root adresár. Tento deskriptor poukazuje na koreňový adresár, ktorý, rovnako ako všetky adresáre, pozostáva zo záznamov nasledujúcej štruktúry:

Názov poľa

Typ

Popis

Vrodený

Drobný

Číslo deskriptora súboru (index)

rec_len.

Ushort

Dĺžka tohto záznamu

name_len.

Ushort

Dĺžka názvu súboru

Názov.

Char.

Názov súboru

Samostatný záznam v katalógu nemôže prekročiť blokovú hranicu (to znamená, že by mala byť umiestnená úplne vnútri jedného bloku). Preto, ak by nasledujúci záznam nehodí úplne v tomto bloku, je prenesený do nasledujúceho bloku a predchádzajúci záznam pokračuje takým spôsobom, ktorý vyplní blok do konca.

Obrázok 1 bloky priameho a nepriameho adresovania v indexe

Obrázok 2 Objem súboru v bajtoch pri veľkosti bloku 1 kB

Obrázok 3. Príklad indexu disku

Obrázok 3 zobrazuje index disku určitého súboru. Tento index patrí do obvyklého súboru, ktorého majiteľ je "MJB" a veľkosť, ktorá je 6030 bajtov. Systém umožňuje užívateľovi "MJB" čítať, zapisovať a vykonať súbor; Členovia skupiny "OS" a všetci ostatní používatelia sú povolené len na čítanie alebo vykonanie súboru, ale nie na zaznamenávanie údajov do nej. Naposledy bol súbor čítaný 23. októbra 1984 o 13:45, záznam bol posledný čas bol urobený 22. októbra 1984 o 10:30. Index zmenil posledný čas 23. októbra 1984 v 13:30, hoci v tomto čase neboli zaznamenané žiadne informácie. Kernel kóduje všetky vyššie uvedené údaje v indexe. Venujte pozornosť rozdielu v zázname obsahu indexu a obsahu súboru. Obsah zmien súboru len vtedy, keď je súbor zaznamenaný. Obsah indexu sa mení pri zmene obsahu súboru a pri zmene vlastníka súboru, prístupových práv a ukazovateľov. Zmena obsahu súboru automaticky spôsobí korekciu indexu, ale korekcia indexu neznamená zmenu obsahu súboru.

Katalógy

Katalógy sú súbory, z ktorých je postavená hierarchická štruktúra súboru systému; Hrajú dôležitú úlohu pri zapnutí názvu súboru na číslo indexu. Adresár je súbor obsahujúci, ktorý je súbor záznamov pozostávajúcich z indexového čísla a názvu súboru zahrnuté v adresári. Kompozitný názov je reťazec symbolov, dokončených prázdnym symbolom a zdieľaným zdieľaným riadkom ("/") do niekoľkých komponentov. Každý komponent, okrem toho musí byť názov adresára, ale posledný komponent môže byť súbor, ktorý nie je adresár. V verzii systému UNIX je dĺžka každého komponentu obmedzená na 14 znakov; Tak, spolu s 2 bajciami, pridelenými na indexové číslo, veľkosť nahrávania adresára je 16 bajtov.

Offset v Bytes
Vnútorný katalóg

Indexové číslo
(2 bajty)

názovspis

1798

init

1276

fSCK.

clri

1268

mOTD.

1799

držať

mknodu.

2114

passwd.

1717

umount.

1851

kontrolný zoznam.

fsdbld

konfigurácia

1432

getty.

havárie.

mkfs.

Obrázok 4 Format katalógu / atď

Obrázok 4 zobrazuje formát adresára "ETC". Každý adresár má súbory, ako sú názvy, ktorých mená sú označené bodom a dva body ("." A "..") a indexové čísla, ktoré zodpovedajú číslam indexu tohto katalógu a materským katalógom. Indexové číslo pre súbor ". Adresár "/ ETC" má adresu s posunutím 0 a hodnotu 83. Indexové číslo pre súbor ".." má adresu s posunutím 16 od začiatku adresára a hodnoty 2. Záznamy v adresári môže byť prázdne a indexové číslo je 0. Napríklad nahrávanie s adresou 224 v adresári "/ etc" je prázdny, napriek tomu, že kedysi obsahoval vstupný bod pre súbor s názvom "Crash". Program MKFS inicializuje súborový systém takým spôsobom, ktorý indexové čísla pre súbory ". A ".." Koreňový adresár sa zhoduje s číslom koreňového indexu systému.

Kernel ukladá údaje v adresári rovnakým spôsobom, ako to robí v normálnom type súboru pomocou indexovej štruktúry a blokov s úrovňami priamej a nepriamej adresovania. Procesy môžu čítať údaje z adresárov rovnakým spôsobom, ako si prečítajú pravidelné súbory, ale exkluzívny záznam priamo do adresára je vyhradený jadrom, ktorý zaisťuje správnosť adresárovej štruktúry. Katalógové prístupové práva majú nasledujúci význam: Právo čítania dáva spracovať možnosť čítať údaje z katalógu; Právo nahrávania umožňuje proces vytvárať nové položky v adresári alebo vymazať staré (pomocou operácií CURT, MKNOD, LINK AND INPIS), v dôsledku čoho sa zmení obsah katalógu; Právo na vykonanie umožňuje proces vyhľadávania v adresári podľa názvu súboru (pretože "Vykonanie" Katalóg je bezvýznamný).

Keď akýkoľvek program používa cestu k súboru, zodpovedajúca menovitá menovka indexového odDSP obsahuje v katalógoch. Po použití názvu súboru v indexovom opise je tento desippot umiestnený v pamäti a potom sa používa v nasledujúcej ZAP.

Koncepcia súborových systémov UNIX obsahuje koncept referencie. Jeden index odskrutkovač môže byť spojený s viacerými názvami súborov. Deskpott pomáha poľa, Hinner, s ktorým súbor spája. Pridanie odkazu je vytvorenie záznamu adresára, kde index despodipket číslo indikuje diskpot a zvýšenie referenčného počítadla v odkaze. Mali by ste vymazať odkazy jedu znižovať referenčný pult a vymažte desqpot, ak sa tento meradlo stane null.

Takéto odkazy sa nazývajú tuhé a môžu sa používať len v jednom systéme súborov (nemôžete vytvoriť odkaz na súborový systém z flipového systému). Okrem toho, tuhé spojenie môže určiť iba súbor (na sústredný odkaz na adresár môže byť použitý na zameranie do systému súborov).

Vo väčšine systémov UNIX je ďalší typ odkazu. Tieto odkazy, ktoré podporujú iba názov súboru, sa nazývajú symbolické. Používate chudobnejší z takýchto odkazov, pričom používate cestu k súboru k indexu odskrutkovacej doske, jed je jed názov odkazu na softvér depite (tj v mene cieľového súboru) a re-internetových cestách Cesta k súboru. Vzhľadom k tomu, symbolický odkaz neindikuje index desqpot, je možné vytvoriť odkazy na súbory, ktoré sa nachádzajú v dezinfektnom systéme súborov. Tieto odkazy môžu označiť súbor akéhokoľvek typu, dokonca aj na neexistujúcej. Symbolické odkazy sú tak použité, pretože nemajú tie požiare, ktoré majú tvrdý odkaz. Avšak, zaberajú určitý zväzok na disku, kde sú povolené index odskrutkovacie a dátové bloky. Ich použitie môže byť použité na spôsoby prepustenia, ktoré používajú cestu k súboru k indexu odskrutkovacej dosky, čo je spôsobené tým, že symbolizácia symbolických odkazov jedu by mali znovu zadať cestu k súboru.

Zariadenia súborov

V operačných systémoch podobných Unixu sa prístup k zariadeniam vykonáva prostredníctvom špeciálnych súborov. Tento súbor sa neuskutoční v systéme súborov. Je to len prístupový bod na jednotku zariadenia.

Existujú dva typy súborov zariadení: symbolický a blok. Pri použití symbolického typu je možné výmenu dát so zariadením len v režime znakov, zatiaľ čo súbory typu bloku vám umožňujú vymieňať iba bloky pomocou vyrovnávacej pamäte. Pri vyžiadaní požiadavky I / O na súbor zariadenia je tento dotaz presmerovaný na vodiča príslušného zariadenia. Každý podobný súbor zodpovedá seniorovému číslu, ktoré definuje typ zariadenia a mladšiu miestnosť, ktorá určuje samotné zariadenie.

Ďalšie funkcie Ext2Fs.

Okrem jednotných funkcií UNIX, EXT2FS sú niektoré ďalšie funkcie, ktoré zvyčajne nie sú predložené systémovými systémami UNIX.

Súbor ATPIBUTS vám umožňujú zmeniť stlačenie polárne pomocou súborov so súbormi. Môžete nainštalovať do súboru alebo adresára. V druhom prípade súbory vytvorené v tomto adresári zdedia tieto zariadenia.

V priebehu montáže systému môžu byť nainštalované niektoré konkrétne funkcie spojené so súbormi antiquoty. Možnosť pripojenia Umožňuje administrácii vybrať funkcie vytvárania súborov. V súborovom systéme s funkciami BSD sú súbory vytvorené s rovnakým identifikátorom GPPP, ako aj katalógu bytového katalógu. Vlastnosti System V je trochu komplikovanejší. Ak je nastavený bitový katalóg súborov SETGID, súbory vytvorené identifikátorom GPP tohto adresára sú prijaté a podadresáre zdedia identifikovať identifikáciu GPPP a bity STGID. V prejednávanej veci sú súbory a katalógy vytvorené so základným identifikátorom GPPP spôsobujúceho PPCress.

Systém ExTR2FS môže používať synchrónnu modifikáciu dát podobnú systému BSD. Možnosť pripojenia Umožňuje administráciu špecifikovať všetky údaje (indexové descplists, bity, nepriame bloky a adresárové bloky) zaznamenané na DC synchrónne v ich modifikáciách. To možno použiť na dosiahnutie vysokých informačných záznamov, ale tiež berie do zhoršenia kňazstva. V skutočnosti sa táto funkcia zvyčajne nepoužíva, pretože zhoršenie proliferácie, môže sa použiť na používateľov používateľov používateľov, ktoré nie sú označené pomocou systému súborov.

EXT2FS vám umožňuje vytvoriť súborový systém na výber logického bloku. Môže to byť Pazmer 1024, 2048 alebo 4096 bajtov. Použitie veľkých objemovitých blokov pre I / O optiace (ako množstvo saje na disk klesá), a preto do menšej hlavičky hlavy. S druhou stranou bloku, použitie veľkých blokov blokov na číselný dôchodok. Typicky sa posledný blok súboru používa, nie je úplne pre oblasť informácií, preto sa zvyšuje zvýšenie objemu bloku, môže sa zvýšiť objem hrotového kotúča.

EXT2FS vám umožňuje používať OsKizované symbolické odkazy. Použitím takýchto odkazov sa nepoužívajú bloky blokových dátových blokov. Názov cieľového súboru nie je v dátovom bloku, ale v samotnom indexe. Takáto konštrukcia vám umožňuje udržiavať diskový punč a odpariť škótko symbolických odkazov. Samozrejme, je tu potrubia, stožiare pod deptikom, flaky, takže nie každý odkaz môže byť upísaný ako hersal. Maximálna dĺžka názvu súboru na sekundárnom spojení má 60 znakov. V blízkej budúcnosti sa plánuje pozastaviť tento systém pre malé súbory hlasitosti.

EXT2FS nasleduje stavový systém. Chudák používa samostatné pole v suspenzii, aby sa uvádza stav súboru systému. Ak je súborový systém namontovaný v čítaní / zápise, jeho stav je inštalovaný ako "nie je čistý". Ak je opäť demontovať alebo opäť namontovaný v užívaní len na čítanie, potom je jeho stav nainštalovaný v "Čistenie". Keď systém systému a súborový systém prebieha, tieto informácie sa používajú na prevádzku potreby súborového systému. Chudobní tiež umiestni niektoré zlomyseľné chyby v tejto oblasti. Otvorený nedodržovací jed, súborový systém je označený ako "chybné". Simulátor systému súborov bude otestovať tieto informácie pre systém systému, aj keď je jej stav vlastne "čistý".

Dlhodobé ignorovanie testovania súborového systému niekedy môže byť niekedy s určitou dostatočnosťou, takže EXT2FS obsahuje dve metódy regulačného systému. Spearlock je podporovaný počítačovým pultom. Toto počítadlo zvyšuje každý Pa, keď je systém namontovaný v funkcii čítania / zápisu. Ak jeho hodnota dosiahne maximum (je tiež hudded v suspenzii), potom testovanie súborového systému sa spustí pokladni, aj keď je jeho stav "čistý". Ten, prvýkrát a maximálny inteligentný medzi prvým je tiež hudded v suspenzii. Keď sa dosiahne maximálna inteligencia medzi ružovými, stavový systém je ignorovaný a kontrolný bod sa spustí.

Systém ext2FS pomáha svojmu súčasnosť. TUNE2FS BRAMMA je možné použiť na zmenu:

  • akcia PRI Chyba Rozbalenie. Otvorený s nedodržajúcim jedom, súborový systém je označený ako "chybné" a jeden z nasledujúcich krokov možno vykonať: implementácia vykonania, aktualizáciu súboru systému v radosti len s cieľom vyhnúť sa jeho Spojka, stránkovací systém systému pre súborový systém.
  • maximálna montážna hodnota.
  • maximálna inteligencia medzi kolíkmi.
  • počet logických blokov, poháňaní užívateľovi root.

Možnosti určené namontovaným možno tiež použiť na zmenu činností povinnosti chybového jedu.

Používanie ATPIBUT Umožňuje používateľom odstrániť sektné súbory. Podobný súbor môžete odstrániť, v blokoch, ktoré sa používajú na používanie tohto súboru, zaznamenávajú náhodné informácie. Toto bude povýšené, aby ste získali prístup k prvotriednemu tohto súboru v autorite a pomocník disku.

Systém ext2FS nedávno pridal nové typy súborov z 4.4 BSD súborového systému. Putting type súborov možno použiť len na čítanie: Nikto ich nesmie zmeniť ani ich odstrániť. Toto môže byť použité na ochranu dôležitých konfiguračných súborov. Typ súboru súborov, to sú súbory, ktoré sa dajú zmeniť na záznamové funkcie a údaje môžu byť pridané až do konca tohto súboru. Tento typ súborov môže byť tiež odstránený alebo trvalý. Môžu byť použité ako súbory Zeper, ktoré sa môžu zvýšiť iba v objeme.

Optimalizácia prijímania

Systém EXT2FS je uľahčený mnohými funkciami, ktoré optimalizujú svoj profil, čo vedie k zvýšeniu rozsahu výmeny informácií o čítaní a písaní súborov.

EXT2FS aktívne používa nárazník na disk. Keď sa musí jednotka prečítať, jed sa zobrazí i / o opt / výstup nepriehľadné. Chudobnejšie sa teda uistite, že ďalší blok, ktorý by sa mal čítať, je už na starosti nárazník na disk. Takéto opporcie sa zvyčajne vykonávajú pomocou sériových čítacích súborov.

Systém exTR2FS tiež poskytuje veľké množstvo optimalizácií informácií. Bloky sa používajú na kombinovanie zodpovedajúcich indexových despilcov a dátových blokov. Poison sa vždy snaží stlačiť dátové bloky jedného súboru v jednom GPUP, ako aj jeho desqpot. Používa sa na zníženie konania hlavy hlavičky a description a príslušné dátové bloky zodpovedajúce.

Tieto dátové záznamy v súbore, EXT2FS posilnia až 8 susedných blokov pomocou nového bloku. Takýto spôsob umožňuje dosiahnuť silu systému systému. To tiež umožňuje používať susedné bloky pre súbory, ktoré vyhovujú ich následnému čítaniu.

Knižnica EXT2FS.

Ak chcete využívať používanie škodcov EXT2FS a kontrolu kontaktných stórov tohto súboru systému, LibExt2FS knižnica bola jednoduchá. Táto knižnica poskytuje funkcie, ktoré môžu byť použité na prevádzku a zmenu týchto súborových systémov EXT2 odkazom na fyzicky elimináciu.

Väčšina pomôcky EXT2FS (MKE2FS, E2FSCK, Tune2fs, Dumple2fs, Debugfs a DP.) Použite túto knižnicu. Dôrazne dopĺňa modifikáciu týchto nástrojov, pretože akékoľvek zmeny na zavedenie dodatočných funkcií do systému súborov EXT2FS by mali byť len v knižnici ExT2FS.

Keďže internetová knižnica EXT2FS je dostatočne shiyky a pomocná, môže byť ľahko napísaná svojou pomocou. Použiť, knižnica EXT2FS použila 4,4 BSD Dump a Recovery niektorých nástrojov. Bol zabitý, aby sa veľmi malé zmeny prispôsobili tieto použitia Linuxu (bolo potrebné nahradiť niekoľko funkcií, ktoré komunikujú so systémom súborov na volanie do knižnice EXT2FS).

Knižnica ETR2FS obsahuje prístup k operáciám niekoľkých tried. Trieda puberty je nepriehľadná so systémom súborov. Každý šampón môže otvoriť alebo posunúť súborový systém, čítať alebo písať bitový blok, vytvoriť nový súborový systém na disku. Existujú aj funkcie zoznamu zlých blokov blokových blokov.

Druhá trieda nepriehľadných bude používať katalógy. Propamma pomocou knižnice EXT2FS môže vytvoriť alebo skašovať adresár, ako aj pridať alebo odstrániť záznamy v adresári. Existujú funkcie ako pohonné látky na ceste kódu kódu k súboru a dráhe dráhy k súboru podľa zadaného odloženia.

Posledná trieda nepriehľadných otvorov s indexom descilipts. Je možné si prečítať tabuľku descpport, počítať alebo zapísať dole descpotp, pp Zobraziť všetky bloky zadaného desqpot. Je možné pokračovať vo funkciách formácie a uvoľnenia blokov a desíkov.

Časť systému EXT2FS

Pre systém ELT2FS sa použil výkonné použitie komplementárneho použitia. Tieto použitia sa používajú na vytvorenie, modifikáciu a Coppe akýchkoľvek nezrovnalostí v súborových systémoch EXT2FS. Program MKE2FS sa používa na inštaláciu diskovej pasty, ktorá poskytuje prázdny systém súborov ELT2FS.

Aplikácia Tune2fs môže byť použitá pre silu súborového systému Papalmet .cc, ktorý sa môže zmeniť, aby sa zmenil na nové chyby, maximálny počet montážnych systémov, maximálne určené medzi postupmi systému a počet logických blokov poháňaných pre užívateľ root.

Možno, že najinteligentnejšie použitie je zjednodušený súborový systém. E2FSCK Postavil sa na dokončenie nezrovnalostí v súbore po inspekcii prijatia celého systému. Počiatočná verzia E2FSCK Propamma je založená na Linus Torvald FSCK FRCK pre systém súborov MINIX. Avšak, súčasné verzie transmandentného obdobia pomocou knižnice EXT2FS a je rýchlejšie a môžu byť vykonané len vo väčšiemu počtu chýb v oblasti svojho vyšetrovania, podľa prípravku s Papaling VexA.

Hanba E2FSCK bola študovaná v takom čase, aby bola vykonaná s maximálnou rýchlosťou. Vzhľadom k tomu, pricks súboru systému sú povolaní na hlavnú pásku, mali by ste optimalizovať blikajúce algoritmy E2FSCK, že postup pre súborový systém by sa mal používať oveľa jednoduchšie. A navyše by sa rokates indexových priložených a adresárov uskutočnilo podľa čísla bloku, aby sa znížilo hlavy disku.

Pri porušovaní E2FSCK je súborový systém zostrihovaný všetkými indexovými despipientmi a jeden desciputs ako samostatný prvok systému. Takáto príležitosť, tieto testovanie nehodí objekty systému súborov. Jedným z cieľov takýchto kolíkov je vstupom existencie typu typu súboru, ako aj korešpondencie všetkých blokov v descpeppet s blokmi s existujúcimi číslami. V zapínaní sú bity v prevádzke, čo indikuje použitie blokov a oddýchaní.

Ak E2FSCK nájde dátové bloky, ktorých nomáre sa zbierajú vo viac ako jednom odpustku.

Najbližšie podpísanie zaberá väčšinu všetkých, pretože všetky indexové despilpity musia byť čítané do pamäte a neoddeliteľnú. Aby sa znížili vstupné / výstupné opaky v nasledujúcich telesách, všetky potrebné informačné hnutie zostáva v nárazníku. Leporným čítaním tejto schémy je vyhľadávanie všetkých blokov adresára súborového systému. Ak chcete získať tieto informácie, sekvencie všetkých adresárov súborov sú čítané v druhom výlete.

V druhom obložení sa adresárne píšajú ako jednotlivé prvky súboru systému. Blok každého adresára je oddelený bez odkazu na adresárové bloky DPUCH. To umožňuje E2FSCK odpojiť všetky bloky adresárov na počte blokov a kontaktujte ich v čase behu, taký čas znižujúci prístup k disku. Katalógové bloky sa testujú na korešpondenciu reality ich záznamov a že prispievajú k odkazom na odkopy s existujúcim číslom (ako bolo zapnuté v zlomení).

Pre adresárový blok v každom pláne adresára bude existovať existencia záznamov. ". a ".." a že číslo descppet je na nahrávanie. " Zodpovedá aktuálnemu adresáru. (Soature Number pre nahrávanie ".." netestuje, kým sa nezmení.)

Pri vykonávaní druhého fódu sa info pohyb zodpovedajúci katalógu apartmánu uloží do vyrovnávacej pamäte.

Treba poznamenať, že do konca druhého pchoda budú zakryté takmer všetky vstupné / výstupné časti s disku. Všetky info hnutie, ktoré sa snaží o tisíce štvrtého a piateho výletu, je povýšený v pamäti, avšak zostávajúce jamy PPPSOP a trvať menej ako 5-10% z celkového výkonu E2FSCK.

Katalógové spojenia sú zahrnuté v Trinkete. E2FSCK robí cesty každého adresára piť do postele, pomocou informácií získaných druhým fóde. Tu je záznam ".." pre každý katalóg. Všetky katalógy identifikované po prvom a nemajú pripojenia sú umiestnené v adresári / Lost + nájdete.

Vo štvrtách, výletoch E2FSCK, referenčné počítadlá pre každý odpustky indexu obsahuje PPPlaying všetky descpports a referenčné referenčné metre (tieto informácie sa uchovávajú z krížového nudného) s vnútornými meradlami, ktoré boli vypočítané hodnoty sub-sekundy a kmene. Všetky zlyhané súbory s nulovým referenčným meračom sú umiestnené aj v adresári nájdených / Lost +.

A nakoniec, v piatom, E2FSCK je korešpondencia všetkých informácií o informáciách v systéme súborov. Tu sú kúsky blokov a descplistov, ktoré boli získané v prvých kusoch, s platnými hodnotami av prípade potreby dochádza k informáciám o disku na disku vhodné.

Použite užitočné používanie debugger systému súborov. Debugfs je výkonná márnosť, ktorá vám umožní zostupovať a nastaviť stav systému súborov. V podstate je to interaktívny internet pre knižnicu EXT2FS, to znamená, že typické príkazy na zavolanie funkcií knižnice.

Debugfs možno použiť na prevádzku interného systému súborového systému, takže systém obnovy alebo vytváranie podmienených testov pre E2FSCK. Bohužiaľ, tento Jammy môže vyhrať súborový systém, ak neviete, ako ho používať. S touto silou stačí zničiť súborový systém. Preto Debugfs zmení súborový systém v predvolenej pozícii na čítanie. Ak chcete získať prístup k obálke čítania / zápisu, mali by ste určiť možnosť -W.

Výpočet súkromia

Výsledky testovania Bonnie sú viditeľné z nasledujúcej tabuľky:

Nahrávanie cukru (CB / S)

Patch Vstup (CB / S)

Výkon (KB / S)

Čítanie cukru (CB / S)

Čítanie kusov (KB / S)

BSD Async.

BSD Sync.

Ext2 fs.

1237

1033

Xia FS.

Výsledky sú dostatočne oboznámené s blokom / výstupom: systém ELT2FS vyhráva na referenčnom systéme. Je to spôsobené optimalizáciou zahrnutou v aproximácii PA. Záznam je tiež dostatočne rýchly, podľa skutočnosti, že je štebáčik v Gupione Purem. Vysoká rýchlosť čítania súvisí so skutočnosťou, že bloky boli vytiahnuté do súboru, takže hlavičkové hlavy sa nevykonávajú medzi dvoma údajmi a optimalizácia prvého čítania plne bude plne.

S na druhú stranu strany, systém FreeBSD obsahuje symbolický vstup / výstup referenčnej hodnoty vyššie. Možno je to spôsobené skutočnosťou, že FreeBSD a Linux používajú vhodný s knižnicami zodpovedajúcimi knižniciam C. Okrem toho, v FreeBSD, optimalizovanejšia symbolická čítacia knižnica, a preto je tu o niečo lepšie.

Skúšobné výsledky Andrew.

Výsledky testov Andrew sú viditeľné z nasledujúcej tabuľky:

Pápež 1

Inštalatérstvo 2 Kopírovanie

Inštalatérstvo 3 Stav

Inštalatérstvo 4 bapti

Inštalatér 5 kompilácie

2203

7391

6319

17466

75314

BSD Sync.

2330

7732

6317

17499

75681

Ext2 fs.

Výsledky minulých dvoch jamiek ukazujú, že Linux vyhrá asynchonálnu výmenu údajov. Vytvárate adresáre a súbory, systém BSD synchrónne zaznamenáva descpports a záznamy o adresároch. Tam je hovor, že Asynchpone subdeeping pre FreeBSD ešte nebol plne implementovaný.

Na Tribute na hodnotu Linuxu a BSD sú veľmi podobné. Zatiaľ čo keď je BSD popísané vyššie, pridá sa k tomuto typu pridávanie nebeccoty pre názvy súborov do systému Linux VFS.

V piatej a piatej PPODS bude Linux rýchlo freebsd, hlavne na použitie kombinovaného použitia kytice. Objem buffer môže mať viac pamäte a prevziať viac pamäte ako v FreeBSD, kde sa používa pevný objem. Výsledky odpovedí EXT2F a XIA FS ukazujú, že optimalizácia, s ktorou sa vyskytne v EXT2FS, sa skutočne používa: páchateľ týchto systémov je približne 5-10%.

Záver

Súborový systém EXT2 je najviac krátko používaný v užívateľoch Linuxu. Poskytuje štandardné funkcie UNIX a ďalšie funkcie. Okrem toho, vďaka optimalizácii zahrnutej v jedine, ukazuje vynikajúce výsledky reakcie.

Systém ExTR2FS obsahuje funkcie na pridanie nových funkcií. Niektorí ľudia sa starajú o používanie PAS pre skutočný súborový systém: zoznam prístupovej kontroly, zodpovedajúcej polohe POSIX, obnovením vzdialených súborov a komprimovať súbory v dlhodobom rezidencii.

Po prvé, systém ext2fs bol integrovaný do jedu Linuxu a aktívne sa pohybuje na prevádzke operačných systémov. EXT2FS je tiež dôležitou súčasťou operačného systému Masix, ktorý sa v súčasnosti študuje jedným z putov.