Linuxi failide süsteemide ja nende funktsioonide tüübid. File ja Breaking File System Ext2 File System Ext2 3

Nüüd kirjeldame kõige populaarsemat ketasfailisüsteemi Linuxi - Ext2. Linuxi esimene vabastamine kasutas Minix 1 failisüsteemi, millel oli lühikesed failinimed ja maksimaalne faili suurus 64 MB. Minix 1 failisüsteem asendati lõpuks esimese laiendatud ext-failisüsteemiga, mis võimaldas kasutada pikemaid failinimesid ja suuremat faili suurust. Selle madala efektiivsuse tõttu (tulemuslikkuse mõttes) asendati ext süsteem selle ext2 järjestusega, mida on veel laialdaselt kasutatud.

EXT2-ga ketta partitsioon sisaldab joonisel fig. 10.17 paigutus. Blokeeri 0 ei kasuta Linuxi süsteem ja sisaldab arvuti koormuse koodi. Pärast ploki 0, ketta partitsiooni jaguneb plokkide plokkideks (välja arvatud piirid ketta silindrid). Iga rühm korraldatakse järgmiselt.


Esimene plokk on SuperBlock (Superblock), mis salvestab teavet failisüsteemi paigutuse kohta, kaasa arvatud i-sõlmede arv, kettaplokkide arv, tasuta kettaplokkide loendi algus (see on tavaliselt mitusada elementi ). Seejärel järgib grupi kirjeldust, mis sisaldab teavet bitriide asukoha kohta, grupis asuvate vabade plokkide ja I-sõlmede arvu ning grupi kataloogide arvu. See teave on oluline, kuna Ext2 failisüsteem püüab kataloogide levitada ühtlaselt kogu kettal.

Kahe bitti massiivides salvestatakse vabad plokid ja vaba I-sõlmed (see pärineb ka Minix 1 failisüsteemist ja eristab seda enamiku UNIX-failisüsteemide abil, kus nimekirja kasutatakse tasuta plokkide jaoks). Iga bitise massiivi suurus on ühe plokiga võrdne. Ploki 1 KB suurusega piirab see skeem plokkplokkide suurus 8192 plokkide ja 8192 i-sõlme suuruse. Esimene number on tõeline piirang ja teine \u200b\u200bon praktiliselt ei. 4 KB plokid numbreid neli korda rohkem.

Siis asuvad I-sõlme ise. Nad on nummerdatud 1 kuni mõnevõrra maksimaalselt. Suurus iga I-sõlme on 128 baiti ja kirjeldab seda täpselt ühe faili. I-sõlme sisaldab kontoteavet (kaasa arvatud kogu tagasi -kõne, mis võtab selle lihtsalt I-sõlmest), samuti piisava teabe koguse määramiseks kõikide failiandmete sisaldavate kettaplokkide asukoha määramiseks.

Pärast I-sõlmede on andmeplokid. Kõik failid ja kataloogid salvestatakse siin. Kui fail või kataloog koosneb rohkem kui ühest plokist, ei pea need plokid ketta pidevaks olema. Tegelikult on suure faili plokid kõige tõenäolisemalt hajutatud kogu kettal.

Vastavad kataloogid I-sõlmede on hajutatud üle kõik grupid kettaplokkide. EXT2 üritab korraldada tavalisi faile samasse plokkide plokkidena emakaletmena ja andmefailid on sama plokis kui lähtekoodi I-sõlme (tingimusel, et on piisavalt ruumi). See idee oli laenatud Berkeley kiire failisüsteemi failisüsteemist (McKusick et al., 1984). Bit massiivid kasutatakse teha kiireid otsuseid seoses valiku

uute failisüsteemi andmete kohad.

Kui uued failiplokid on esile tõstetud, teeb Ext2 ka eelreestva valiku (Prealloces) mitme (kaheksa) täiendava ploki jaoks sama faili jaoks (tulevaste rekordiliste toimingute tõttu). See skeem jaotab failisüsteemi kogu kettal. Sellel on ka hea jõudlus (selle suundumuse tõttu seotud asukoha ja vähendatud killustatuse tõttu).

Faili avamiseks peate kõigepealt kasutama ühte Linuxi süsteemi kõned (näiteks avatud), mille jaoks soovite faili tee määrata. See tee lahti võetud ja selle kataloogide komponendid ekstraheeritakse sellest. Kui suhteline tee on määratud, algab otsing protsessi praegusest kataloogist, vastasel juhul - juurkataloogist. Igal juhul on esimese kataloogi I-sõlme lihtne leida: protsessi deskriptoris on see kursor või (juurkataloogi puhul) salvestatakse see ketta konkreetses plaadis.

Kataloog võimaldab teil kasutada faili nimesid kuni 255 tähemärki (joonis 10.18). Iga kataloog koosneb teatud arv kettaplokkide (nii et kataloogi saab kirjutada ketta atomino). Kataloogis on failide ja kataloogide elemendid mittetäitumata järjekorras (iga üksus järgib otse eelmist). Elemendid ei saa ületada plokkide piire, nii et iga kettaploki lõpus on tavaliselt mitmeid kasutamata baiti.


Iga kataloogi kirje joonisel fig. 10.18 koosneb neljast fikseeritud pikkuse väljast ja ühe muutuva pikkuse valdkonnas. Esimene väli on kolossaalse faili I-sõlme number 19, 42 BigDir kataloogi mahuks ja 88 faili jaoks. Järgnevalt on Rec_len Field, mis teatab kogu kataloogi kirje suuruse baitide (võimaluse korral koos täiendavate kohaomanikega pärast nime). See väli on vajalik järgmise sisenemise leidmiseks (juhul, kui faili nime täiendab tundmatute baitide arvuga). Joonisel on see väli näidatud noolega. Siis on välja Tüüpivälja, kataloogi jne. Viimane fikseeritud pikkuse väli sisaldab faili nime pikkust baitides (selle näite puhul 8, 10 ja 6). Lõpuks faili nimi on null bait ise ja täiendatud 32-bitine piiri. Täiendav postkasti baiti saab järgida.

Joonisel fig. 10.18, B näidatakse sama kataloogi pärast mahukate elementi eemaldati. Kõik see on tehtud kataloogis - suurendab eelmise kolossaalse faili salvestussuuruses olevat numbrit ja kataloogi kandevahendite baiti kaugsehuline faili muudetakse esimese kirje täitmiseks. Seejärel saab neid baiti kasutada uue faili loomisel salvestada.

Kuna kataloogide otsimine toimub lineaarselt, siis suurte kataloogi lõpus oleva dokumendi otsimine võib võtta kaua aega. Seetõttu toetab süsteem vahemälu katalooge, millele juurdepääs on hiljuti tehtud. Vahemälu otsing on tehtud failinime abil ja kui see on leitud, siis kallis lineaarne otsing ei ole enam vajalik. Hammutusobjekt sisestatakse iga teekomponendi kataloogielementide vahemälu ja (selle I-sõlme kaudu) otsitakse järgmiste teedetaimede kataloogist (kuni tegeliku faili I-sõlme leitakse).

Näiteks leida faili määratud absoluutse tee (nagu / USR / AST / AST / FILE), järgmised sammud tuleb läbi viia. Esiteks leiab süsteem juurekataloogi, mis kasutab tavaliselt i-sõlme numbriga 2 (eriti siis, kui I-sõlme numbriga 1 on reserveeritud töötama halbade plokkidega). See paneb vastava elemendi vahemälu kataloogi elemendid (tulevaste juurikataloogi otsingute jaoks). Seejärel otsin rootikataloogi "USR" stringit, et saada / usr-kataloogi i-sõlme arv (mis on ka sisestatud kataloogielementide vahemällu). See i-sõlme siis loetakse ja kettaplokid on sellelt alla laadinud, nii et saate lugeda / USR kataloogi ja otsida AST-liinit. Pärast vastava elemendi leidmist saate määrata / usr / AST i-sõlme arvu. Võttes seda i-sõlme number, saate seda lugeda ja leida kataloogiplokid. Lõpuks otsime "faili" ja leidsime oma I-sõlme arvu. Seega ei ole suhtelise tee kasutamine mitte ainult mugavam kasutaja jaoks, vaid vähendab ka süsteemi operatsiooni suurust.

Kui fail on saadaval, otsib süsteem i-sõlme numbri ja kasutab I-sõlme tabeli (kettal) indeksina, et otsida vastavat I-sõlme ja lugege seda mällu. See i-sõlme paigutatakse I-sõlme tabelisse (I-sõlme tabelis) - tuuma andmestruktuur, mis sisaldab kõiki I-sõlme praegu avatud failide ja kataloogide jaoks. I-sõlmede vorm peaks sisaldama (minimaalselt) kõik väljad, mis tagastavad süsteemi kõne stat, nii et stat kõne saaks töötada (vt tabel 10.10). Vahekaardil. 10.13 näitab Linuxi failisüsteemis toetatud I-sõlme struktuuri väljad. I-sõlme tegelik struktuur sisaldab palju rohkem väljad, kuna sama struktuuri kasutatakse kataloogide, seadmete ja muude spetsiaalsete failide esitamiseks. I-sõlme struktuur sisaldab ka reserveeritud välja tulevast kasutamist. Lugu on näidanud, et kasutamata bitid jäävad kaua ilma asjadeta.

Nüüd vaatame, kuidas süsteem faili loeb. Mäletate, et tüüpiline kõne raamatukogu protseduurile süsteemi kõne alustamiseks on sõnastatud järgmiselt:

n \u003d lugeda (FD, puhver, nbytes);


Kui kernel saab kontrolli, siis kõik, mida ta saab alustada - need kolm parameetrit ja teavet oma sisemiste tabelite (seotud kasutajaga). Üks nende sisemiste tabelite elemente on failiskriptorite hulk. See on indekseeritud failide kirjelduste abil ja sisaldab ühte elementi iga avatud faili (mõnele maksimaalsele summale, vaikimisi on tavaliselt 32).

Idee on alustada selle faili deskriptor ja lõpetada vastava mulli. Vaatame ühte täiesti võimalikku skeemi: paneme pozel pointer faili kirjelduse tabelisse. Hoolimata lihtsusest ei tööta see meetod (kahjuks). Probleem on järgmine. Iga faili deskriptoriga peab näidik olema failis ühendatud, mis määratleb baiti faili, millest järgmine lugemine või salvestusoperatsioon algab. Kus see kursor peaks olema salvestatud? Üks võimalus on paigutada see busside tabelisse. Kuid see lähenemine ei saa töötada, kui mitu protsessi, mis ei ole üksteisega ühendatud üheaegselt, avavad sama faili, kuna igal protsessil peaks olema oma kursor.

Lahuse teine \u200b\u200blahendus on pointeri asetamine tabelis kirjeldamistesse. Sellisel juhul on iga protsessi avanev fail failis oma positsioon. Kahjuks ei tööta selline skeem ka, kuid selle juhtumi ebaõnnestumise põhjus ei ole nii ilmne ja on seotud failide jagamise olemusega Linuxisüsteemis. Mõtle kesta skripti 5, mis koosneb kahest käskudest (P1 ja P2), mis tuleks läbi viia omakorda. Kui skripti kutsutakse käsurea poolt

eeldatakse, et P1 käsk kirjutab oma väljundi X-failile ja seejärel kirjutab P2-käsk ka selle väljundi X-failile, mis algab kohast, kus P1 käsk peatus.

Kui kest käivitub P1 protsessi, siis X-faili kõigepealt tühi, nii P1 käsk lihtsalt käivitub kirjutamise faili asendis 0. Siiski, kui P1 lõpetab oma töö, teatud mehhanismi vaja, et tagab, et P2 protsessi tahe Vt esialgse asendisse mitte 0 (ja see on see, kuidas see juhtub, kui faili failide kirjelduste asend on tabelis) ja väärtus, millele PI peatus.

Kuidas see tehakse, on näidatud joonisel fig. 10.19. Fookuses on sisestada uus tabel - avatud faili kirjeldus tabel (avatud faili kirjeldus tabel) - faili kirjelduste tabeli ja I-sõlme tabeli tabeli ja salvestada pointer faili (samuti lugeda / kirjutada bitt) . Joonisel on vanema protsess kesta ja tütar on esimene PI protsess ja seejärel P2 protsess. Kui kest loob PI protsessi, on selle kasutaja struktuur (sh failiskirjade tabel) sama membraani struktuuri täpne koopia, nii et mõlemad sisaldavad viiteid avatud failide kirjelduse tabelile. Kui protsesspil lõpetab oma töö, täpsustab Shelli faili deskriptor avatud failide kirjelduse tabeli, mis sisaldab faili P1 positsiooni asendit. Kui nüüd kest loob P2 protsessi, siis uue lapse protsessi pärsib automaatselt positsiooni faili, samas mitte uus protsess ega kesta on kohustatud teadma praegust väärtust selle positsiooni.


Kui faili avab kõik kõrvalised protsess, saab see teie enda sisenemise tabeli kirjeldus tabelis oma positsiooni faili, nimelt see on vajalik. Seega on avatud failide kirjelduse tabeli ülesanne lubada vanemate ja lasteprotsesside jagamist ühel toimikus ühel määral, kuid välismaiste protsesside puhul eraldada isiklikud viiteid.

Niisiis (naasmine lugemise lugemise probleemile lugemise probleemile) näitasime, kuidas määratakse faili ja I-sõlme positsioon. I-sõlme sisaldab esimese 12 failiploki kettaadresse. Kui faili asend langeb oma esimese 12 ploki, loetakse soovitud failiplokk ja andmed kopeeritakse kasutajale. Failide puhul, mille pikkus ületab 12 plokki, sisaldab I-sõlme ühe kaudse ploki kettaaadressi (üksik kaudne plokk) (joonis 10.19). See plokk sisaldab täiendavate kettaplokkide ketta aadresse. Näiteks, kui ploki suurus on 1 KB ja ketta aadress võtab 4 baiti, saab ühtne kaudne seade salvestada kuni 256 ketta aadressi. See skeem võimaldab teil toetada faile kuni 268 kb.

ext2. (nimetatakse ka ext2fs.) - Teine laiendatud failisüsteem(Teine laiendatud failisüsteem) on Linuxi kernelile ehitatud failisüsteem. Looja ja arendaja ext2 on Remy-kaart. EXT2 failisüsteem ehitati tema poolt vana, eelmise versiooni eest vastutasuks - Ext.

Selliste näitajate kohaselt võib see failisüsteem olla viide. Seda räägitakse failisüsteemi jõudluse testide tulemustest. Näiteks testides järjepideva lugemise ja kirjutamise kiirus, mis viidi läbi Dell Technical Center, ületab Ext2 failisüsteem ext3 ja on lugemispöördelda ainult kaasaegse kiirusega.

EXT2 peamine puudus on see, et see ei ole ajakirjandusfailisüsteem. Kuid see puudus kõrvaldati järgmises failisüsteemis - Ext3.

ext2 kasutatakse flash-kaartidel ja tahkete olekuste ajamitel (SSD), kuna ajakirjanduse puudumine on eelis, kui töötate sõidukite piirangutega sõidukite arvu piirangutega.

EXT2 loomise ajalugu.

Linuxi süsteemi kiire arengu ajal kasutas ta Minix-failisüsteemi. See oli üsna kõrge stabiilsus, kuid see oli 16-bitine. Selle tulemusena eksisteeris see range piirangu 64 MB sektsioonis. Lisaks oli piiri maksimaalne pikkus faili nimi, mis oli 14 tähemärki.

Need agregaadi piirangud olid "täiustatud failisüsteemi" väljatöötamise põhjuseks (seega mõiste " Laiendatud failisüsteem »). Tal oli ülesanne lahendada kaks minixi peamist probleemi. Uus failisüsteem avaldati 1992. aasta aprillis. See oli ext, see laiendas faili suuruse piirangut 2 gigabaiti ja paigaldas faili nime piirnormi 255 tähemärgiga.

Vaatamata uue failisüsteemi edule jäi siiski üsna palju lahendamata probleeme. Näiteks ei olnud mingit toetust eraldi juurdepääsuks, ei olnud aja jooksul andmete muutmise templid. Vajadus nende ülesannete lahendamiseks ja motiiviks luua laiendatud Ext2-failisüsteemi järgmise versiooni (" Teine laiendatud failisüsteem »). Ext2 töötati välja 1993. aasta jaanuaris, see rakendab ka vastavaid ACL-juurdepääsu juhtimisnimekirju ja laiendatud faili atribuute.

Loogiline organisatsioon Ext2.

Ext2-kataloogi hierarhia graafik on esitatud võrgu kujul. See on tingitud asjaolust, et üks fail võib kohe sisestada mitu kataloogi.

Kõik failitüübid on sümboolsed nimed. Hierarhiliselt organiseeritud failisüsteemides kasutatakse kolme tüüpi nimesid: lihtne, komposiit ja sugulane. Nii ext2. Lihtsa nime korral on piirang, et selle pikkus ei tohi ületada 255 tähemärki, lisaks peab nullümbol ja kaldkriips olema kohal.

Null sümboli puhul on piirangud seotud SI-keele ridade esindusega SIP-i sümboli puhul, kõik on see, et seda kasutatakse kataloogide vaheliseks jagavaks iseloomuna.

Täisnimi on kõikide kataloogide lihtsate sümboolsete nimede ahel, mille kaudu root alates selle faili käivitub. EXT2-s saab fail sisestada mitmeid katalooge, see tähendab, et see võib olla mitu täisnimetust (üks fail on mõned täisnimed). Kuid ikkagi määratleb täielik nimi faili.

EXT2 atribuudid:

  • tüüp ja juurdepääsuõigused toimikule,
  • omanik, juurdepääsugrupp,
  • teave lubatud toimingute kohta, \\ t
  • loomise aeg, viimane juurdepääs kuupäev, viimane muudatus kuupäev ja viimane eemaldamise aeg,
  • praegune faili suurus
  • failide spetsifikatsioon:
    • regulaarne fail
    • kataloog,
    • seadme bait-orienteeritud seade,
    • failiploki orienteeritud seade,
    • nimega kanal
    • sümboolne link
  • hõivatud plokkide arv,
  • teised

Faili atribuudid sisalduvad spetsiaalsetes tabelites ja mitte kataloogides, kuna see võib olla lihtne failisüsteemides. Selle tulemusena on kataloogil väga lihtne struktuur, mis koosneb kahest osast: indeksi deskriptori ja nime number.

Füüsiline organisatsioon Ext2.

Ketta sektsiooni struktuur

EXT2 osana saab eristada järgmist:

  • plokkide plokid ja plokid;
  • indeksi deskriptor;
  • superblock.

Kogu ketta partitsiooni ruum on jagatud fikseeritud plokkideks, blokeerib mitu sektori suurust (1024, 2048, 4096 või 8192 baiti). Bloki suurus on määratud failisüsteemi loomisel plaadiosas. Kõik plokid on määratud järjestuse numbrid. Et vähendada killustatust ja liigutuste arvu kõvakettapeade, kui lugedes suurte andmete massiivide, plokid ühendatakse rühmadesse.

Failisüsteemi põhikontseptsioon on indeksi deskriptor (nimetatakse ka anuma - teabe sõlme.). See on spetsiaalne struktuur, mis sisaldab teavet atribuutide ja füüsilise faili asukoha kohta. Indeks Dekapstrutorid ühendatakse iga plokkide ploki alguses sisalduva tabeli. SuperBlock on EXT2-failisüsteemi põhielement. See sisaldab üldist teavet failisüsteemi kohta. SuperBlock asub 1024 baitides osa algusest. Superbloki terviklikkus määrab failisüsteemi funktsionaalsuse. OS loob mitme superbloki varukoopiad - partitsiooni kahjustamise korral. Järgmises plokis pärast superblokki on globaalne deskriptor tabel - kirjeldus plokkrühmade kujul massiivi üldise informatsiooni kõigi plokkrühmade.

Blok Group

Kõik Ext2 plokkplokid on purustatud rühmadeks. Iga rühma puhul luuakse ülemaailmsel kirjelduses tabelis eraldi kirje. See kanne salvestab peamised parameetrid, niimoodi: blokeerimisnumber bitikaarides ja tabelis, grupi vabade plokkide arv, katalooge sisaldavate indeksi kirjelduste arvu.

Bitikaart BLOK - See on süsteem, kus iga bitt teatab sellest, kas failile vastav fail on fail. Kui bitt on 1, siis plokk on hõivatud. Sarnast funktsiooni teostab bitikap indeksi kirjeldused: see näitab, millised indeksi kirjeldused on hõivatud ja mis ei ole. Linuxi kernel püüab gruppides ühtlaselt jaotada ja inode faile - liikuda emakataloogi gruppi. Ülejäänud koht ilmub tabelis, kuna andmed on failide salvestamiseks määratud.

Andmete käsitlemise süsteem

Andmete käsitlemissüsteem on failisüsteemi üks tõsisemaid ja põhikomponente. Tänu sellele on soovitud fail kettal paljude tühjade või hõivatud plokkide hulgas.

ext2 rakendab järgmist failiploki adresseerimisskeemi. Faili aadressi salvestamiseks eraldatakse 15 väljad, millest igaüks koosneb 4 baitist. Kui fail sobib 12 plokis, on vastavate klastrite arv loetletud kaheteistkümnel aadressil. Kui faili suurus ületab 12 plokki, sisaldab järgmine väli klastri aadress, kus järgmiste failiplokkide arv võib asuda. Niisiis kasutatakse kolmeteistkümnendat valdkonda kaudse tegemiseks.

Mis maksimaalne suurus plokk 4096 baiti, klastri vastab 13. väljale võib sisaldada kuni 1024 numbrit järgmistest failiplokkidest. Kui faili suurus ületab 12 + 1024 plokki, siis kasutatakse 14. valdkonnas, kus asub 1024 klastri numbrit sisaldav klastri aadress, millest igaüks viitab 1024-failiplokile. Seal on juba kahekordne kaudne aadress. Ja kui fail sisaldab rohkem kui 12 + 1024 + 1048576 plokki, siis rakendatakse viimast kolmekordset väljundit kolmekordse kaudse aadressi jaoks.

Selline aadressivõimsus võimaldab teil faile ületada, üle 2 TB maksimaalse ploki suurusega 4096 baiti.

Kui teil on kaks operatsioonisüsteemi, Windows ja Linux on paigaldatud, siis ilmselt sooviksid sisalduvad osade vaba operatsioonisüsteemi otse Windowsi alla laadimata arvuti.

Kahjuks ei ole Linuxi operatsioonisüsteemi osade toetust Windowsis. Ja asjata. Mulle tundub, et see võib olla Microsofti ilus žest.

Probleemi olemus on see, et Windows kasutab NTFS-failisüsteemi ja Linuxil on oma viis failide, laiendatud failisüsteemi korraldamiseks, mille uusim versioon on järjestuse number 4.

Linux on oma kasutajatele sõbralikum kui tema kaubanduslik õde: Linuxis toetab vaikimisi Windows NTFS-failisüsteem. Loomulikult ei saa te linuxi NTFS-i sektsioonis installida, kuid saate lugeda ja kirjutada andmeid selle kohta.

EXT2 IFS

EXT2 IFS toetab Windows NT4.0 / 2000 / XP / 2003 / Vista / 2008 versioone X86 ja X64 ja võimaldab teil vaadata Linuxi ext2 sektsioonide sisu ja salvestada ka neile. Utiliit määrab ext2fs.sys süsteemi juht, mis laiendab Windowsi võimalusi ja sisaldab täielikku toetust ext2-sse , Exploreris.

Ext2 FSD.

Ext2 FSD on Windowsi süsteemide tasuta draiver (2K / XP / Vista / 7 versioonid X86 ja X64). Nagu eelmise kasuliku, mis oma olemuselt on ka juht, sisaldab täielikku toetust Ext2 failisüsteemi Windows.

LTOOLS - käsurea utiliidi komplekt, mis võimaldab teil lugeda ja salvestada andmeid Linux Ext2, Ext3 ja Reiserfs (standardsed Linuxi failisüsteemid) DOS-i või Windowsi kohta.

Programmi versioon on graafilise kestaga (kirjutatud Java) - LTOOLSGUI, samuti versioon graafilise kestaga kirjutatud.

Ext2Read.

Magustoiduks nagu alati kõige maitsvamad.

EXT2Read on kasulikkus, mis põhineb juhifailil, mis võimaldab teil vaadata ja kirjutada ext2 / ext3 / ext4 osadele. Toetab LVM2 ja see eristab seda teiste programmide käesoleva läbivaatamise, Ext4 failisüsteemi. Sisseehitatud toetust rekursiivsetele kopeerimise kataloogidele.

Ja siin on teine \u200b\u200bmagustoit. Esialgu öeldi, et Microsofti hea žest lisatakse vaikimisi Windowsi Linuxi osade toetust.

Gestra oli veel tehtud Linuxi 20. aastapäeval. Vaata ennast.

See on kõik. Tänan tähelepanu eest. Ma lähen võidelda tagasi mai mannet. Nende sel kevadel on palju sooo. 🙂

Vladimir Miskov

Failisüsteemi arhitektuur Ext2

Artiklis käsitletakse Linuxi operatsioonisüsteemi ext2 failisüsteemi loogilist struktuuri.

EXT2-failisüsteemi põhikomponendid

Nagu iga UNIX-failisüsteemis, saab EXT2-failisüsteemi osana eristada järgmisi komponente:

  • plokkide plokid ja plokid;
  • teabe sõlme;
  • superblock.

Plokid ja plokid plokkide

Kogu ketta partitsiooni ruum on jagatud fikseeritud suurusega plokkideks, mitmeks sektori suuruseks - 1024, 2048 ja 4096 baiti. Block suurus on näidatud failisüsteemi loomisel kõvaketta sektsioonis. Väiksem ploki suurus säästab ruumi kõvakettale, kuid piirab ka maksimaalset failisüsteemi suurust. Kõigil plokkidel on järjestuse numbreid. Selleks vähendada killustatust ja liikumise arvu kõvakettapeade, kui lugedes suurte andmete massiivide, plokid ühendatakse rühmadesse.

Teabe sõlme

Failisüsteemi põhikontseptsioon on teabe sõlme, teabe sõlme või inode. See on eriline struktuur, mis sisaldab teavet atribuutide ja füüsilise faili asukoha kohta. Faili atribuudid on selle tüüp (tavaline fail, kataloog jne), juurdepääsuõigused, omaniku identifikaator, suurus, loomise aeg. Teave füüsilise asukoha kohta on failiandmete absoluutse blokeerimisnumbrite järjestus.

Superblokk

SuperBlock on EXT2-failisüsteemi põhielement. See sisaldab järgmist failisüsteemi teavet (mittetäielik nimekiri):

  • koguarv plokkide ja inode failisüsteemis;
  • vabade plokkide ja inode arv failisüsteemis;
  • failisüsteemi ploki suurus;
  • grupis plokkide ja inode arv;
  • suuruse inode;
  • failisüsteemi identifikaator;
  • esimese andmeploki number.

Teisisõnu, see on ploki number, mis sisaldab superblokki. See number on alati võrdne 0, kui failisüsteemi ploki suurus on suurem kui 1024 baiti ja 1, kui ploki suurus on 1024 baiti.

Failisüsteemi funktsionaalsus sõltub otseselt superbloki terviklikkusest. Operatsioonisüsteem loob superbloki mitu varukoopiat, et seda kahjustada. Peamine koopia asub 1024 baiti kompenseerimisel osa faili süsteemi loomisel (esimesed 1024 baiti on reserveeritud operatsioonisüsteemi bootloaderile).

ERT2-failisüsteemi varajased versioonid loodud superbloki koopiad iga plokkide ploki alguses. See tõi kaasa suure kettaruumi kadu, nii et hiljem vähendati superbloki varukoopiate arv ja nende paigutuse jaoks eraldati 0, 1, 3, 5 ja 7 plokkide rühmad.

Blok Grupi formaat

EXT2-failisüsteemi üldine konstruktsiooniagramm on esitatud joonisel fig. üks.

Peaaegu kõigil plokkidel on sama formaat. Igas rühmas säilitatakse lisaks teabeplokkidele lisaks infoplokkidele bitikaadi ja plokkide tööhõive kohta bitikaadi kujul. Plokkide plokk 0 hõlmavad ka superblokki ja rühmade tabeli kirjeldust, mida me allpool kaalume.

Tööhõiveplokkide kaart asub tavaliselt grupi esimeses plokis. Kui grupis on varukoopia, asub bitikap grupi teises plokis. Bitikaardi suurus on üks plokk. Iga selle kaardi natuke tähistab ploki olekut. Kui bitt on määratud (1), on plokk hõivatud, kui plokk on nullitud (0) - plokk on tasuta. Esimene grupi plokk vastab kaardi null-bittile, teine \u200b\u200bplokk - esimene bitt jne.

Inode, mis asub samasse grupis, kogutakse tabelis. Bite tööhõive kaardil INDOD-grupis iseloomustab iga bitt inode grupi tabelis elemendi olekut.

Iga plokkide ploki kirjeldatakse blokeerimisgrupi deskriptori abil. Grupi käepide on struktuur, mis sisaldab teavet plokkide plokkide bitikapi aadresside kohta, anuma hõivatud bitikaardi ja vastava grupi sissetuleku tabeli kohta. Kõik grupi kirjeldused kogutakse grupi kirjelduste tabelis, mis on salvestatud plokkide rühmas 0. Nii et superbloki jaoks loob operatsioonisüsteem tabeli kirjelduste backup koopiad.

Faili lugemise algoritm

Iga indode, samuti plokk, on järjestuse number, ainulaadne failisüsteemis ja sisaldab teavet ainult ühe faili kohta. Seega, et pääseda sisu faili, peate teadma järjestuse number vastava inode vastab sellele.

Nagu eespool mainitud, informatsioon füüsilise faili asukoha kohta sisaldub sisseolus. See teave on 32-bitise ploki numbrite järjestus, mis sisaldavad faili andmeid (joonis 1). Esimesed 12 numbrid on otsesed lingid infoplokkide (otseste plokkide arv). 13. number on kaudne link (kaudne plokkide arv). See sisaldab ploki aadressi, milles teabeplokkide aadressid salvestatakse. 14. Ruum on kahekordne kaudne link (topeltplokkide arv), 15. number on kolmekordne kaudne link (kolmekordne plokkide arv).

Anuma faili nimi ei kuulu failide nimede vastavuse seadmine ja inode järjestuse numbrite vastavuse seadmine kataloogide kaudu.

Kataloogid

UNIXi ja POSIX-süsteemide failid salvestatakse puuhierarhilises failisüsteemis. Failisüsteemi juur on juurkataloog, mida tähistab "/" sümbol. Iga faili süsteemi vahepealne sõlme on kataloog. Failisüsteemi puu lõplikud tipud on kas tühjad kataloogid või failid. Absoluutne tee nimi faili koosneb nimede kõik kataloogid, mis viib määratud faili, alustades juurekataloogi. Niisiis, rada nimi /home/test.File tähendab, et test.File fail asub kodukataloogis, mis omakorda asub juurekataloogis "/".

Kataloog, samuti fail, kirjeldatakse anuma abil. Kataloogi sisu on kirjete hulgast, millest igaüks sisaldab teavet faili kohta, mis on "sees" praeguse kataloogi.

Kataloogi rekordil on järgmine vorm:

  • järjestuse numbri inode fail;
  • salvestuspikkus baitides;
  • faili nimi;
  • faili nime pikkus.

Inode faili otsing algab alati juurekataloogiga. Näiteks, et saada inode järjestuse number juurekataloogis, peab operatsioonisüsteem saama juurteraamatukataloogi sisu, leidma selle selle faili nimega ja eemaldage sellest rekordist inode faili number.

Mitmed inode numbrid on failisüsteem reserveeritud, nende nimekiri sisaldub päisefailis:

* Special inode numbrid

#Define ext2_bad_ino 1 / * Bad Blocks 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 / * boot loader inode * /

#Define ext2_undel_dir_ino 6 / * Undelete kataloog Inode * /

Ruurekataloogi salvestamiseks on sisseodeeritud number 2 (root-inode). See inode on plokk plokkide 0 ja võtab teise positsiooni inode tabelis selle rühma. Esimese mittesetteremata inode arvu salvestatakse superbloki.

Pärast inodelise järjestuse numbri määramist arvutab kernel grupi numbri, milles see anum asub ja selle asukoht inode grupis tabelis. Arvestades anuma sellest positsioonist, saab operatsioonisüsteem täieliku failiteabe, sealhulgas blokeerida aadressid, milles faili sisu salvestatakse.

Arv ploki, mis asub atode arvutatakse valemiga:

group \u003d (INODE_NUM - 1) / inodeas_per_group

kus:

  • grupp.- plokkploki soovitud arv;
  • inode_num - faili määratlemise järjestuse number angode;
  • inodes_per_group - grupis asuva inode arv (see teave on superbloki).

Inode Grupi tabeli inode positsioon määratakse valemiga:

index \u003d (inded_num - 1)% inodes_per_grupa

kui indeks on tabelis indeks asend.

Kaaluge näidet testide sisu saamisest.File faili asuva root kataloogis. Et lugeda /test.File faili:

  • rootikataloogi kirjete massiivis leidke selle faili kirje;
  • eemaldage anuma faili järjestuse number, arvutage grupi number, milles see anum asub;
  • selle grupi deskriptorilt väljastate inode grupi tabeli aadressi;
  • arvutage selle tabeli sissetuleku positsioon;
  • loe inode faili;
  • alusploki aadresside väljavõtmiseks ja nende plokkide teabe loendamiseks.

Joonisel fig. 2 Üksikasjalikkus näitab / testifaili lugemist. Fail.

    SAMMUD 1-6 - Rootikataloogi lugemine:

  1. Plokkide grupist 0 loetakse tabeli kirjeldust.
  2. Tabeli kirjelduse tabelist tabelist allalaaditakse plokkide grupp 0 ja inode grupi aadress loetakse sellest.
  3. Alates grupist plokkide 0 loeb anuma tabeli.
  4. Rootikataloogi inode järjestuse number on fikseeritud ja võrdne 2-ga, nii et teine \u200b\u200belement loetakse inode rühma 0-st, mis sisaldab ploki aadressi juurekataloogi sisuga. Oletame, et see seade asub A. plokkide plokis.
  5. Kontsernist plokkide A loetakse plokis, mis sisaldab juurkataloogi arvestust.
  6. Otsiti kirje kirje nimega "test.File". Kui selline kirje leitakse, on inode seeria "test.File" fail sellest välja laaditakse.
  7. Inode numbri määratlemisel saate faili infoplokkide juurde pääseda (sammud 7-11):

  8. Grupi number arvutatakse, kus see anum asub ja selle asukoht inode grupi tabelis (oletame, et grupi number on B-ga võrdne ja tabelis - X).
  9. Rühma kirjelduste tabelist eemaldage osa Grupi deskriptor B ja selle plokkide anuma tabeli aadress loetakse sellest.
  10. Anuma tabel loetakse B-ploki rühmast.
  11. Blokkide B plokkide anuma tabelist B-loeb anuma asendis X.
  12. Lugemisnumbrist, blokeerida aadresside sisufaili /test.File on alla laaditav ja teave loetakse plokist määratud aadressiga.

Faili lugemise algoritmi tarkvara rakendamine

Allikaandmed: kõvakettal on partitsiooni, millele on loodud Ext2 failisüsteem. See osa vastab seadme / dev / HDA3-failile. Sektsiooni juurkataloogis luuakse kodu alamkataloog ja see sisaldab test.File faili järgmise sisu:

Kas Cytrus elab lõunas?

Jah, kuid võltsitud eksemplar!

1234567890-=

Ärge arvake halba, see ei ole mõttetu, vaid testi kasutamine telegraafi koolitamise käigus endise NSV Liidu teatise vägedes!

Tähelepanu! Arvesse tuleks võtta ühte olulist punkti. Loodud faili ei salvestata kohe kettale ja esimene langus kettapuhvrisse. Proovides kohe saada sisu faili sisu vastavalt ülaltoodud algoritmi ei too kaasa midagi, sest teave selle faili kohta ei ole füüsiliselt kettal. See on vaja "sundida" süsteemi salvestada kettapuhvri kettal. Lihtsaim viis seda teha on taaskäivitamise toimimise tegemine. Seetõttu taaskäivitage süsteem pärast faili käivitamist.

Meie ülesanne on kasutada seade / dev / HDA3 faili, et lugeda /home/test.File faili kasutades meetodit otsese juurdepääsu oma teabeplokkide.

Mõtle programmi rakendamise mooduli, mis teostab seda operatsiooni.

Päisefailid:

#Include.

#Include.

#Include.

#Include.

#Include.

#Include.

Päisefail määratleb struktuuri tüübid, mis kirjeldavad EXT2-failisüsteemi põhikomponente - SuperBlock, Block Group deskriptorit, teabe sõlme, kataloogi kirje.

Kaaluge lühidalt väljad, mis kuuluvad igasse neist struktuuridest:

  1. Konto EXT2_SUPER_Block SuperBlock struktuur:
    • __U32 s_inodes_count- faili süsteemi inode koguarv;
    • __U32 s_blocks_count.- failisüsteemis plokkide koguarv;
    • __U32 s_free_blocks_count.- vabade plokkide arv;
    • __U32 s_free_inodes_count.- vaba inode arv;
    • __U32 s_first_data_block- esimese andmeploki number (blokeerimisnumber, kus superblokk asub);
    • __U32 s_log_block_size. - Seda väärtust kasutatakse ploki suuruse arvutamiseks. Bloki suurus määratakse valemiga: Bloki suurus \u003d 1024<< s_log_block_size;
    • __U32 s_blocks_per_group - grupi plokkide arv;
    • __U32 s_inodes_per_group - grupis asuva anuma arv;
    • __U16 s_magic - Ext2 failisüsteemi identifikaator (0xef53 allkiri);
    • __U16 s_inode_size - teabe sõlme (inode) suurus;
    • __U32 s_first_ino. - esimese küsitluseta inode arv.
  2. Konto EXT2_GROUP_DSC grupi deskriptor konstruktsioonistruktuur:
    • __U32 BGBLOCK_BITMAP- grupi plokkide tööhõive bitmap;
    • __U32 bg_inode_bitmap- tööhõive-anuma grupi kaart;
    • __U32 bg_inode_table - Aadressi tabeli aadress.
  3. Konto EXT2_INODI TEAVE NODE STRUKTUUR:
    • __U16 i_mode on selle failide ja juurdepääsuõiguste tüüp. File tüüp määratleda bitti 12-15 selles valdkonnas:
      • 0xa000.- sümboolne link;
      • 0x8000.- tavaline fail;
      • 0x6000.- Block Block seade;
      • 0x4000.- kataloog;
      • 0x2000.- sümboolne seadmefail;
      • 0x1000- FIFO kanal.
    • __U32 i_size. - suurus baitides;
    • __U32 i_atime.- viimane faili pääsuaeg;
    • __U32 i_ctime. - failide loomise aeg;
    • __U32 i_mtime.- viimase muutmise aeg;
    • __U32 i_blocks. - faili poolt hõivatud plokkide arv;
    • __U32 i_block - teabekoguste aadressid (sealhulgas kõik kaudsed lingid).
  4. Ext2_n_blocks väärtus on failis määratletud:

    * Konstandid andmeplokkide suhtes

    #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. Konto EXT2_DIR_ENTRY_2 Kataloogi sisestamise struktuur:
  6. #Define ext2_name_len 255.

  • __U32 inode - Inode numbrifail;
  • __U16 rec_len. - kataloogi salvestamise pikkus;
  • __U8 name_len.- faili nime pikkus;
  • char Nimi.faili nimi.

Me määratleme selle osa nimi, millele failisüsteem on loodud, globaalsed struktuurid ja muutujad.

#Define part_name "/ dev / hda3"

konto ext2_super_block sb;

/ * puhver laua kirjelduse salvestamiseks * /

allkirjastamata char buff_grp;

allkirjastamata Char buff; / * Teave puhver * /

int indev; / * Seadme faili käepide * /

int blksize; / * Failisüsteemi ploki suurus * /

Me määratleme mitmeid funktsioone, mida me peame töötama:

SuperBloki lugemisfunktsioon:

void Read_SB ()

Memmem (& SB, 0,1024);

Me nihkunud 1024 baiti poolt algusest osa ja lugeda superblock struktuuri struktuuri extra2_super_block SB:

Kui (Lyek (indev, 1024,0)< 0) {

Perror ("Lyek");

Välju (-1);

IF (Loe (Loe, CHAR * & SB, SIZEF (SB))< 0) {

Perror ("Loe");

Välju (-1);

Kontrollige failisüsteemi identifikaatorit:

IF (SB.S_MAGIC! \u003d EXT2_SUPER_MAGIC) (

PRINTFF (tundmatu failisüsteemi tüüp! ");

Välju (-1);

EXT2_SUPER_MAGICi väärtus on määratletud päise faili.

Kuvab teavet failisüsteemi kohta, mis asub SuperBlockis:

printf ("Superblock Info ----------");

Printf ("Inode Count -% U", SB.S_INODES_COUNT);

Printf ("Blocks Count -% U", SB.S_Blocks_count);

Printf ("Block suurus -% U", 1024<< sb.s_log_block_size);

PRINTFFF ("Esimene inode -% D", SB.S_First_ino);

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

Printf ("Inode suurus -% D", SB.S_INODE_SIZE);

Printf ("Inode kohta rühma kohta -% U", SB.S_INODES_PER_GROUP);

PRINTF ("Bloskopp rühma kohta -% U", SB.S_Blocks_per_group);

PRINTFF ("Esimene andmeplokk -% U", SB.S_First_Data_block);

Tagasipöördumine;

Funktsioonide lugemise tabeli kirjeldused:

void Read_GDT ()

Arvutage failisüsteemi ploki suurus:

Blksize \u003d 1024.<< sb.s_log_block_size

Grupi kirjeldused tabel asub plokis, mis asub kohe esimese andmeploki (Superbloki jaoks) taga.

Lugege tabelit:

Kui (Lyek (SB.S_First_Data_block + 1) * blksize, 0)< 0) {

Perror ("Lyek");

Välju (-1);

Kui (Loe (Loe, Buff_grp, Blitsize)< 0) {

Perror ("Loe");

Välju (-1);

Tagasipöördumine;

Inode sisu funktsioon selle numbriga:

vOID GET_INODE (INT INODE_NUM, struktuur EXT2_INODE * IN)

Funktsiooni sisendfunktsioonid - Inode järjestuse number ja struktuuri struktuur EXT2_INODE.

Konto ext2_group_Desc gd;

U64 Group, indeks, POS;

Arvutage plokkrühma arvu, milles anum asub inode_numi järjestuse numbriga:

Grupp \u003d (inde_num - 1) / sb.s_inodes_per_group;

Tabelis kirjeldamistest eemaldage grupi deskriptor ja kopeerige see struktuurile EXT2_GROUP_DESC GD struktuurile:

Memmeet ((tühimik *) & gd, 0, suurusof (GD));

Memcpy ((VOID *) & GD, Buff_grp + (Group * (GD))), suurusi (GD));

Arvutage inode positsiooni inode_num järjestuse numbriga grupi grupi inode_num järjestuse numbriga ja lugege seda anuma struktuuri struktuuri extra2_inode struktuuri

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

Pos \u003d ((__U64) gd.bg_inode_table) * blksize + (indeks * sb.s_inode_size);

Pread64 (indev, in, sb.s_inode_size, pos);

Tagasipöördumine;

Andmeploki lugemisfunktsioon:

void Read_iblock (struktuur EXT2_INODE * in, int blk_num)

U64 POS;

Sisendfunktsiooni parameetrid - inDode struktuur ja ploki number (tähendas numbrit Aadressploki järjestusest, mis asub innukalt).

Arvutage nihe ja sektsioonis ja lugege seda seadet globaalse puhvri buffile:

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

Pread64 (indev, buff, blksize, pos);

Tagasipöördumine;

Funktsioon juurekataloogi sisu saamiseks:

void get_root_dentry ()

Konto ext2_inode sisse;

Infokataloogi inode järjestuse number on teada, nii et me saame juurkataloogi sisseode sisu ja lugeda selle sisu puhvris:

get_inode (Ext2_root_ino ja IN);

Read_iblock (& \u200b\u200bin, 0);

Buff Buffer sisaldab juurkataloogi sisu.

Tagasipöördumine;

Inode numbri vastuvõtmise funktsioon faili nime järgi:

int get_i_num (char * nimi)

Sisendfunktsiooni parameetrid - failinimi. Tagasi väärtus - järjestuse numbri inode fail.

Int i \u003d 0, rec_len \u003d 0;

Konto ext2_dir_entry_2 dent;

Buffu puhvris on kataloogi kirjete hulgas. Inodelifaili järjestuse numbri määramiseks peate selle massiivi leidma selle faili nimega:

(; I< 700; i++) {

Memcpy ((void *) & dent, (Buff + Rec_len), suunda (mõte));

Kui (! MemcMP (Dent.Name, nimi, Dent.Name_len))

Rec_len + \u003d dent.rec_len;

Tagastage dent.inode;

Ja nüüd kirjutame peamise funktsiooni alla:

int main ()

Muutujad ja struktuurid:

konto ext2_inode sisse;

// Absoluutne reisimisfaili nimi

Allkirjastamata char * full_path \u003d "/home/test.file";

Allkirjastamata Char Buff1;

Staatiline int i \u003d 1;

Int n, i_num, outf, tüüp;

Faili absoluutse teekonna esimene märk peaks olema otsene kaldkriipsu (/). Vaata seda:

IF (Full_Path! \u003d "/") (

Perror ("kaldkriipsu");

Välju (-1);

Avage seadme fail, lugege superblocks ja tabeli kirjeldused:

Indev \u003d avatud (osa_name, o_rdonly);

Kui (indev.< 0) {

Perror ("avatud");

Välju (-1);

Read_SB ();

Read_GDT ();

Me saame juurikataloogi sisu:

get_root_dentry ();

Nüüd Buff Buffer sisaldab kõiki juurkataloogi arvestust (kui soovite, saate neid salvestada eraldi failis). Nüüd, millel on juurkataloogi kirjete, saame jõuda testi sisule.File faili kasutades ülaltoodud faili lugeda algoritmi. Selleks korraldame me tsükli. Tsükli kehas analüüsime faili absoluutne tee nimi, rõhutades selle elemente - alamkataloogid (see on üks, kodu) ja otsingufaili nimi (test.file). Iga elemendi jaoks määratleme inode'i järjestuse numbri, arvame, et see innukad ja seejärel saada nullploki sisu (innukalt asuva aadressiplokkide järjestusest):

samas (1) (

Memmem (BUVV1,0, SIZEF (BUVV1));

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

Buff1 [n] \u003d Full_Path [i];

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

I ++;

Murda;

buff1 [n] \u003d "?";

Faili absoluutse teekonna nimetuse iga elemendi puhul määrame indode järjestuse numbri, lugeme seda inode mällu ja seejärel saada nullploki sisu:

I_num \u003d get_i_num (Buff1);

Get_inode (i_num, & in);

Read_iblock (& \u200b\u200bin, 0);

Näita failiinfot (nimi, inode number, faili suurus ja selle tüüp):

PRINTFF ("Inode number -% U", i_num);

PRINTFF (faili nimi -% s ", borff1);

PRINTFF (faili suurus -% u ", in.i_size);

Faili tüüp määrab vanemate nelja bitti poolt I_Mode Field Struktuuri ext2_inode:

tüüp \u003d ((in.i_mode & 0xf000) \u003e\u003e 12);

PRINTFF (tüüp -% D ", tüüp);

Lüliti (tüüp) (tüüp) (

Case (0x04):

PRINTFF ("kataloog)");

Murda;

Case (0x08):

PRINTFF ("(tavaline fail)");

Murda;

Case (0x06):

PRINTFF ("(plokk)");

Murda;

Case (0x02):

PRINTFF ("(sümboolne seade)");

Murda;

Vaikimisi:

PRINTF ("(tundmatu tüüp)");

Murda;

Kontrollige faili tüüpi. Kui see on tavaline fail - katkestada tsükkel:

Kui (tüüp & 0x08) (

Buff puhver saab teavet lugeda infoplokkide /home/test.File faili. Me kirjutame selle teabe failile:

OUTF \u003d avatud ("välja", O_Creat | O_RDWR, 0600);

Kirjutage (OUTF, BUFF, SIZEF (BUFF));

Sulge (OUTF);

Murda;

Me lahkume:

Sulge (indev);

Tagasi 0;

EXT2-failisüsteemi loogilise struktuuri kaalumisel.

(Teine laiendatud failisüsteem).

· Linuxi failisüsteemide metsandus

· Plaadi partitsiooni struktuur ext2fs

·

· Kataloogid

· Failide seadmed

·

·

· Raamatukogu ext2fs

· EXT2FS süsteemi osa

· Privaatsuse arvutamine

Matfak

Prog.

2. kursus 5. grammi.

Chichirov Andrey

FalomeThem Ext2fs (teine \u200b\u200blaiendatud failisüsteem).

Linuxi failisüsteemide aegumine

Linuxi muutujad olid Minixi operatsioonisüsteemi põhjal andmebaas. See oleks kahe süsteemi vahelised kandidaadid kui uued failisüsteem, nii Linus Torvalds järgisid Linuxi Minix-failisüsteemi alajao. Kuigi see failisüsteem oli suhteliselt väikese koguse vigadega üsna tõhus.

Siiski on Minix-failisüsteemiga seotud vilkumised üsna kõrged, nii et nad hakkasid mõtlema uue failisüsteemi üle Linuxi jaoks.

Uue failisüsteemi rakendamise kontrollimiseks Linuxi müris on kasutatud virtuaalse failisüsteemi (VFS). VFS on kirjutanud Chris Provenzano ja siis on Linus Torvalds läbinud selle integratsiooni mürki.

Pärast VFS-i mürki paigaldamist on uus FAL System Fal System (laiendatud failisüsteem) olnud lihtne ja lisatakse Linuxile 0,96c VEXA. Uues failisüsteemis eemaldati kaks olulist minix süsteemi: selle maksimaalne maht võib ulatuda 2 gigabaiti ja maksimaalne faili nimi on 255 tähemärki. See oli saavutus Minix-failisüsteemiga, kuigi mõned lihtsalt ilmsed on endiselt kirjutades. Puudus oluline juurdepääs, indeksi muutmine descippet ja muuta failimuutuse rakke. See failisüsteem kasutas seotud nimekirju, mis avanevad tasuta plokkide ja indeksiga Descppings, mis mõjutas oluliselt süsteemi süsteemi: nimekirjade loenditega muutus määratlemata ja juhitava, mis kasutati failisüsteemi toimimiseks.

Otsus nende sondi oli vabastamist kahe uue failisüsteemide 1993. aasta jaanuaris: XIA ja EXT2FS (teine \u200b\u200blaiendatud failisüsteem). Kõige enam põhines XIA failisüsteem Minixil mitme uue funktsiooni lisamisega. Põhimõtteliselt oli see võimalus harjutada pikkade failinimedega, suurema mahuga plaatide heakskiitmist ja faili muutuste rakkude pinget. Kaitsekividega põhines ext2fs paljude paranduste ja täienduste extfidel. Ta oli ka tuleviku võimalus.

Kui need kaks failisüsteeme vabastati, olid nad funktsionaalselt koerte. XIA süsteem oli selle minimeerimise tõttu usaldusväärsem kui ext2fs. EXT2FS-süsteemi vigu olid nende vaiksemas rakenduses ülespandud ja lisatud on suur hulk uusi funktsioone ja parandusi. Praegune Ext2Fs failisüsteem on väga usaldusväärne ja muutunud de facto Linuxi failisüsteemiks.

Järgnev tabelis on esitatud üldteave funktsionaalsete funktsioonide funktsionaalsuse kohta, mis on varustatud katkendlike failisüsteemidega.

Minix FS.

Ext fs.

Ext2 fs.

Xia FS.

Maksimaalne failisüsteem

Maksimaalne faili pikkus

Maksimaalne failinimi pikkus

Faili muudatuste torni alajagu

Võime tempo

Muutuv PazMP Bloka

Infometute kaitse

Kui teil on vaja faili nime pikkust Ext 2. Seda saab suurendada 1012-ni.

EXT2Fs tungivad juurkasutajale mõned plokid. Tavaliselt on see 5% koguarvust, mis võimaldab süsteemihaldusel vältida kõvaketta ulatuse puudumist selle täitmisel DPUUGI kasutajate kasutajate kasutamisega.

Ketta partitsiooni struktuur ext2fs

Kõvaketta tootjad pakuvad tavaliselt oma tooteid madal tasemel kujundatud. Niipalju kui mina tean, tähendab see, et kõik kettaruumi eri etikettide abil on purunenud "sektorid", 512 baiti suurust. Selline ketas (või kettaosa) peab olema valmis kasutamiseks konkreetses operatsioonisüsteemis. MS-DOS-is või Windowsis nimetatakse ettevalmistamise protseduuri vormindamiseks ja Linuxis - failisüsteemi loomine. Failisüsteemi loomine ext2fs. See on luua konkreetse loogilise struktuuri kettaosas. See struktuur ehitatakse järgmiselt. Esiteks eraldatakse alglaadimisala kettal. Boot-ala luuakse mis tahes failisüsteemis. Esmasel partitsioonil sisaldab see alglaadimisskeemi - koodifragment, mis käivitab operatsioonisüsteemi laadimise protsessi käivitamisel. Teiste sektsioonide puhul ei kasutata seda ala. Kõik ülejäänud kettaruumi jagatakse plokkideks. Seade võib olla suurus 1, 2 või 4 kilobaiti. Plokk on adresseeritud kettaruumi ühikuga. Asukohafailide valik toimub kogu plokkide valimisel, nii et ploki suuruse valimisel peate kompromisse. Bloki suur suurus vähendab reeglina faili lugemisel või kirjutamisel kettale kaebuste arvu, kuid see suurendab harva kasutatava ruumi osakaalu, eriti kui on suur hulk väikseid faile.

Blokid oma piirkonnas kombineeritakse plokkide rühmadesse. Kontserni sees olevad failisüsteemi ja plokkide plokkrühmad on nummerdatud järjestikku, alustades 1. Plaadi esimesest plokil on number 1 ja kuulub gruppi numbriga 1. Kettaplokkide koguarv (kettal) Sektsioon) on sektorites väljendatud kettamahu jagaja. Ja plokkrühmade arv ei pea plokkide arvu jagama, sest viimane plokkide rühm ei pruugi olla lõppenud. Iga plokkide ploki alguses on aadress, mida saab saada ((grupi number - 1) * (grupi arv) arv).

Igal plokkidel on sama struktuur. Selle struktuur on esitatud järgmises tabletis.

Struktuuri rühma plokkide ketta partitsiooni ext2fs.

Selle struktuuri esimene element (Superblock) on kõigi rühmade jaoks sama ja kõik teised on iga rühma jaoks üksikisikud. Superblokk salvestatakse iga plokkide rühma esimeses plokis (välja arvatud rühm 1, milles laadimisregistri asub esimeses üksuses). Superblokk See on failisüsteemi lähtepunkt. See on suurus 1024 baiti ja alati asub 1024 baiti kompenseerimisel faili süsteemi algusest. Mitmete superbloki koopiate olemasolu on tingitud selle failisüsteemi elemendi äärmiselt tähtsusest. Superbloki duplikaadid kasutatakse failisüsteemi taastamisel pärast ebaõnnestumisi.

Superbloki salvestatud teavet kasutatakse juurdepääsu teistele kettale juurdepääsu korraldamiseks. Superblock määrab faili süsteemi suuruse, mis on sektsiooni maksimaalne failide arv, vaba ruumi kogus ja sisaldab teavet, kus otsida vaba alasid. OS-i käivitamisel loetakse superblokk mällu ja kõik failisüsteemi muudatused leiavad esmalt ekraani OP-s asuva superbloki koopia ja salvestatakse ainult perioodiliselt. See võimaldab teil suurendada süsteemi jõudlust, kuna paljud kasutajad ja protsessid värskendavad pidevalt faile pidevalt. Teisest küljest, kui superblokk on välja lülitatud, peab see olema kirjutatud kettale, mis ei võimalda arvutit välja lülitada, lülitades lihtsalt võimsuse välja. Vastasel juhul ei sobi järgmise koormusega superbloki salvestatud teave failisüsteemi tegeliku oleku jaoks.

SuperBlockil on järgmine struktuur

Väli nimi

Tüüp

Kommentaar

s_inodes_count

Ulong

Indekside kirjelduste arv failisüsteemis

s_blocks_count.

Ulong

Failisüsteemi plokkide arv

s_r_blocks_count.

Ulong

Superuserile reserveeritud plokkide arv

s_free_blocks_count.

Ulong

Vaba plokkide arv

s_free_inodes_count.

Ulong

Vabad indeksi kirjelduste arvu börsil

s_first_data_block

Ulong

Esimene plokk, mis sisaldab andmeid. Sõltuvalt seadme suurusest võib see väli olla võrdne 0 või 1-ga.

s_log_block_size.

Ulong

Loogika ploki suuruse indikaator: 0 \u003d 1 KB; 1 \u003d 2 kb; 2 \u003d 4 kb.

s_log_frag_size.

Pikk.

Fragment suuruse indikaator (tundub, mõiste fragmendi praegu ei kasutata)

s_blocks_per_group.

Ulong

Igas plokkide arv plokkide arv

s_frags_per_group.

Ulong

Iga ploki ploki fragmentide arv

s_inodes_per_group

Ulong

Indekside kirjelduse (inode) arv igas plokkplokis

s_mtime.

Ulong

Aeg, mil failisüsteem oli viimati paigaldatud.

s_wtime.

Ulong

Aeg, mil viimane kord salvestati failisüsteemis

s_mnt_count.

Ushort.

Paigaldusfailisüsteemi arvesti. Kui see loendur jõuab järgmises valdkonnas määratud väärtusele (S_Max_mnt_Mnt_count), tuleb failisüsteem kontrollida (seda tehakse taaskäivitamisel) ja loendur lähtestatakse.

s_max_mnt_count.

Lühike

Number, mis määrab, mitu korda failisüsteemi saab paigaldada

s_magic

Ushort.

"Magic number" (0xEF53), mis näitab, et failisüsteem kuulub ex2F-i tüübile

s_state.

Ushort.

Flags, mis näitavad failisüsteemi praegust olekut (kas see on puhas (puhas) jne)

s_Errors.

Ushort.

Lipud, mis määravad veateatemenetlused (mida teha, kui leitakse vead).

s_pad.

Ushort.

Täitmine

s_LASTCHECK.

Ulong

Viimase failisüsteemi kontrolli aeg

s_checkinterval

Ulong

Maksimaalne ajavahemik failisüsteemi kontrolli vahel

s_creator_os.

Ulong

OS-i tüübi määramine, milles failisüsteem on loodud

s_rev_level.

Ulong

Läbivaatamise taseme failisüsteem.

s_rrerved

Ulong

Täitmine kuni 1024 baiti

Superbloki järgimine asub plokkrühma kirjeldus (grupi kirjeldused). See kirjeldus on massiiv, millel on järgmine struktuur.

Väli nimi

Tüüp

Eesmärk

bG_BLOCK_BITMAP

Ulong

Selle rühma bitikaardi plokkide (plokk bitmap) ploki aadress

bG_INODE_BITMAP

Ulong

Selle rühma indeksi kirjelduste bitse (indeksi bitmap) bitseadi aadress

bg_inode_table

Ulong

Selle rühma indeksi kirjeldajate (indeksi tabeli) tabelit sisaldava ploki aadress

bg_free_blocks_count.

Ushort.

Selle grupi vabade plokkide arvu loendur

bg_free_inodes_count

Ushort.

Selle grupi vabade indeksite kirjelduste arv

bG_USED_DIRS_COUNT

Ushort.

Arv indeksi kirjeldused selles rühmas, mis on kataloogid

bg_pad.

Ushort.

Täitmine

bg_reserveeritud.

Ulong

Täitmine

Ploki ploki kirjelduse suurust arvutatakse kui (suurus_group_blok_v_ext2 * number_grupid) / suurus_block (Vajadusel ümardatud).

Grupi kirjelduses salvestatud teavet kasutatakse plokkide ja indeksi kirjelduste ja indeksi kirjelduse tabelite leidmiseks. Ära unusta, et plokkide plokid ja plokid on nummerdatud 1-st.

Bitikaardiplokk (plokk bitmap) on struktuur, millest igaüks näitab, kas vastav plokk on sellele määratud. Kui bitt on 1, siis plokk on hõivatud. See kaart on otsida tasuta plokkeid juhtudel, kus on vaja esile tuua asukoha all faili, bitmap plokkide hõivab plokkide arv võrdne (Number_block_v_group / 8) / suurus_block (Vajadusel ümardatud).

Indekside kirjeldajate bitikap täidab sarnase funktsiooni indeksi kirjelduste tabeli suhtes: näitab, millised kirjeldused on hõivatud.

Järgmine ploki struktuuri struktuuri piirkonnas on indeksi faili deskriptorite tabeli salvestamine. Indeksi deskriptori struktuuri kaalutakse järgmises punktis.

Noh, lõpuks, ülejäänud koht plokkirühmas eraldatakse salvestada tegelikult faile.

Faili süsteemEXT. 2 iseloomustab:

  • hierarhiline struktuur
  • kokkulepitud töötlemise andmete massiivid,
  • dünaamiline faililaiend,
  • teabe turvalisus failides
  • perifeersete seadmete (nt terminalide ja lindi seadmete) tõlgendamine failidena.

Failide sisemine vaade

Igal ext 2-süsteemis olev failil on ainulaadne indeks. Indeks sisaldab teavet, mis on vajalik toimikule viitamiseks vajalikule protsessile. Protsessid viitavad failidele, kasutades selgelt määratletud süsteemi kõned ja identifitseerivad faili string-fail, mis toimib komposiitfaili nimena. Iga komposiit nimi määrab kindlasti faili, nii et süsteem kernel teisendab selle nime failindeksiks. Indeks sisaldab plaadi failiteabe aadressi asukoha tabelit. Kuna iga plaadi plokk on adresseeritud selle numbrile, salvestab see tabel kettaploki numbrite komplekt. Paindlikkuse suurendamiseks kinnitab kernel faili ühe plokiga, võimaldades faili teavet hajutada kogu failisüsteemi. Kuid see paigutuse skeem raskendab andmete otsinguülesannet. Aadresside tabel sisaldab loetelu blokeerimisnumbritest, mis sisaldavad faili omandis olevat faili, aga lihtsad arvutused näitavad, et indeksi lineaarset loendit indeksis on raske kontrollida. Selleks, et väike indeks struktuur suure failide töötamiseks, kettaploki aadresside tabel viiakse kooskõlla struktuuriga näidatud joonisel 1

Enamik failide ext 2-süsteemis on suurus, mis ei ületa 10 kB ja isegi 1 kb! kettale. Seetõttu vastupidiselt juurdepääsu suurele failidele töötavad standardse suurusega failid kiiresti.

Indeks faili kirjeldused

Iga plaadi fail vastab ühele ja ainult ühele indeksi faili käepidemele, mis on identifitseeritud selle järjestuse numbriga - failiindeks. See tähendab, et failisüsteemis loodud failide arvu piirab indeksi kirjelduse arvuga, mis on failisüsteemi loomisel lihtsalt määratletud või arvutatakse ketta partitsiooni füüsilise mahu alusel. India DescPports olemas kettal staatilises vormis ja kernel loeb neid mälu enne nende alustamist tööle.

Indeksi faili käepide on järgmine struktuur:

Väli nimi

Tüüp

Kirjeldus

I_Mode.

Ushort.

Tüüp ja juurdepääsuõigused selle faili.

I_uid

Ushort.

Failiomaniku identifikaator (omanik UID).

I_size.

Ulong

Faili suurus baitides.

I_atime.

Ulong

Viimase juurdepääsu aeg faili (pääsuaeg).

I_ctume

Ulong

Faili loomise aeg.

I_Mtime.

Ulong

Faili viimase muutmise aeg.

I_dtime

Ulong

Faili kustutamise aeg.

I_gid

Ushort.

Grupi identifikaator (GID).

I_links_count

Ushort.

Suhted loendurid (lingid).

I_blocks.

Ulong

Faili poolt hõivatud plokkide arv.

I_flags.

Ulong

Failide lipud Failide lipud)

I_RERVED1

Ulong

Reserveeritud operatsioonisüsteemidele.

I_block

Ulong

Viired blokeeridesse, kus failiandmed salvestatakse (joonisel fig 1 kujutatud otsese ja kaudse tegemise näide)

I_version.

Ulong

Failiversioon (NFS jaoks)

I_file_acl

Ulong

ACL-fail.

I_DIR_ACL

Ulong

ACL-kataloog

I_faddr.

Ulong

Fragment Aadress (fragment-aadress)

I_frag

HOCHA.

Fragmendi number (fragmendi number)

I_fsize.

HOCHA.

Fragmendi suurus (fragmendi suurus)

I_pad1

Ushort.

Täitmine

I_Rerved2.

Ulong

Reserveeritud

Faili tüüp ja juurdepääsuõigused on kahe baidise sõna, millest igaüks toimib lipu all, mis näitab faili suhet konkreetsele failile konkreetsele tüübile või paigaldamisele.

Identifikaator

Väärtus

Ametisse nimetamise lipp (väljad)

S_ifmt.

F000.

Faili tüüp mask

S_IFSOCK.

A000.

Domeeni pesa (pesa)

S_iflnk.

C000

S_ifreg.

8000

Normaalne (tavaline) fail

S_ifblk.

6000

Block-orienteeritud seade

S_ifdir.

4000

Kataloog

S_ifchr

2000

Bayte orienteeritud (sümboolne) seade

S_IFIFO.

1000

Nimega kanal (FIFO)

S_isuid

0800

Suid - bitt Shift omanik

S_isgid

0400

SGID - GROUP SHIFT BITS

S_isvtx

0200

Task Conservation Bit (kleepuv bitt)

S_irwxu.

01c0.

Faili omaniku õiguste mask

S_Irusr.

0100

Õigus lugeda

S_iwusr.

0080

Õigus kirjutada

S_ixusr.

0040

Õigus täita

S_irwxg.

0038

Grupi maskirühm

S_irgrp.

0020

Õigus lugeda

S_IWGRP.

0010

Õigus kirjutada

S_IXGRP.

0008

Õigus täita

S_irwxo.

0007

Mask teiste kasutajate õiguste

S_iroth

0004

Õigus lugeda

S_iwoth

0002

Õigus kirjutada

S_ixoth

0001

Õigus täita

Indekside kirjelduste hulgas on mitmeid kirjeldusi, mis on reserveeritud erilistel eesmärkidel ja mängivad failisüsteemis erilist rolli. Need on järgmised kirjeldused

Identifikaator

Väärtus

Kirjeldus

Ext2_bad_ino.

Indeksi deskriptor, kus defektsete plokkide aadressid kettal on loetletud (halb plokkide inode)

Ext2_root_ino

Failisüsteemi juurikataloogi indeksi deskriptor (root-inode)

Ext2_Acl_idx_ino.

ACL Inode

Ext2_Acl_Data_ino

ACL Inode

Ext2_boot_loader_ino.

Loaderindeksi deskriptor (boot loader inode)

Ext2_undel_dir_ino.

Ei ole võimalik kataloogi inode.

Ext2_first_ino.

Esimene mittepro-indeksi deskriptor

Selle nimekirja kõige olulisem käepide on juurkataloogi deskriptor. See deskriptor viitab juurkataloogile, mis nagu kõik kataloogid koosnevad järgmiste struktuuri dokumentidest:

Väli nimi

Tüüp

Kirjeldus

Anuma

Ulong

faili indeksi deskriptor number (indeks)

rec_len.

Ushort.

Selle dokumendi pikkus

name_len.

Ushort.

Faili nimi pikkus

Nimi.

Char.

Faili nimi

Kataloogi eraldi kirje ei saa ületada plokipiiri (see tähendab, et see peaks asuma täielikult ühe ploki sees). Seega, kui järgmine kanne selles plokis täielikult ei sobi, kantakse see üle järgmisele plokile ja eelmise kirje jätkub nii, et see täidab ploki lõpuni.

Joonis 1 indeksis otsese ja kaudse suunamise plokid

Joonis 2 Faili maht baitide ploki suurusega 1 Kb

Joonis 3. Kettaindeksi näide

Joonisel fig 3 on kujutatud teatud faili kettaindeks. See indeks kuulub tavalisesse faili, mille omanik on "MJB" ja mille suurus on 6030 baiti. Süsteem võimaldab kasutaja "MJB" lugeda, kirjutada ja käivitada faili; Liikmed "OS" grupi ja kõik teised kasutajad on lubatud ainult lugeda või teostada faili, kuid mitte salvestada andmeid arvesse. Viimane kord, kui faili lugeda 23. oktoobril 1984 kell 13.45, oli rekord viimane kord 12. oktoobril 1984 kell 10.30. Indeks muutis viimast korda 23. oktoobril 1984 kell 13.30, kuigi praegu mingit teavet ei salvestata. Kernel kodeerib kõiki ülaltoodud andmeid indeksis. Pöörake tähelepanu indeksi sisu ja faili sisu dokumendi erinevusele. Faili sisu muutub ainult siis, kui fail salvestatakse. Indeksi sisu muutub toimiku sisu muutmisel nii faili sisu muutmisel kui ka faili omaniku, juurdepääsuõiguste ja osuti komplekti muutmisel. Faili sisu muutmine põhjustab automaatselt indeksi korrigeerimise, kuid indeksi korrigeerimine ei tähenda faili sisu muutmist.

Kataloogid

Kataloogid on failid, millest ehitatakse failisüsteemi hierarhiline struktuur; Neil on oluline roll faili nime muutmisel indeksi numbrile. Kataloog on fail, mis sisaldab dokumente, mis koosneb indeksi numbri ja kataloogi kaasas oleva faili nimi. Komposiit nimi on sümbolite string, mis on lõpetatud tühja sümboliga ja kaldu liiniga jagatud ("/") mitmeks osaks. Iga komponent peab lisaks viimasele olema kataloogi nimi, kuid viimane komponent võib olla fail, mis ei ole kataloog. Unixi süsteemi V-versioonis on iga komponendi pikkus piiratud 14 tähemärgiga; Seega koos 2 baiti, eraldatud indeksi number, salvestamise suurus kataloogi on 16 baiti.

Nihutada baitides
Toas Kataloog

Indeksi number
(2 bait)

Nimetusfaili

1798

selles

1276

fSCK.

clri

1268

motd.

1799

kinnitus

mknod.

2114

passwd.

1717

umount.

1851

kontrollnimekiri.

fsdbld

konfiguratsioon

1432

getty.

krahhi.

mKFs.

Joonis 4 Kataloogi formaat / jne

Joonisel fig 4 on kujutatud "ETC" vormingut. Iga kataloogil on failid, mille nimed on näidatud punkt ja kaks punkti ("." Ja "..") ja indeksinumbrid, mis vastavad vastavalt selle kataloogi ja vanemakataloogi indeksi numbritele. Faili indeksi number "." "/ Etc" kataloogil on aadress kompenseeritud 0 ja väärtusega 83. Faili indeksi number ".." on kataloogi algusest väljakuga 16-ga aadress. Kataloogi kanded võivad olla tühjad Ja indeksi number on 0. Näiteks salvestamise aadress 224 "/ jne" kataloogi on tühi, hoolimata asjaolust, et ta üks kord sisaldas sisenemispunkti faili nimega "Crash". MKFS programm alustab failisüsteemi nii, et failide indeksinumbrid ". Ja ".." juurekataloog langeb kokku failisüsteemi juurindeksi numbriga.

Kernel salvestab kataloogi andmeid samamoodi nagu tavalises tüüpi failis, kasutades indeksi struktuuri ja plokke otsese ja kaudse tegemise tasemega. Protsessid saavad lugeda kataloogide andmeid samamoodi nagu nad loevad regulaarseid faile, kuid eksklusiivne sisenemise õigus kataloogile on reserveeritud tuum, mis tagab kataloogi struktuuri õigsuse. Kataloogi juurdepääsuõigused on järgmine tähendus: lugemisõigus annab protsessidele võimaluse kataloogi andmeid lugeda; Salvestusõigus võimaldab protsessi luua kataloogi uusi kirjeid või kustutada vana (kasutades CREAT, MKNOD, LINK ja UNSING System Operations), mille tulemusena sisu kataloogi muutused; Teostamisõigus võimaldab protsessi otsida kataloogi faili nimi (kuna "täitmise" kataloog on mõttetu).

Kui mõni programm kasutab tee faili, vastava Nomip indeksi Descip sisaldab kataloogides. Pärast faili nime kasutati indeksi deskripti number, see descippot paigutatakse mällu ja seejärel kasutatakse järgneva Zap.

UNIX-failisüsteemide mõiste hõlmab viide mõistet. Üks indeks descipboard saab seostada mitu failinime. DeskPott abistab väli, hinener, millega failikaubandused. Lingi lisamine on luua kataloogi kirje, kus indeks descippet number näitab DiskPot ja suurendada võrdlusloendur DescPort. Sa peaksid kustutama lingid mürk vähendab võrdlusloendurit ja kustutab Desqpot, kui see arvesti muutub nulliks.

Selliseid linke nimetatakse jäigaks ja neid saab kasutada ainult ühes failisüsteemis (te ei saa luua linki FLIP-failisüsteemist failisüsteemi jaoks). Lisaks saab jäiga link määrata ainult faili (range viide kataloogile saab kasutada failisüsteemis keskenduda).

Enamikus UNIX-süsteemides on veel üks lingi tüüp. Need lingid, mis edendavad ainult faili nime nimetatakse sümboolseks. Te kasutate selliste linkide vaesemat halvemat, kasutades selleks faili teele indeksisse descipboard'i failile asendab mürk nime viide laskuskava tarkvarale (st sihtkoha faili nimel) ja uuesti INTPPS tee faili. Kuna sümboolne link ei näita indeksi Desqpot, on võimalik luua linke failidele, mis asuvad desinfitseerimata failisüsteemis. Need lingid võivad viidata mis tahes tüüpi toimikule isegi olematu. Sümboolseid linke kasutatakse nii, kuna neil ei ole neid tulekahjusid, millel on kõva link. Kuid nad hõivata mõned mahu kettal, kus indeks descipboard ja andmeplokid on lubatud. Nende kasutamist saab kasutada heakskiiduga seotud viisidele, kuidas kasutada faili tee indeksi descipoboardile, mis on tingitud asjaolust, et mürgiste sümboolsete linkide sümboliseerimine peaks failile tee uuesti sisendama.

Failide seadmed

Unix-tüüpi operatsioonisüsteemides toimub spetsiaalsete failide kaudu juurdepääs seadmetele. See fail ei toimu failisüsteemis. See on ainult pöörduspunkt seadme draivi.

Seadmete failid on kahte tüüpi: sümboolne ja plokk. Sümboolse tüübi kasutamisel on võimalik seadmega andmeid vahetada ainult märkimisrežiimis, samas kui ploki tüüpi seadmete failid võimaldavad teil vahetada ainult puhvri abil plokke. I / O taotluse esitamisel seadmefailile suunatakse see päring vastava seadme juhile. Iga sarnane fail vastab vanemnumbrile, mis määratleb seadme tüübi ja noorema ruumi, mis määrab seadme ise.

Lisafunktsioonid ext2fs.

Lisaks UNIXile, Ext2fs Standfunktsioonidele on mõned täiendavad funktsioonid, mida UNIX-failisüsteemid tavaliselt ei esitata.

Fail ATPIBUTS võimaldab teil muuta Polari pressimist failide abil failide abil. Faili või kataloogi saate installida. Teisel juhul pärinevad selle kataloogi loodud failid neid ateques.

Süsteemi monteerimise käigus saab paigaldada mõningaid konkreetseid faili atequotidega seotud funktsioone. Mount valik võimaldab manustamise valida funktsioone luua faile. Failisüsteemis BSD funktsioonidega luuakse failid sama tunnus GPPP-ga, samuti korteri kataloogi. Omadused Süsteem V on mõnevõrra keerulisem. Kui seadistuskataloog on seatud, saadetakse selle kataloogi GPP-de identifikaatoriga loodud failid ja subdirektiivide pärivad GPPP ja seastubide identifitseeringud. Käesoleval juhul luuakse failid ja kataloogid põhjustava ppcress'i GPPP põhiedektsiooniga.

EXT2FS-süsteem võib kasutada sünkroonse andmemodifikatsiooni sarnane BSD-süsteemiga. Mount valik võimaldab administreerimisel määrata kõik andmed (indeks descplcplists, bitid, kaudsed plokid ja kataloogiplokid), mis on salvestatud DC sünkroonselt nende modifikatsioonidesse. Seda saab kasutada kõrgete teabevahendite saavutamiseks, kuid võtab ka preesterluse halvenemise. Tegelikult ei kasutata seda funktsiooni tavaliselt, kuna leviku halvenemine võib kasutada kasutajate higi kasutajatele, mis ei ole failisüsteemi abil märgistatud.

EXT2FS võimaldab teil luua failisüsteemi loogilise ploki valimiseks. See võib olla Pazmer 1024, 2048 või 4096 baiti. Suure mahuplokkide kasutamine I / O Optieringu jaoks (kuna sucks'i kogus kettale väheneb) ja seetõttu väiksema päise poole. Blokeeri teisel poolel on suurte plokkide kasutamine kettapensioni valikule. Tavaliselt kasutatakse faili viimast plokki täielikult teabe valdkonnas, seetõttu suureneb ploki mahu suurenemine, tepedi ketta löögi maht.

Ext2fs võimaldab teil kasutada OSKED sümboolseid linke. Selliste linkide kasutamine ei kasutata blokeerida andmeplokke. Sihtfaili nimi ei ole andmeplokis, vaid indeksis laiusi laskuplaat. Selline struktuur võimaldab teil säilitada kettapunkti ja aurustada sümboolsete linkide skotch. Loomulikult on olemas torustik, laskuviku all, flaky all, nii et mitte iga link võib olla Hersaliga. Teisese lingi maksimaalne pikkus on 60 tähemärki. Lähitulevikus on plaanis peatada see skeem väikese helitugevuse failide jaoks.

EXT2Fs järgib failisüsteemi seisundit. Kehv kasutab suspensiooni eraldi välja, et näidata failisüsteemi olekut. Kui failisüsteem on paigaldatud lugemis- / kirjutusse, on selle riik paigaldatud kui "ei ole puhas". Kui see demonteeritakse või paigaldatakse uuesti lugemis-ainult naudingusse, on selle seisund paigaldatud "puhtaks". Kui süsteemi süsteem ja failisüsteem on käimas, kasutatakse seda teavet failisüsteemi vajalikkuse kasutamiseks. Kehv asetab selles valdkonnas mõningaid vallatuid vigu. Avatud mittevastavuse mürk, failisüsteem on tähistatud kui "ekslik". Failisüsteemi simulaator katsetab seda teavet süsteemi süsteemi jaoks, isegi kui selle seisund on tegelikult "puhas".

Pikaajaline ignoreerides failisüsteemi testimine Mõnikord võib mõnikord olla mõne piisavusega, nii et ext2fs sisaldab regulatiivse süsteemi kahte meetodeid. Spearlock edendab süsteemi kinnitusloendur. See loendur suurendab iga PA-d, kui süsteem on paigaldatud lugemis- / kirjutamisfunktsioonis. Kui selle väärtus jõuab maksimaalseks (see on ka suspensioonis peetud), käivitatakse failisüsteemi testimine kassasse, isegi kui selle seisund on "puhas". Viimane, esimene kord ja maksimaalne intelligentne esimene intelligentne on ka suspensioonis. Kui maksimaalne luure on saavutatud roosade vahel, on failisüsteemi olek ignoreeri ja kontrollpunkti käivitatakse.

EXT2FS-süsteemi toetatakse selle praegust. Tune2fs Bramma saab muuta:

  • tegevus Pri viga lahtipakkimine. Avatud mittevastavuse mürgiga, failisüsteem on tähistatud kui "ekslik" ja üks järgmistest sammudest saab teha: täitmise rakendamine, failisüsteemi värskendus failisüsteemi värskendus, et vältida selle vältimist Sidumine, süsteemi otsingusüsteem failisüsteemi jaoks.
  • maksimaalne kinnitatud väärtus.
  • maksimaalne intelligentsus tihvtide vahel.
  • logical plokkide arv, mis juhib juurkasutajat.

Paigaldatud valikuvõimalusi saab kasutada ka vigade mürki kohustuse tegevuse muutmiseks.

ATPIBUTi kasutamine võimaldab kasutajatel kustutada järjestikuseid faile. Samasuguse faili saate kustutada selle faili kasutamiseks kasutatud plokkides, salvestatakse juhusliku info abil. Seda edendatakse, et pääseda juurde selle faili esimesele voldile ja ketta dial abi.

Hiljuti lisatud 4,4 BSD failisüsteemist hiljuti lisatud uusi faile. Tüüp-tüüpi faile saab kasutada ainult lugemiseks: keegi ei pea neid muutma ega neid kustutama. Seda saab kasutada oluliste konfiguratsioonifailide kaitsmiseks. Failide tüüp failid, need on failid, mida saab salvestada salvestamise funktsioone ja andmeid saab lisada ainult selle faili lõppu. Seda tüüpi faile saab eemaldada või püsivalt eemaldada. Neid saab kasutada Zeperi failidena, mis võivad suurendada ainult mahtu.

Privaatsuse optimeerimine

EXT2FS-süsteemi hõlbustab palju funktsioone, mis optimeerivad selle profiili, mis toob kaasa teabe vahetamise ja failide kirjutamise teabe vahetamise ulatuse suurendamise.

Ext2fs kasutab aktiivselt kettapuhvrit. Kui seade peab lugema, kuvab mürk I / o valiku / väljundi läbipaistmatu. Seega on vaesemad katsed veenduda, et järgmine plokk, mida tuleks lugeda, on juba kettapuhvri eest vastutav. Sellised tööruumi teostatakse tavaliselt seeria lugemisfailide abil.

EXT2FS-süsteem pakub ka suure hulga teabe optimeerimist. Plokid kasutatakse vastavate indeks descippets ja andmeplokkide ühendamiseks. Mürk alati püüab pigistada ühe faili andmeplokid ühes GPUP-s, samuti selle Desqpot. Seda rakendatakse, et vähendada päisepeade ja deskripti lugemise ja vastavate andmeplokkide menetluse vähendamist.

Need andmed faili andmed, Ext2fs tugevdab kuni 8 külgnevat plokki kasutades uut plokki. Selline meetod võimaldab saavutada süsteemi tugevuste kõrget kohtumenetlust. Samuti võimaldab see kasutada failide külgnevaid plokke, mis sobib nende järgneva lugemisega.

Raamatukogu ext2fs.

EXT2FSi kahjurite kasutamise ja selle failisüsteemi kontaktide stroitside kasutamise kasutamiseks on LiBext2FS raamatukogu olnud lihtne. See raamatukogu pakub funktsioone, mida saab kasutada nende ext2-failisüsteemi kasutamiseks ja muutmiseks, viidates füüsiliselt kõrvaldamisele.

Enamik ext2fs kommunaalteenuste (MKE2FS, E2FSCK, Tune2fs, DEMBER2FS, Debugfs ja DP.) Kasutage seda raamatukogu. See täiendab tugevalt nende kommunaalteenuste muutmist, kuna kõik muudatused täiendavate funktsioonide kehtestamiseks EXT2F-failisüsteemile peaks olema üksi ainult extra2Fs raamatukogus.

Kuna EXT2FS Interneti-raamatukogu on piisavalt Shiyky ja abiaine, saab seda kergesti kirjutada oma abiga, mis on kergesti kirjutatud, mille töö saab kasutada failisüsteemi. Rakenda, Ext2fs raamatukogu kasutas 4,4 BSD prügila ja mõned kommunaalteenused. Nende kasutusviiside kohandamiseks tapeti väga vähe muudatusi Linuxile (see oli vaja asendada mitmeid funktsioone, mis suhtlevad failisüsteemiga, et helistada extra2F-i raamatukogule).

EXT2FS raamatukogu sisaldab juurdepääsu mitme klassi tegevusele. Puberteedi klass on failisüsteemiga seotud läbipaistmatu. Iga šampoam saab avada või vahetada failisüsteemi, lugeda või kirjutada bittiploki, luua kettale uus failisüsteem. On ka funktsioone nimekirja halbade plokkide plokkide.

Läbipaistmatu teine \u200b\u200bklass Kasutab katalooge. Propamma ext2F-i raamatukogu kasutamine võib kataloogi luua või skaari, samuti kataloogi lisada või kustutada. On funktsioneerib propellendid indeks desciping tee faili ja tee tee faili vastavalt määratud descip.

Viimane läbipaistmatu klass avaneb descesces indeksi abil. DescPPort tabelit on võimalik lugeda või kirjutada Descpotp alla, vaadeldakse kõiki määratud Desqpot'i plokke. Blokide ja DescPports'i moodustamise ja vabastamise funktsioonid on võimalik jätkata.

EXT2FS süsteemi osa

EXT2FS süsteemi jaoks kasutati täiendava kasutamise võimas kasutamist. Neid kasutusviise kasutatakse selleks, et luua, muuta ja coppe tahes vastuolusid ext2Fs failisüsteemides. MKE2FS programmi kasutatakse paigaldamiseks kettapasta, mis annab tühja ext2fs failisüsteemi.

TUNE2FS-i rakendust saab kasutada failisüsteemi PAPALMETi võimsusel. Cc See võib muuta muutuvatele vigadeks, maksimaalse süsteemi paigaldamise maksimaalse arvu, mis on ette nähtud süsteemi edenemise ja loogiliste plokkide arvu vahel juurkasutaja.

Võib-olla on kõige intelligentsem kasutamine lihtsustatud failisüsteem. E2FSCK Praced täiendada failisüsteemi vastuolusid pärast kogu süsteemi kättesaamise infossenti. E2FSCK Propamma esialgne versioon põhineb Minix-failisüsteemi Linus Torvald FSCK-failil. Kuid praegused versioonid kergse perioodi kasutades ext2Fs raamatukogu ja on kiiremat ja saab teostada ainult suuremas arvus vigade valdkonnas oma uurimise vastavalt preparaadiga preparaadiga VEXA.

E2FSCK häbi uuriti sellisel ajal nii, et see viidi läbi maksimaalse kiirusega. Kuna failisüsteemi torkid kutsutakse ketta peapaelale, peaksite selliseid E2FSCK vilkuvaid algoritme optimeerima, et failisüsteemi protseduuri tuleks kasutada palju lihtsamaks. Ja lisaks tehakse indeksi descptide ja kataloogide tahtlus läbi vastavalt ploki numbrile, et vähendada kettaseadme pead.

E2Fscki purunemisel avaneb failisüsteem kõik descipients ja üks desciputs süsteemi eraldi elemendina. Selline kord, need testimine ei sobi failisüsteemi objektidega. Üks selliste tihvtide eesmärke on failitüübi tüübi olemasolu sisend, samuti kõigi plokkide vastavus DescPepp-plokkidega olemasolevate numbritega plokkidega. Lülitusseadmes on bitid töötavad, mis näitavad plokkide ja descpllaste kasutamist.

Kui E2FSCK leiab andmeplokid, kogutakse nomsid, millest kogutakse rohkem kui ühes descipis.

Lähim Pepping võtab suurema osa sellest, sest kõik indeks descippets tuleb lugeda mällu ja lahutamatuks. Vähendada sisend- / väljund kesta järgnevates kehades, kõik vajalikud info liikumine jääb puhvrisse. Selle skeemi õnnestus on otsida kõik failisüsteemi kataloogi plokid. Selle teabe saamiseks loetakse kõigi failisüsteemi kataloogide järjestused teises reisides.

Teises trimmites kirjutavad kataloogid failisüsteemi individuaalseteks elementideks. Iga kataloogi plokk on eraldi, ilma DPUCH kataloogiplokkideta. See võimaldab E2FSCK-l katkestada kõik kataloogide plokid plokkide arvule ja nendega kokkupuutel töökorras, nii aega vähendades juurdepääsu kettale. Kataloogiplokke testitakse nende dokumentide tegelikkuse vastavuse ja et nad aitavad kaasa viiteid olemasoleva numbriga desicputsile (kuna see oli sisse lülitatud purunemisega).

Kataloogiploki jaoks iga kataloogi ajakava puhul eksisteeritakse kannete olemasolu. ". ja ".." ja et Descppet'i number on salvestamiseks. " Vastab praegusele kataloogile. (Reguleerimisnumber salvestamiseks ".." ei testita enne, kui pöördub.)

Teise Phode sooritamisel salvestatakse korteri kataloogi vastav info liikumine puhvris.

Tuleb märkida, et teise PCHODA lõpuks kaetakse peaaegu kõik plaadiga sisend- / väljundkoopiad. Kõik infoliikumine, mis püüab tuhandeid neljandat ja viiendat reisi, edendatakse siiski mällu, kuid ülejäänud ppssoopi jäävad kaevandused ja võtta vähem kui 5-10% kogu E2FSCK täitmisest.

Kataloogiühendused sisalduvad sees. E2FSCK teeb iga kataloogi teed voodisse juua, kasutades teisel Phoodi saadud teavet. Siin on iga kataloogi jaoks rekord "..". Kõik kataloogid tuvastati pärast esimest ja mitte ühendused paigutatakse / kaotatud + leitud kataloogi.

Neljandas, E2FSCK-reisidest, sisaldab iga indeksi Descip võrdlusloendurid kõik DescPports ja peegeldavad viitemõõtureid (seda teavet peegeldavad ristlõikest) sisemõõturitega, mis arvutati Sub-sekund ja trunid. Kõik ebaõnnestunud failid koos null viitemõõturiga paigutatakse ka / kaotatud + leitud kataloogi.

Ja lõpuks viies, E2Fsck on kirjavahetus kogu teabeteabe faili süsteemi. Siin on bitti plokkide ja descplings, mis saadi esimese viisakad tükki, kehtivate väärtuste ja vajadusel ketta informatsiooni kettal tekib.

Kasutage failisüsteemi Silugeri kasulikku kasutamist. Debugfs on võimas edevus, mis võimaldab teil laskuda ja määrata failisüsteemi olek. Sisuliselt on see interaktiivne internet EXT2FS raamatukogule, st tüüpilised käsud raamatukogu funktsioonide helistamiseks.

Debugfs saab kasutada sisemise failisüsteemi ranguse juhtimiseks, jättes taastamise süsteemi või luua tingimuslikke katseid E2FSCK. Kahjuks saab see Jammy võita failisüsteemi, kui te ei tea, kuidas seda kasutada. Selle jõuga piisab failisüsteemi hävitamiseks. Seetõttu muudab Debugfs failisüsteemi vaikimisi lugemispositsiooni. Juurdepääs lugemis- / kirjutamise ümbrikule tuleks määrata -w valiku.

Privaatsuse arvutamine

Bonnie testitulemused on nähtavad järgmises tabelis:

Suhkru salvestamine (CB / S)

Patch kirje (CB / S)

Performance (KB / s)

Suhkru lugemine (CB / S)

Piece Reading (KB / s)

BSD Async.

BSD sünkroonimine.

Ext2 fs.

1237

1033

Xia FS.

Tulemused on piisavalt tuttavad plokkide sisendi / väljundiga: EXT2FS-süsteem võitis võrdlussüsteemis. See on tingitud PA ligikaarse optimeerimise tõttu. Sissepääs on ka piisavalt kiire, vastavalt asjaolule, et see on Gupiene Puremi kutsikate. Kõrge lugemise kiirus on seotud asjaoluga, et plokid tõmmati faili, nii et pealkirjapead ei teostata kahe lugemise ja esimese lugemise optimeerimise vahel täielikult.

Külgse teise poolega sisaldab FreeBSD süsteem ülaltoodud kontrollväärtuse sümboolset sisendit / väljundit. Võib-olla see on tingitud asjaolust, et FreeBSD ja Linux kasutavad vastava C-raamatukogude raamatukogudega sobivaid raamatukogusid. Lisaks FreeBSD, seda optimeeritud sümboolse lugemise raamatukogu ja seetõttu on siin natuke parem.

Testitulemused Andrew.

Andrew testitulemused on nähtavad järgmises tabelis:

Paavsti 1 loomine

Sanitaartehnilised kopeerimine

Sanitaartehnilised 3. staatus

Sanitaartehnilised 4 baptiit

Torulukksepp 5 koostamine

2203

7391

6319

17466

75314

BSD sünkroonimine.

2330

7732

6317

17499

75681

Ext2 fs.

Viimase kahe kaevandi tulemused näitavad, et Linux võidab asünkroonliku andmevahetuse. Te loote katalooge ja faile, BSD-süsteem registreerib DescPPortsi ja kataloogide dokumente. On kõne, et FreeBSD-i asynchpone subdepending ei ole veel täielikult rakendatud.

Linuxi väärtuse austusavaldus ja BSD on väga sarnased. Kuigi BSD-d on ülalkirjeldatud, on sellele tüübile määratud failinimede lisamine failinimede lisamine.

Viiendas ja viies PPOds on Linux kiiresti FreeBSD, peamiselt kombineeritud kimpude kasutamisel. Puhvri maht võib võtta rohkem mälu ja võtta rohkem mälu kui FreeBSD-s, kus kasutatakse fikseeritud mahtu. EXT2FSi ja XIA FS vastuste tulemused näitavad, et ext2fs'is tekkinud optimeerimine on tõepoolest kasutatud: nende süsteemide toimepanija on umbes 5-10%.

Järeldus

EXT2-failisüsteem on Linuxi kasutajate puhul kõige enam vahetult kasutatud. Ta pakub UNIX standard funktsioone ja täiendavaid funktsioone. Veelgi enam, tänu optimeerimine kaasatud mürki, see näitab suurepäraseid vastuse tulemusi.

EXT2FS-süsteem sisaldab funktsioone uute funktsioonide lisamiseks. Mõned inimesed hoolitsevad tegeliku failisüsteemi PAS-i kasutamise eest: Access Control'i loend, vastav POSIXi standard, remodi failide taastamine ja failide tihendamine pikaajalises elukohas.

Esiteks integreeriti EXT2FS-süsteem Linuxi mürki ja liigub aktiivselt operatsioonisüsteemide käitamisel. EXT2FS on ka MASIXi operatsioonisüsteemi oluline osa, mida praegu uuritakse ühe autopsi poolt.