Vrste Linux datotečnih sistema i njihovih značajki. Datoteka i razbijanje datotečnog sistema Ext2 File System Ext2 3

Sada opisamo najpopularniji disk sistem diskova Linux - ext2. Prvo izdanje Linuxa koristilo je MINIX 1 datotečni sistem, koji je imao kratka imena datoteka i maksimalnu veličinu datoteke 64 MB. Datotečni sistem Minix 1 na kraju je zamijenjen prvim proširenim Ext datotečnim sustavom, koji je omogućio korištenje duže imena datoteka i veće veličine datoteka. Zbog male efikasnosti (u smislu performansi), EXT sustav zamijenjen je svojim Ext2 sekvencom, koji se i dalje široko koristi.

Particija diska sa Ext2 sadrži datotečni sistem s prikazom na slici. 10.17 Izgled. Blok 0 ne koristi linux sistem i sadrži šifru opterećenja računara. Nakon bloka 0, particija diska podijeljena je u blokove blokova (isključujući granice cilindara diska). Svaka grupa organizirana je na sljedeći način.


Prvi blok je superblok (superblok), koji pohranjuje informacije o izgledu datotečnog sustava, uključujući broj I-čvorova, broj blokova diska, početak liste slobodnih diskovnih blokova (ovo je obično nekoliko stotina elemenata ). Zatim slijedi grupni deskriptor koji sadrži informacije o lokaciji bitnih nizova, broj slobodnih blokova i i-čvorova u grupi, kao i broj direktorija u grupi. Ove su informacije važne, jer ext2 datotečni sustav pokušava ravnomjerno distribuirati direktorije u cijelom disku.

U dva bitna nizova, zabilježeni su besplatni blokovi i besplatni i-čvorovi (to se također naslijeđuje iz datotečnog sustava Minix 1 i razlikuje ga od većine UNIX datotečnih sustava u kojima se popis koristi za besplatne blokove). Veličina svakog bitnog niza jednaka je jednom bloku. Pomoću veličine bloka 1 KB, ova šema ograničava veličinu blokova blokova 8192 blokova i 8192 i-čvorova. Prvi broj je stvarno ograničenje, a druga je praktično br. Sa blokovima od 4 KB brojeva četiri puta više.

Tada se nalaze i-čvorovi sami. Oni su numerirani od 1 do nekih maksimuma. Veličina svakog I-čvora je 128 bajtova i opisuje je tačno jednu datoteku. I-čvor sadrži podatke o računu (uključujući cijeli povratni poziv koji ga jednostavno uzima iz I-čvora), kao i dovoljnu količinu informacija kako bi se utvrdila lokacija svih blokova diska koji sadrže podatke za datoteke.

Nakon i-čvorova su blokovi podataka. Sve datoteke i direktoriji su ovdje pohranjeni. Ako se datoteka ili direktorij sastoji od više bloka, tada ovi blokovi nisu potrebni za kontinuirani na disku. U stvari, blokovi velike datoteke najvjerovatnije su raštrkani u cijelom disku.

Odgovarajuće kataloge i-čvorovi razbacani su nad svim grupama diskovnih blokova. Ext2 pokušava organizirati obične datoteke u istom bloku blokova kao matični direktorij, a datoteke podataka su u istom bloku kao i izvorni kod I-čvor (pod uvjetom da postoji dovoljno prostora). Ova ideja posuđena je iz BERKELEY FAST File System sistem (McKusick i sur., 1984). Bit niz se koriste za brze odluke u vezi s izborom

mjesta za nove podatke o datotečnom sustavu.

Kada se istaknu novi blokovi datoteka, ext2 takođe čini preventivni izbor (pregledi) od nekoliko (osam) dodatnih blokova za istu datoteku (da bi se umanjila fragmentacija datoteka zbog budućih evidencija). Ova šema distribuira sistem datoteka na disku. Takođe ima dobre performanse (zbog njegovog trenda prema povezanoj lokaciji i smanjenu fragmentaciju).

Da biste pristupili datoteci, prvo morate koristiti jedan od linux sistemskih poziva (poput otvorenog) za koji želite odrediti put do datoteke. Taj se put rastavljen, a komponente njegovih kataloga izvlače se iz njega. Ako je navedena relativna staza, pretraga započinje iz trenutnog kataloga procesa, u suprotnom - iz korijenskog direktorija. U svakom slučaju, I-čvor za prvi direktorij je jednostavan za pronalaženje: u deskriptoru procesa postoji pokazivač na njega ili (u slučaju korijenskog direktorija) pohranjen je u određenom disku na disku.

Imenik vam omogućava da koristite imena datoteka do 255 znakova (Sl. 10.18). Svaki direktorij sastoji se od određenog broja diskovnih blokova (tako da se direktorij može napisati na disk atomino). U imeniku su elementi za datoteke i direktorijune na narudžbi (svaka stavka direktno slijedi prethodnu). Elementi ne mogu preći granice blokova, pa na kraju svakog bloka diska obično postoji niz neiskorištenih bajtova.


Svaki unos direktorija na Sl. 10.18 sastoji se od četiri polja fiksne dužine i jedno polje promjenjive dužine. Prvo polje je I-čvor broj 19 za kolosalnu datoteku, 42 za voluminoznu i 88 datoteku za Bigdir direktorij. Slijedi polje REC_LEN, što izvještava veličinu cjelokupnog unosa direktorija u bajtovima (moguće, zajedno s dodatnim rezervima na ime). Ovo polje je potrebno pronaći sljedeći unos (u slučaju kada se ime datoteke nadopunjuje nepoznatim brojem bajtova). Na slici je ovo polje označeno strelicom. Zatim postoji polje tipa polja, direktorij, itd. Posljednje polje fiksne dužine sadrži dužinu naziva datoteke u bajtovima (8, 10 i 6 za ovaj primjer). Konačno, naziv datoteke dolazi u samom nulti bajtu i dopunjeno na 32-bitnu granicu. Dodatni bajtovi poštanskih sandučića mogu pratiti.

Na slici. 10.18, B je prikazan isti direktorij nakon što je element za voluminozni uklonjen. Sve što se radi u katalogu - povećava broj u veličini snimanja prethodne kolosalne datoteke, a bajtovi unosa direktorija za daljinsku voluminoznu datoteku pretvaraju se u prve zapise. Nakon toga ovi bajti mogu se koristiti za snimanje prilikom kreiranja nove datoteke.

Budući da se pretraga u direktorijama vrši linearno, zatim potraga za zapisom koji je na kraju velikog direktorija može dugo trajati. Stoga sustav podržava direktorije predmemorije na koji je nedavno izrađen pristup. Pretraživanje u predmemoriji izrađuje se imenom datoteke, a ako se nađe, tada skupa linearna pretraga više nije potrebna. Dentry objekt upisuje se u predmemoriju elemenata direktorija za svaku od komponenti puta, a (putem svog I-čvora) traži u direktoriju naknadne stavke puta (dok se ne nalazi stvarna datoteka I-čvor).

Na primjer, da biste pronašli datoteku navedenu apsolutnom stazom (poput / usr / ast / datoteke), moraju se izvesti sljedeći koraci. Prije svega, sustav nalazi korijenski direktorij, koji obično koristi i-čvor sa brojem 2 (posebno kada je i-čvor sa brojem 1 rezerviran za rad sa lošim blokovima). Odgovarajući element stavlja u predmemoriju stavki direktorija (za buduće pretrage kataloga korijena). Zatim traži "USR" niz u korijenskom direktoriju da biste dobili broj I-čvora za / USR direktorij (koji se takođe unosi u predmemoriju elemenata direktorija). Tada se ovaj i-čvor čita, a iz njega se preuzimaju disk, tako da možete pročitati / USR direktorij i potražiti AST liniju u njemu. Nakon pronalaska odgovarajućeg elementa, možete definirati broj I-čvora za / USR / AST. Imajući ovaj broj I-čvora, možete ga pročitati i pronaći blokove direktorija. Konačno, tražimo "datoteku" i pronalazimo broj njegovog i-čvora. Dakle, upotreba relativne staze nije samo pogodnije za korisnika, već smanjuje i količinu rada za sustav.

Ako je datoteka dostupna, sustav dohvaća broj I-čvora i koristi ga kao indeks tablice I-čvorova (na disku) za pretraživanje odgovarajućeg I-čvora i čitati ga u memoriju. Ovaj I-čvor nalazi se u tablici I-čvorova (tablica I-čvora) - Struktura podataka kernela, koja sadrži sve i-čvorove za trenutno otvorene datoteke i direktorije. Format i-čvorova trebao bi sadržavati (na minimalno) sva polja koja vraćaju statistiku sustava poziva tako da stat poziv može raditi (vidi tablicu 10.10). U kartici. 10.13 prikazuje neke od polja strukture I-čvorova podržana u Linux datotečnom sustavu. Stvarna struktura I-čvorova sadrži mnogo više polja, jer se ista struktura koristi za predstavljanje direktorija, uređaja i drugih posebnih datoteka. Struktura I-čvorova takođe sadrži i rezervisanu za buduću upotrebu polja. Priča je pokazala da neiskorišteni bitovi odavno ostaju bez poslova.

Sada da vidimo kako sistem čita datoteku. Sjećate se da je tipičan poziv za biblioteku za pokretanje sustavnog poziva glasi:

n \u003d pročitajte (FD, međuspremnik, nbytes);


Kada kernel primi kontrolu, onda sve što može započeti - ova tri parametra i informacije u njenim unutarnjim tablicama (povezane sa korisnikom). Jedan od elemenata ovih unutarnjih tablica je niz deskriptora datoteka. Indeksira se deskriptorima datoteke i sadrži jedan element za svaku otvorenu datoteku (na neki maksimalni iznos, zadana je obično 32).

Ideja je započeti s ovim deskriptorom datoteke i završiti odgovarajući mjehurić. Pogledajmo jednu potpuno moguću shemu: neka postavi Pozela pokazivač na tablicu deskriptora datoteke. Uprkos jednostavnosti, ova metoda (nažalost) ne radi. Problem je sljedeći. Uz svaki deskriptor datoteke, pokazivač mora biti povezan u datoteci koja definira bajt u datoteci iz koje će početi sljedeći rad čitanja ili snimanja. Gdje bi se ovaj pokazivač trebao pohraniti? Jedna opcija je da ga postavite u stol autobusa. Međutim, ovaj pristup neće moći raditi ako se više procesa koji nisu povezani jedno s drugim istovremeno otvorit će isti datoteka, jer svaki proces treba imati vlastiti pokazivač.

Drugo rješenje rješenja je postavljanje pokazivača u deskriptore tablice. U ovom slučaju svaki obrazac datoteke postupak ima svoj položaj u datoteci. Nažalost, takva shema također ne radi, ali uzrok neuspjeha u ovom slučaju nije toliko očit i povezan je s prirodom razmjene datoteka u Linux sistemu. Razmotrite scenarij Shell 5, koji se sastoji od dvije naredbe (P1 i P2), koje bi trebalo izvoditi zauzvrat. Ako se skripta naziva naredbenom linijom

očekuje se da će naredba P1 napisati svoj izlaz u X datoteku, a zatim će naredba P2 također napisati svoj izlaz u X datoteku, počevši od mjesta na kojem se zaustavila naredba P1.

Kada granata pokrene P1 proces, X datoteka će se prvo biti prazna, tako da naredba P1 jednostavno počne pisati u datoteku u položaju 0. Međutim, kada će P1 završiti svoj rad, potreban je određeni mehanizam koji će osigurati da će proces P2 biti potreban Pogledajte kao početni položaj, a ne 0 (i tako će se dogoditi ako je položaj u deskriptorima datoteke u datoteci u tablici), a vrijednost na kojoj je PI zaustavio.

Način na koji se radi prikazan je na slici. 10.19. Fokus je ući u novu tablicu - Otvori tablicu Opis datoteke (Otvorite tablicu Opis datoteke) - između tablice deskriptora datoteke i tablice i-čvorovi i pohranite pokazivač u datoteku (kao i bit za čitanje / pisanje) . Na slici je roditeljski proces školjke, a kćer je prvi PI proces, a potom i P2 proces. Kada granata kreira PI proces, njegova korisnička struktura (uključujući tablica deskriptora datoteke) tačna je kopija iste membranske strukture, tako da obojica sadrže pokazivače na isti tablicu opisa otvorenih datoteka. Kada procesPPI dovrši svoj rad, deskriptor datoteke Shell i dalje određuje tablicu Opis otvorenih datoteka, koji sadrži položaj P1 položaja u datoteci. Kada sada granata stvara proces P2, tada novi dječji proces automatski nasljeđuje položaj u datoteci, dok nije novi proces, niti je granata dužna znati trenutna vrijednost ovog položaja.


Ako bilo koji vanjski proces otvara datoteku, dobit će vlastiti unos u tablici opisa tablice sa svojim položajem u datoteci, naime, potrebno je. Dakle, zadatak tablice OTVORENO Opis datoteke je omogućiti roditeljskim i dječijim procesima da podijele jedan pokazivač u datoteci, ali za strane procese raspodjeljuju ličnih pokazivača.

Dakle (povratak u problem čitanja čitanja čitanja) pokazali smo kako se utvrdi položaj u datoteci i I-čvora. I-čvor sadrži adrese diska prvih 12 blokova datoteka. Ako položaj u datoteci padne u prvih 12 blokova, čitanje je željenog bloka datoteka i podaci se kopiraju korisniku. Za datoteke, čija dužina prelazi 12 blokova, I-čvor sadrži adresu diska jednog indirektnog bloka (jedno indirektni blok) (Sl. 10.19). Ovaj blok sadrži diskovne adrese dodatnih blokova diska. Na primjer, ako je veličina bloka 1 KB, a adresa diska traje 4 bajta, jedina indirektna jedinica može pohraniti do 256 adresa diska. Ova shema omogućava vam podršku datotekama do 268 KB.

ext2. (takođe se naziva kao ext2fs.) - Drugi prošireni sistem datoteka(Drugi prošireni sistem datoteka) je datotečni sistem izgrađen na Linux kernelu. Stvoritelj i programer Ext2 je Remy kartica. Ext2 datotečni sustav izgradio je ga u zamjenu za staru, prethodnu verziju - lok.

Prema takvim pokazateljima kao brzinom i performansama, ovaj datotečni sistem može poslužiti kao referenca. To se govori o rezultatima ispitivanja performansi datoteka. Na primjer, u testovima za brzinu dosljednog čitanja i pisanja, koji je proveo Dell Technical Center, Ext2 File System prelazi Ext3, a inferiorna je u brzini čitanja samo modernijom Ext4.

Glavni nedostatak ext2 je da nije sistem datoteka za novinare. Međutim, ovaj nedostatak je eliminiran u sljedećem datotečnom sistemu - Ext3.

ext2 se koristi na Flash karticama i čvrstim pogonima (SSD), jer je nedostatak dnevnika prednost prilikom rada s pogonima sa ograničenjima broja ciklusa snimanja.

Istorija stvaranja ext2.

U trenutku brzog razvoja Linux sistema koristio je minix datotečni sistem. Bila je to prilično visoka stabilnost, ali bilo je 16-bitno. Kao rezultat toga, postojalo je strogo ograničenje u 64 MB u odjeljku. Pored toga, došlo je do ograničenja maksimalne dužine naziva datoteke, što je bilo 14 znakova.

Ova ograničenja u agregatu bila su razlog razvoja "poboljšanog datotečnog sistema" (otuda termin " Prošireni sistem datoteka »). Imala je zadatak da riješi dva ključna problema sa minisilom. Novi sistem datoteka objavljen je u aprilu 1992. godine. Bilo je ekster, proširio je granicu veličine datoteke na 2 gigabajta i instalirao graničnu dužinu naziva datoteke u 255 znakova.

Međutim, uprkos uspjehu novog datotečnog sustava, međutim, ostao je dosta neriješenih problema. Na primjer, nije bilo podrške za odvojeni pristup, nije bilo vremenskih marki za izmjenu podataka. Potreba za rješavanje ovih zadataka i poslužila kao motiv za stvaranje sljedeće verzije proširenog Ext2 datotečnog sustava (" Drugi prošireni sistem datoteka »). Ext2 je razvijen u januaru 1993. godine, također provodi odgovarajuće ACL popise za kontrolu pristupa i proširene atribute datoteka.

Logička organizacija Ext2.

Ext2 Directory Hijerarhijski graf predstavljen je u obliku mreže. To je zbog činjenice da jedna datoteka može odmah ući u nekoliko direktorija.

Sve vrste datoteka imaju simbolična imena. U hijerarhijski organiziranim datotečnim sistemima koriste se tri vrste imena: jednostavna, kompozitna i relativna. Tako u ext2. U slučaju jednostavnog imena, ograničenje je da njegova dužina ne smije prelazi 255 znakova, osim toga, null simbol i kosa moraju biti prisutni u imenu.

Što se tiče null simbola, ograničenja su povezana sa relegacijom redaka na jeziku SI, u slučaju slabog simbola, sve je u tome što se koristi kao razdvojeni karakter između direktorija.

Puno ime je lanac jednostavnih simboličkih imena svih direktorija kroz koje se staza iz korijena radi u ovu datoteku. U ext2, datoteka može ući u nekoliko direktorija, znači da može imati nekoliko punih imena (jedna datoteka je nekoliko punih imena). Ali svejedno, puno ime definira datoteku.

Ext2 Atributi:

  • upišite i pristupite pravima na datoteku,
  • vlasnik, pristupna grupa,
  • informacije o dozvoljenim operacijama,
  • vrijeme kreiranja, zadnjeg datuma pristupa, Datum zadnjeg promjene i vrijeme zadnjeg uklanjanja,
  • trenutna veličina datoteke
  • specifikacija datoteke:
    • redovna datoteka
    • katalog,
    • uređaj orijentiran na bajt,
    • uređaj orijentiran na blok,
    • imenovani kanal
    • simbolična veza
  • broj okupiranih blokova,
  • drugi

Atributi datoteka nalaze se u posebnim tablicama, a ne u direktorijima, jer može biti u jednostavnim sistemima datoteka. Kao rezultat toga, direktorij ima vrlo jednostavnu strukturu koja se sastoji od dva dijela: broj deskriptora indeksa i imena.

Fizička organizacija Ext2.

Struktura sekcije diska

Kao dio ext2, može se razlikovati sljedeće:

  • blokovi i blokovi blokova;
  • deskriptor indeksa;
  • superblock.

Čitav prostor za particije diska podijeljen je u fiksne blokove, blokira višestruku veličinu sektora (1024, 2048, 4096 ili 8192 bajta). Veličina bloka je specificirana prilikom kreiranja datotečnog sustava na odjeljku diska. Svi blokovi su dodijeljeni redoslijedni brojevi. Da biste smanjili fragmentaciju i broj kretanja glave tvrdog diska, prilikom čitanja velikih polja podataka, blokovi se kombinuju u grupe.

Osnovni koncept datotečnog sustava je deskriptor indeksa (također se naziva i inode - informativni čvor.). Ovo je posebna struktura koja sadrži informacije o atributima i fizičkoj lokaciji datoteke. Indeksni dekaptoci kombinirani su u tablicu koji se nalaze na početku svakog bloka blokova. Superblock je glavni element ext2 datotečnog sistema. Sadrži opće informacije o datotečnom sustavu. Superblock se nalazi u 1024 bajta od početka odjeljka. Integritet superbloka određuje funkcionalnost datotečnog sistema. OS stvara nekoliko rezervnih kopija superbloka - u slučaju oštećenja na particiji. U narednom bloku nakon superbloka nalazi se globalni tablica deskriptora - opis blok grupa u obliku niza sa općim informacijama o svim blokovskim grupama.

Blok Group

Svi blokovi Ext2 su razbijeni u grupe. Za svaku grupu stvoren je poseban unos u tablici globalnog deskriptora. Ovaj unos pohranjuje glavne parametre, poput toga: blok broj u bitmapovima i tablicama, broj slobodnih blokova u grupi, broj deskriptora indeksa koji sadrže direktorijume.

Bit karta Blok - Ovo je sistem u kojem svaki bit informiše da li datoteka odgovara njemu ima datoteku. Ako je bit 1, blok je zauzet. Slična funkcija vrši se bitmap deskriptorima indeksa: pokazuje koji su deskriptori indeksa zauzeti, a koji nije. Linux kernel pokušava ravnomjerno distribuirati Inode direktorij u grupama, a inode datoteke - premjestiti u grupu sa matičnim katalogom. Preostalo mjesto pojavljuje se u tablici, jer su podaci dodijeljeni pohranjivanju datoteka.

Sistem adresiranja podataka

Sistem adresiranja podataka jedna je od najozbiljnijih i ključnih komponenti datotečnog sistema. Zahvaljujući tome, željena datoteka je među mnogo praznih ili zauzetnih blokova na disku.

ext2 primjenjuje sljedeću shemu adresiranja datoteka. Za pohranu adrese datoteke, izolirano je 15 polja, od kojih se svaka sastoji od 4 bajta. Ako se datoteka uklapa u 12 blokova, brojevi odgovarajućih klastera navedeni su u prvih dvanaest adresa. Ako veličina datoteke pređe 12 blokova, sljedeće polje sadrži adresu klastera u kojoj se može pronaći brojevi sljedećih blokova datoteka. Dakle, trinaesto polje koristi se za indirektnu adresu.

Uz maksimalnu veličinu bloka u 4096 bajtova, klaster odgovara 13. polju može sadržavati do 1024 brojeva sljedećih blokova datoteka. Ako veličina datoteke prelazi 12 + 1024 blokova, a zatim se koristi 14. polje u kojem se nalazi adresa klastera koja sadrži 1024 brojeve klastera, od kojih se svaka odnosi na blok datoteka 1024. Već postoji dvostruko indirektno adresiranje. A ako datoteka uključuje više od 12 + 1024 + 1048576 blokova, tada se primjenjuje posljednji 15. polje za trostruko indirektno adresiranje.

Takav sistem adresiranja omogućava vam da imate datoteke, preko 2 TB s maksimalnom veličinom bloka u 4096 bajtova.

Ako imate dva operativna sistema, instalirani su Windows i Linux, tada biste vjerojatno željeli da se nalazite na odjeljcima besplatnog operativnog sistema izravno iz Windowsa bez ponovnog učitavanja računara.

Nažalost, podrška Linux OS sektora u Windows-u se ne pruža. I uzalud. Čini mi se da bi to moglo biti prekrasna gesta iz Microsofta.

Suština problema je što Windows koristi sistem datoteke NTFS, a Linux ima svoj način organiziranja datoteka, proširenog datotečnog sustava, a najnovija verzija ima redoslijed broj 4.

Linux je korisnicima više prilagođivači, a ne na njenoj komercijalnoj sestri: u Linuxu, podrazumevano podržava sistem Windows NTFS datoteke. Naravno, nećete moći instalirati Linux na odjeljku NTFS, ali možete čitati i pisati podatke iz ovoga.

Ext2 IFS.

Ext2 IFS podržava Windows NT4.0 / 2000 / XP / 2003 / Vista / 2008 X86 i X64 i omogućava vam da vidite sadržaj Linux Ext2 odjeljka i može se i zabilježiti i na njima. Uslužni program postavlja upravljački program sistema Ext2fs.SYS, koji proširuje punu podršku za Ext2 u njemu: particije ext2 dodijeljene su slova diskova, a na primjer, datoteke i mape se prikazuju u dijalozima svih aplikacija, na primjer , u istraživaču.

Ext2 FSD.

Ext2 FSD je besplatan upravljački program za Windows sisteme (2K / XP / Vista / 7 verzije X86 i X64). Kao i prethodni uslužni program, koji je, u svojoj suštini, takođe vozač, uključuje punu podršku za sistem datoteka Ext2 u Windows-u.

LTOOLS - Kombinatska kompletna kompleta koji omogućava čitanje i snimanje podataka o / iz Linux Ext2, Ext3 i ReiserFS (standardni Linux datotečni sustavi) iz DOS-a ili prozora.

Postoji verzija programa sa grafičkom školjkom (napisana na Java) - LtoolsGui, kao i verzija sa grafičkom ljuskom napisanom.

Ext2Pread.

Za desert kao uvijek najukusniji.

Ext2Read je uslužni program na osnovu datoteke menadžera koji vam omogućava da vidite i pišite na odjeljke Ext2 / Ext3 / Ext4 / Ext4. Podržava LVM2 i koji ga razlikuje od ostalih programa ovog pregleda, ext4 datotečni sistem. Ugrađena podrška za rekurzivne kopiranje direktorija.

A evo drugog deserta. U početku je rečeno da će dobre geste iz Microsofta biti uključena podrška za Linux sekcije u Windows-u podrazumevano.

Pokreta je i dalje napravljena na 20. godišnjici Linuxa. Vidite sebe.

To je sve. Hvala na pažnji. Ja ću se boriti s may Betles. Njihova ovo proljeće je puno tako. 🙂

Vladimir Miskov

Arhitektura datotečnog sistema Ext2

Članak govori o logičnoj strukturi Ext2 datotečnog sistema Linux operativnog sistema.

Osnovne komponente Ext2 datotečnog sistema

Kao i u bilo kojem UNIX datotečnom sistemu, sljedeće komponente mogu se razlikovati u sklopu ext2 datotečnog sustava:

  • blokovi i blokovi blokova;
  • informativni čvor;
  • superblock.

Blokovi i blokovi blokova

Čitav prostor pregrade diska podijeljen je u blokove fiksne veličine, višestruko sektorsko veličinu - 1024, 2048 i 4096 bajta. Veličina bloka je naznačena prilikom kreiranja datotečnog sistema na odjeljku tvrdog diska. Manja veličina bloka sprema prostor na tvrdom disku, ali također ograničava maksimalnu veličinu datoteke. Svi blokovi imaju redoslijed brojeva. Da bi se smanjila fragmentacija i broj kretanja glave tvrdog diska, prilikom čitanja velikih polja podataka, blokovi se kombiniraju u grupe.

Informativni čvor

Osnovni koncept datotečnog sustava je informacijski čvor, informativni čvor ili inode. Ovo je posebna struktura koja sadrži podatke o atributima i lokaciji fizičkog datoteka. Atributi datoteke su njena vrsta (normalna datoteka, direktorij, itd.), Prava pristupa, identifikator vlasnika, veličina, vrijeme kreiranja. Informacije o fizičkoj lokaciji slijed je apsolutnog blok broja koji sadrže podatke datoteke.

Superblock

Superblock je glavni element ext2 datotečnog sistema. Sadrži sljedeće podatke o datoteci (nepotpuno popis):

  • ukupan broj blokova i inoda u datotečnom sustavu;
  • broj slobodnih blokova i inoda u datotečnom sustavu;
  • veličina bloka datoteka;
  • broj blokova i inoda u grupi;
  • veličina inoda;
  • identifikator datotečnog sistema;
  • broj prvog bloka podataka.

Drugim riječima, ovo je blok broj koji sadrži superblok. Ovaj je broj uvijek jednak 0 ako je veličine bloka datotečnog sustava veća od 1024 bajta, a 1, ako je veličina bloka 1024 bajta.

Funkcionalnost datotečnog sustava direktno ovisi o integritetu superbloka. Operativni sistem stvara nekoliko rezervnih kopija superbloka da bi se moglo vratiti u slučaju oštećenja. Glavna kopija nalazi se na pomak od 1024 bajta od početka odjeljka na kojem se stvara datotečni sistem (prvih 1024 bajtova rezervirano je za pokretač operativnog sistema).

Rane verzije ext2 datotečnog sistema stvorile su kopije superbloka na početku svakog bloka blokova. To je dovelo do velikog gubitka prostora na disku, pa je smanjen broj sigurnosnih kopija kopija superbloka, a grupe blokova od 0, 1, 3, 5 i 7 izdvojene su za njihov položaj.

Blok Grup Format

Generalizirani strukturni dijagram Ext2 datotečnog sistema prikazan je na slici. jedan.

Gotovo sve blok grupe imaju isti format. U svakoj grupi, osim informacija o zapošljavanju blokova i inode grupama u obliku bitmapa čuvaju se informacije o zapošljavanju blokova i inodonskih grupa u obliku bitmapa. Blok blokova 0 također uključuje superblocke i tablice deskriptora grupa koje ćemo razmotriti u nastavku.

Biranje karte blokova zapošljavanja obično se nalazi u prvom bloku grupe. Ako je u grupi prisutna sigurnosna kopija, bitmap se nalazi u drugom bloku grupe. Veličina bitmapa je jedan blok. Svaki bit ove kartice označava stanje bloka. Ako je bit postavljen (1), blok je zauzet ako se blok resetira (0) - blok je besplatan. Prvi blok grupe odgovara nulti zalogaj kartice, drugi blok - prvi bit itd.

Inode, smješten u istoj grupi, sakupljeni su u tablici. U mapu zapošljavanja ugriza inode Grupa svaki bit karakterizira status elementa u tablici Inode Group.

Svaki blok blokova opisan je pomoću deskriptora Block Grupe. Grupna ručka je struktura koja sadrži informacije o adresama bitmapa blokova blokova, inode zauzet bitmap i tablicu anoda odgovarajuće grupe. Svi grupni deskriptori prikupljaju se u tabeli grupnih deskriptora, koji se pohranjuje u grupu blokova 0. Baš kao i za superblok, operativni sistem stvara sigurnosne kopije kopija tablice deskriptora.

Algoritam za čitanje datoteka

Svaka inoda, kao i blok, ima niz slijeda, jedinstven u datotečnom sustavu i sadrži informacije samo o jednoj datoteci. Dakle, da biste pristupili sadržaju datoteke, morate znati redoslijed broja odgovarajućih inoda koji odgovara njemu.

Kao što je već spomenuto, informacije o lokaciji fizičke datoteke sadržane su u inost. Ove informacije su niz 32-bitnih blokova koji sadrže podatke datoteke (Sl. 1). Prvih 12 brojeva su direktne veze do blokova informacija (broj direktnih blokova). 13. broj je indirektna veza (indirektni blokovi broj). Sadrži adresu bloka u kojem se pohranjuju adrese informativnih blokova. 14. soba je dvostruka indirektna veza (dvostruki blok broj), 15. broj je trostruki indirektni link (trostruki blok broj).

Naziv datoteke u inode nije uključen, postavljanje sukladnosti između imena datoteka i brojeva Inode Sequence izvode se putem direktorija.

Katalozi

Datoteke u UNIX i POSIX sistemima pohranjuju se u hijerarhijskom sustavu sa stabla. Korijen datotečnog sustava je korijenski direktorij označen simbolom "/". Svaki intermedijarni čvor u stablu datotečnog sistema je direktorij. Završni vrhovi stabla datotečnog sustava su prazni direktoriji ili datoteke. Naziv apsolutnog puta datoteke sastoji se od imena svih imenika koji vode do navedene datoteke, počevši od korijenskog direktorija. Dakle, naziv pjesme /home/test.file znači da se datoteka test.file nalazi u kućnom imeniku, koji se zauzvrat nalazi u katalogu korijena "/".

Katalog, kao i datoteka, opisan je pomoću inode. Sadržaj imenika je niz zapisa, od kojih svaka sadrži podatke o datoteci koja je "unutar" trenutnog direktorija ".

Zapisnik direktorija ima sljedeći format:

  • broj sekvence inode datoteke;
  • dužina snimanja u bajtovima;
  • ime dokumenta;
  • dužina imena datoteke.

Traženje za inodno datoteku uvijek se započinje s korijenskim direktorijom. Na primjer, kako bi se dobio broj inode sekvence u korijenskom direktoriju, operativni sustav mora dobiti sadržaj korijenskog direktorija, pronaći je u sebi s nazivom ove datoteke i uklonite broj inode datoteke iz ovog zapisa.

Nekoliko brojeva inoda rezervirano je datotečnim sustavom, njihova lista sadrži u datoteci zaglavlja:

* Posebni broj inoda

#Define ext2_bad_ino 1 / * loši blokovi inode * /

#Define ext2_root_in 2 / * root anode * /

#Define ext2_acl_idx_in 3 / * acl inode * /

#Define ext2_acl_data_ino 4 / * acl inode * /

#Define ext2_boot_loader_ino 5 / * utovarivač za pokretanje inode * /

#Define ext2_undel_dir_ino 6 / * neelete direktorij inode * /

Da biste snimili korijenski direktorij, inode je rezervisan na broju 2 (rootcode). Ovaj je inod u bloku blokova 0 i uzima drugi položaj u tablici inode ove grupe. Broj prvog neređenog inoda pohranjuje se u superblok.

Nakon određivanja broja inodana slijeda, kernel izračunava broj grupnog broja u kojem se nalazi ovaj inod, a njegov položaj u tablici inode grupe. S obzirom na inost iz ove pozicije, operativni sistem prima potpunu podatke o datotekama, uključujući blok adrese u kojima se čuva sadržaj datoteke.

Broj bloka u kojem se nalazi inod izračunava formulom:

grupa \u003d (inode_num - 1) / inodes_per_group

gde:

  • grupa.- željeni broj blok bloka;
  • inode_num - Broj sekvence inost koji definira datoteku;
  • inodes_per_group - Broj inost u grupi (ove informacije su u superblokadu).

Položaj inode u tablici Inode Grup određuje se formulom:

index \u003d (inode_num - 1)% inodes_per_grupa

gde je indeks u tabeli inode.

Razmotrite primjer pribavljanja sadržaja test.file datoteke koja se nalazi u korijenskom direktoriju. Da biste pročitali /Test.File datoteku:

  • u nizu evidencija korijenskih imenika pronađite unos o ovoj datoteci;
  • izdvojite broj sekvencijskog broja inode datoteke, izračunajte broj grupnog broja u kojem se nalazi ovaj inod;
  • iz deskriptora ove grupe izdvajate adresu inode grupnog stola;
  • izračunajte položaj inode u ovoj tabeli;
  • pročitajte inode datoteku;
  • od inoda za izvlačenje adresa adresa adresa i pročitajte informacije u ovim blokovima.

Na slici. 2 Detalji Prikaži čitanja / test datoteke. Datoteka.

    Koraci 1-6 - Čitanje kataloga korijena:

  1. Iz grupe blokova 0, čitanje se čita deskriptori tablice.
  2. Iz tablice zapisa tablice preuzme se grupa blokova grupe 0 i adresa inode grupe se čita iz nje.
  3. Iz grupe blokova 0 čita tablicu inoda.
  4. Broj sekvence inode korijenskog direktorija je fiksiran i jednak 2, tako da se drugi element čita iz inode grupe 0, koja sadrži blok adresu sa sadržajem root-a. Pretpostavimo da se ova jedinica nalazi u bloku A. Blocks.
  5. Iz grupe blokova A se čita blokom koji sadrži zapise korijenskog direktorija.
  6. Pretražen je zapis unosa nazvan "test.file". Ako se takav zapis pronađe, iz njega se preuzima takav zapisnik "Test.File" datoteka "test.file".
  7. Definiranjem inode broja možete pristupiti informativnim blokovima datoteke (koraci 7-11):

  8. Broj grupnog broja izračunava se u kojem se nalazi ovaj inod, a njegov položaj u tablici Inode Group (pretpostavimo da je broj grupnog u tablici B i položaj u tablici - x).
  9. Iz tabele grupnih deskriptora uklonite deskriptor porcije B, a adresa inode tablice ovog bloka blokova se čita iz nje.
  10. Tablica inode čit se iz Block grupe B.
  11. Iz tabele anoda blokova blokova B Reads inode, smješten u položaju X.
  12. Od čitanja inoda, blok adrese sa datotekom sadržaja /test.file preuzima i informacije se čitaju iz bloka sa navedenom adresom.

Provedba softvera algoritma za čitanje datoteka

Podaci izvora: Postoji particija tvrdog diska na kojem se stvara Ext2 datotečni sistem. Ovaj odjeljak odgovara datoteci uređaja / dev / HDA3. U korijenskom direktoriju odjeljka kreira se domaća poddirektor i sadrži test.file datoteku sljedećeg sadržaja:

Da li bi city živeo na jugu?

Da, ali lažna instanca!

1234567890-=

Nemojte misliti loše, to nije glupost, već testna vježba iz tečaja telegrafičara u trupama komunikacije bivšeg SSSR-a!

Pažnja! Treba uzeti u obzir jednu važnu tačku. Stvorena datoteka neće biti odmah zabilježena na disku, a prvo je pasti u diskovni međuspremnik. Pokušaj odmah da dobije sadržaj datoteke prema gore navedenom algoritmu neće dovesti do bilo čega, jer informacije o ovoj datoteci nisu fizički na disku. Potrebno je "prisiliti" sustav za snimanje diskova na disku. Najlakši način za to je da izvršite operaciju ponovnog pokretanja. Stoga se nakon kreiranja datoteke ponovo pokrenite sistem.

Naš zadatak koristi uređaj / dev / hda3 datoteku, za čitanje /home/test.file datoteke pomoću načina izravnog pristupa svojim informativnim blokovima.

Razmislite o provedbi programa modula koji obavlja ovu operaciju.

Datoteke zaglavlja:

#Include.

#Include.

#Include.

#Include.

#Include.

#Include.

Datoteka zaglavlja definira strukturne vrste koje opisuju glavne komponente Ext2 datotečnog sustava - Superblock, blok grupni deskriptor, informativni čvor, unos u direktorij.

Razmislite o ukratko poljima koja su uključena u svako od ovih struktura:

  1. Struct ext2_super_block Superblock struktura:
    • __U32 s_inodes_count- ukupan broj inost u datotečnom sustavu;
    • __U32 s_blocks_count.- ukupan broj blokova u datotečnom sustavu;
    • __U32 s_free_blocks_count.- broj slobodnih blokova;
    • __U32 s_free_inodes_count.- broj slobodnog inoda;
    • __U32 s_first_data_block- broj prvog bloka podataka (broj bloka u kojem se nalazi superblok);
    • __U32 s_log_block_size. - Ova vrijednost se koristi za izračunavanje veličine bloka. Veličina bloka određuje se formulom: Blok veličine \u003d 1024<< s_log_block_size;
    • __U32 s_blocks_per_group - broj blokova u grupi;
    • __U32 s_inodes_per_group - broj inost u grupi;
    • __U16 s_magic. - ext2 identifikator datotečnog sistema (0XEF53 potpis);
    • __U16 s_inode_size - veličina čvorova informativnog broja (inode);
    • __U32 s_first_ino. - Broj prvog neepremljenog inost.
  2. Struct ext2_group_desc grupna struktura deskriptora:
    • __U32 bg_block_bitmap- Bitmap zapošljavanja grupnih blokova;
    • __U32 bg_inode_bitmap- Bittivanje karte za zapošljavanje inode grupe;
    • __U32 bg_inode_table - Adresa tablice inode.
  3. Struct ext2_inode Informativna struktura čvora:
    • __U16 I_Mode je vrsta datoteke i prava pristupa njemu. Vrsta datoteke Definišite bitove 12-15 ovog polja:
      • 0xa000.- simbolička veza;
      • 0x8000.- normalna datoteka;
      • 0x6000.- blokirati blok uređaj;
      • 0x4000.- katalog;
      • 0x2000.- simbolička datoteka uređaja;
      • 0x1000- FIFO kanal.
    • __U32 I_size. - Veličina u bajtovima;
    • __U32 I_Atime.- zadnje vrijeme pristupa datotekama;
    • __U32 i_ctime - Vrijeme stvaranja datoteka;
    • __U32 I_Mtime.- vrijeme posljednje izmjene;
    • __U32 i_blocks. - broj blokova koji su zauzeli dosje;
    • __U32 i_block - adrese informativnih blokova (uključujući sve indirektne veze).
  4. Vrijednost ext2_n_blocks definirana je u datoteci:

    * Konstante u odnosu na blokove podataka

    #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. Struct ext2_dir_entry_2 Struktura unosa direktorija:
  6. #Define ext2_name_len 255.

  • __U32 inode - inode brojevna datoteka;
  • __U16 REC_LEN. - dužina evidentiranja direktorija;
  • __U8 Name_Len.- dužina naziva datoteke;
  • char naziv.ime dokumenta.

Definiramo ime odjeljka na kojem se stvara datotečni sistem, globalne konstrukcije i varijable.

#Define part_name "/ dev / hda3"

struct ext2_super_block sb;

/ * Pufer za skladištenje deskriptora tablice * /

nepotpisani char buf_grp;

nepotpisani Char Buff; / * Informativni međuspremnik * /

int Indev; / * Ručka datoteke uređaja * /

int blksize; / * Veličina bloka datoteke datoteke * /

Definiramo nekoliko funkcija koje moramo raditi:

Funkcija čitanja superbloka:

nevaljana read_sb ()

Memset (& SB, 0.1024);

Pomakni nas 1024 bajta sa početka odjeljka i pročitajte superblok do strukture struct ext2_super_block SB:

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

Perror ("Lseek");

Izlaz (-1);

Ako (pročitajte (Indev, Char * & SB, size (sb))< 0) {

Perror ("Pročitaj");

Izlaz (-1);

Provjerite identifikator datotečnog sistema:

Ako (sb.s_magic! \u003d Ext2_super_magic) (

Printf ("Nepoznati tip datoteka!");

Izlaz (-1);

Vrijednost ext2_super_magic definirana je u datoteci zaglavlja.

Prikazuje informacije o datotečnom sustavu koji se nalazi u superblocku:

printf ("Informacije o superbloku -----------");

Printf ("Inodes grof -% u", sb.s_inodes_count);

Printf ("Blokovi broj -% u", sb.s_blocks_count);

Printf ("Veličina bloka -% u", 1024<< sb.s_log_block_size);

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

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

Printf ("inode veličina -% d", sb.s_inode_size);

Printf ("inode po grupi -% u", sb.s_inodes_per_group);

Printf ("Blosks po grupi -% u", sb.s_blocks_per_group);

Printf ("Prvi blok podataka -% u", sb.s_first_data_block);

Povratak;

Funkcija za čitanje tablicama Deskriptori:

nevažeći za pročitaj_gdt ()

Izračunajte veličinu bloka datotečnog sistema:

Blksize \u003d 1024.<< sb.s_log_block_size

Tabela grupnih deskriptora nalazi se u bloku, koji se nalazi odmah iza prvog bloka podataka (za superblok).

Pročitajte tablicu:

Ako (Lseek (Indev (SB.S_FIRST_DATA_BLOCK + 1) * BLKSSIZE, 0)< 0) {

Perror ("Lseek");

Izlaz (-1);

Ako (pročitajte (Indev, Buff_grp, Blksize)< 0) {

Perror ("Pročitaj");

Izlaz (-1);

Povratak;

Inode sadržaj karakteristika po njenom broju:

void get_inode (int inode_num, struct ext2_inode * in)

Karakteristike unosa funkcije - broj inode sekvence i struktura strukture ext2_inode.

Struct ext2_group_desc GD;

U64 grupa, indeks, pos;

Izračunajte broj blok grupe u kojoj se inod nalazi sa inode_num Sequence Redgence:

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

Iz deskriptora tablice uklonite grupni deskriptor i kopirajte ga u strukturu Ext2_Group_desc GD strukturu:

Memset ((nevažeći *) & GD, 0, size (GD));

Memcpy ((nevažeći *) & gd, buf_grp + (grupa * (size (GD))), size (GD));

Izračunajte položaj inode sa inode_num Sequence nule u tablici inode grupe grupe i pročitajte ovu inost u strukturi struct ext2_inode:

index \u003d (inode_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);

Povratak;

Pročitana funkcija blokova podataka:

void read_iblock (struct ext2_inode * in, int blk_num)

U64 POS;

Parametri unosa funkcija - inode struktura i blok broj (znači broj iz niza bloka adrese koji se nalazi u inodje).

Izračunajte pomak na blok informacija na odjeljku i pročitajte ovu jedinicu u Global Buffer Buff:

POS \u003d ((__U64) u-\u003e i_block) * blksize;

PREAD64 (Indev, Buff, Blksize, POS);

Povratak;

Funkcija za primanje sadržaja korijenskog direktorija:

void get_root_dentryry ()

Struct ext2_inode in;

Poznat je broj iNode sekvencijskog broja korijenskog direktorija, tako da dobijamo sadržaj inost korijenskog direktorija i čitati njen sadržaj u međuspremniku:

get_inode (ext2_root_ino i in);

Čitaj_iblock (& \u200b\u200bin, 0);

Buffer Buff sadrži sadržaj korijenskog direktorija.

Povratak;

Funkcija primanja inoda broja po imenu datoteke:

int get_i_num (char * naziv)

Parametri ulaza - naziv datoteke. Povratna vrijednost - Broj sekvence inode.

Int i \u003d 0, rec_len \u003d 0;

Struct ext2_dir_entry_2 udubljenje;

U Buffu Buffer postoji niz unosa direktorija. Da biste odredili redoslijed broja Inode datoteke, morate pronaći u ovom nizu s nazivom ove datoteke:

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

Memcpy ((nevaljana *) & un Centur (Buff + Rec_Len), size (ur ur));

Ako (! Memcmp (Dent.Name, ime, dent.name_len)) pauzu;

Rec_len + \u003dnt.rec_len;

Povratni dent.inode;

A sada zapišemo glavnu funkciju:

int main ()

Varijable i strukture:

struct ext2_inode in;

// Apsolutno ime putovanja

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

Nepotpisani Char Buff1;

Static Int I \u003d 1;

Int n, i_num, outf, tip;

Prvi znak u apsolutnom nazivu puta datoteke trebao bi biti izravna kolica (/). Provjeri:

Ako (full_path! \u003d "/") (

Perror ("Slash");

Izlaz (-1);

Otvorite datoteku uređaja, pročitajte superblocke i deskriptore tablice:

Indev \u003d otvoren (part_name, o_rdonly);

Ako (Indev.< 0) {

Perror ("Open");

Izlaz (-1);

Čitaj_sb ();

Čitaj_gdt ();

Dobijamo sadržaj korijenskog kataloga:

get_root_dentryry ();

Sada pufer Buff sadrži sve zapise korijenskog direktorija (ako želite, možete ih sačuvati u zasebnoj datoteci). Sada, imajući evidenciju korijenskog direktorija, možemo doći do sadržaja datoteke test.file pomoću gornjeg algoritma čitanja datoteke. U tu svrhu organiziramo ciklus. U tijelu ciklusa analizirat ćemo apsolutni naziv staze datoteke, ističući njegove elemente - poddirektorije (jedna je, kuća) i naziv datoteke za pretraživanje (test.file). Za svaki element definiramo broj sekvence inoda, razmatramo ovu inost, a zatim dobijamo sadržaj nulte bloka (od niza adresnih blokova koji se nalaze u inodje):

dok (1) (

Memset (Buff1.0, size (Buff1));

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

Buff1 [n] \u003d full_path [i];

If (((((((lf1 [n] \u003d\u003d "/") || (Buff1 [n] \u003d\u003d "?") (

I ++;

Prekid;

buff1 [n] \u003d "?";

Za svaki element apsolutnog puta na ime datoteke određujemo broj inode sekvence, pročitajte ovu inost u memoriji, a zatim dobijete sadržaj nulte bloka:

I_num \u003d get_i_num (buff1);

Get_inode (i_num, & in);

Čitaj_iblock (& \u200b\u200bin, 0);

Prikažite podatke o datoteci (ime, inode broj, veličinu datoteke i njen tip):

Printf ("inode broj -% u", i_num);

Printf ("Naziv datoteke -% s", buff1);

Printf ("Veličina datoteke -% u", in.i_size);

Vrsta datoteke određuje se starijim četiri bita I_MODE poljske strukture ext2_inode:

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

Printf ("Tip -% D", tip);

Prekidač (tip) (

Slučaj (0x04):

Printf ("(katalog)");

Prekid;

Slučaj (0x08):

Printf ("(normalna datoteka)");

Prekid;

Slučaj (0x06):

Printf ("(blok jedinica)");

Prekid;

Slučaj (0x02):

Printf ("(simboličan uređaj)");

Prekid;

Zadano:

Printf ("(nepoznata vrsta)");

Prekid;

Provjerite vrstu datoteke. Ako je ovo redovna datoteka - prekinuti ciklus:

Ako (tip i 0x08) (

Buffer Buff bit će informacije pročitati iz informativnih blokova /home/test.file datoteke. Ove podatke pišemo u datoteku:

Outf \u003d otvoren ("out", o_creat | o_rdwr, 0600);

Napišite (outf, buff, size (Buff));

Zatvori (outf);

Prekid;

Odlazimo:

Zatvori (Indev);

Vrati 0;

Na ovom razmatranju logičke strukture ext2 datotečnog sistema.

(Drugi prošireni sistem datoteka).

· Šumarstvo Linux datotečnih sistema

· Struktura particije diska u Ext2FS-u

·

· Katalozi

· Uređaji datoteka

·

·

· Bibliotečka ext2fs

· Odjeljak Ext2FS sistema

· Izračun privatnosti

Matfak

Prog.

Drugi kurs 5. grama.

Chichirov Andrey

Falomethem Ext2fs (drugi prošireni sistem datoteka).

Isporuke Linux datotečnog sistema

Linux varijable bile su baza podataka na osnovu operativnog sistema Minix. To bi bio nominirani diskovi između dva sustava nego da imaju novi datotečni sistem, pa je Linus Torvalds slijedio pododjeljak u Linux Minix datotečnom sustavu. Dok je ovaj datotečni sistem bio prilično efikasan s relativno malom količinom grešaka.

Međutim, bljeskovi povezane sa minix datotečnim sustavom su prilično visoke, pa su počeli razmišljati o novom datotečnom sustavu za Linux.

Za kontrolu implementacije novog datotečnog sustava u Linux otrovu korišten je virtualni sistem datoteka (VFS). VFS je napisao Chris Provenzano, a potom je Linus Torvalds prošao u integraciji u otrov.

Nakon instaliranja u VFS otrovu, novi sistem FAL System FAL (prošireni sistem datoteka) je bio jednostavan i dodan u Linux 0.96C Vexa. U novom datotečnom sustavu uklonjene su dva značajna minix sustava: njegov maksimalni volumen mogao bi dostići 2 gigabajta, a maksimalna naziv datoteke je 255 znakova. Bilo je to postignuće sa minix datotečnim sistemom, iako neke jednostavno očigledno i dalje kuca. Nije bilo prikladnog pristupa, modifikacije indeksa Descippet i modificirati ćelije promjene datoteke. Ovaj datotečni sistem koristio je povezane spiskove za otvaranje slobodnim blokovima i indeksu descpings, što je uveliko utjecalo na sistem sustava: sa popisima lista postali su neodređeni i umočeni, koji se koristi za podnošenje datotečnog sistema.

Odluka ove sonde bila je izdanje dva nova datoteka u januaru 1993. godine: XIA i EXT2FS (drugi prošireni sistem datoteka). Uglavnom je XIA datotečni sistem zasnovan na minixu uz dodatak nekoliko novih funkcija. U osnovi je to bila mogućnost vežbanja sa dugim imenima datoteka, odobravanjem diskova veće količine i napetosti ćelija promjena datoteke. Sa finim kamenjem, Ext2FS se temeljio na EXTFS-u s mnogim poboljšanjima i dodacima. Imala je i priliku za budućnost.

Kad su ove dvije datotečne sustave pušteni, bili su funkcionalno pilotički. Xia sistem bio je pouzdaniji od ext2fs, zbog svoje minimiziranja. Pogreške u sistemu Ext2FS bili su neasfaltirani na njihovoj tišioj aplikaciji, a dodani su veliki broj novih funkcija i poboljšanja. Trenutni ext2FS datotečni sustav je vrlo pouzdan i postao je de facto linux datotečni sistem.

Sljedeća tablica pruža zajedničke informacije o funkcionalnosti funkcionalnih funkcija koje se pružaju s iskrivljenim datotečnim sustavima.

Minix fs.

Ext fs.

Ext2 fs.

Xia FS.

Maksimalni sistem datoteka

Maksimalna dužina datoteke

Maksimalna dužina imena datoteke

Pododjeljak kule promjena promjena datoteke

Sposobnost tempa

Promjenjiva Pazmp Bloka

Zaštita infone

Ako vam treba dužina imena datoteke u Ext 2. Može se povećati na 1012.

Ext2FS će prodrijeti u nekim blokovima za korijenski korisnik. Obično je to 5% od ukupnog broja, što omogućava sistemskoj administraciji da izbjegne nedostatak opsega tvrdog diska ispunjavanja korištenjem korisnika Dpuugi korisnika.

Struktura particije diska u ext2fs

Proizvođači tvrdog diska obično opskrbljuju svoje proizvode formatirane na niskom nivou. Koliko znam, to znači da je sav prostor na disku uz pomoć posebnih naljepnica slomljena "sektorima", veličinom 512 bajta. Takav disk (ili dio diska) mora biti pripremljen za upotrebu u određenom operativnom sistemu. U MS-DOS ili Windows-u se postupak pripreme naziva formatiranjem, a u Linuxu - kreiranje datotečnog sistema. Izrada datotečnog sistema ext2fs. To je stvaranje u disku dijelu određene logičke strukture. Ova struktura je izgrađena na sljedeći način. Prvo, područje za čizme dodjeljuje se na disku. Područje čizma kreira se u bilo kojem datotečnom sustavu. Na primarnoj particiji sadrži unos za pokretanje - fragment koda koji pokreće proces učitavanja operativnog sistema pri pokretanju. Na ostalim odjeljcima ovo se područje ne koristi. Sva ostatka prostora na disku podijeljena je u blokove. Jedinica može biti veličina od 1, 2 ili 4 kilograma. Blok je adresiran jedinicom prostora na disku. Odabir lokacijskih datoteka vrši se cijeli blokovi, tako da kada odaberete veličinu bloka, morate kompromitirati. Velika veličina bloka, u pravilu smanjuje broj žalbi na disk prilikom čitanja ili pisanja datoteke, ali povećava udio rijetko korištenog prostora, posebno ako postoji veliki broj malih datoteka.

Blokovi su u svom području kombinirani u grupe blokova. Blok grupe u datotečnom sustavu i blokovima unutar grupe numeriraju se uzastopno, počevši od 1. Prvi blok na disku ima broj 1 i pripada grupi s brojem 1. Ukupan broj blokova na disku (na disku) ODELJAK) Da li je distributer diska izražen u sektorima. A broj blok grupa nije potreban za podijeljenje broja blokova, jer zadnja grupa blokova možda neće biti potpuna. Početak svakog bloka blokova ima adresu koja se može dobiti kao ((broj grupe - 1) * (broj blokova u grupi)).

Svaka grupa blokova ima istu strukturu. Njegova je struktura prikazana u sljedećem tabletu.

Struktura grupe blokova particije diska u ext2fs.

Prvi element ove strukture (superblok) je isti za sve grupe, a svi su drugi pojedinac za svaku grupu. Superblock se pohranjuje u prvom bloku svake grupe blokova (s izuzetkom 1 u kojoj se u prvoj jedinici nalazi se zapis o učitavanju). Superblock To je polazište datotečnog sistema. Ima veličinu od 1024 bajta i uvek smješten na pomak od 1024 bajta od početka datotečnog sustava. Prisutnost nekoliko primjeraka superblokata posljedica je ekstremne važnosti ovog elementa datotečnog sustava. Superblock duplikati koriste se prilikom vraćanja datotečnog sistema nakon neuspjeha.

Informacije pohranjene u superblocku koriste se za dogovorenost ostalih podataka na disku. Superblock definira veličinu datotečnog sustava, maksimalnog broja datoteka u odjeljku, količinu slobodnog prostora i sadrži informacije o tome gdje tražiti nezauzete područja. Kada pokrenete OS, superblok se čita u memoriju i sve promjene u datotečnom sustavu prvo pronađu prikaz u kopiji superblokada koji se nalazi u OP-u i evidentiraju se samo periodično. To vam omogućava da povećate performanse sistema, što više korisnika i procesa stalno ažurira datoteke. S druge strane, kada je superblok isključen, mora se napisati na disk koji vam ne dopušta da isključite računar jednostavnim isključivanjem snage. U suprotnom, uz sljedeće opterećenje, informacije zabilježene u superbloknu neće biti prikladne za stvarnu državu datotečnog sustava.

Superblock ima sljedeću strukturu

Naziv polja

Vrsta

Komentar

s_inodes_count

Ulong

Broj deskriptora indeksa u datotečnom sistemu

s_blocks_count.

Ulong

Broj blokova u datotečnom sustavu

s_r_blocks_count.

Ulong

Broj blokova rezervisanih za superuser

s_free_blocks_count.

Ulong

Broj slobodnih blokova

s_free_inodes_count.

Ulong

Brojač broja deskriptora besplatnih indeksa

s_first_data_block

Ulong

Prvi blok koji sadrži podatke. Ovisno o veličini jedinice, ovo polje može biti jednako 0 ili 1.

s_log_block_size.

Ulong

Indikator veličine logičke bloka: 0 \u003d 1 KB; 1 \u003d 2 KB; 2 \u003d 4 KB.

s_log_frag_size.

Dugo.

Indikator veličine fragmenta (čini se, koncept fragmenta se trenutno ne koristi)

s_blocks_per_group.

Ulong

Broj blokova u svakom bloku bloku

s_frags_per_group.

Ulong

Broj fragmenata u svakom bloku bloka

s_inodes_per_group

Ulong

Broj indeksnih deskriptora (inodi) u svakom bloku bloka

s_mtime.

Ulong

Vrijeme kada je datotečni sistem zadnji montiran.

s_wtime.

Ulong

Vrijeme kada je posljednji put zabilježen u datotečnom sustavu

s_mnt_count.

Ushort.

Metar sistema za ugradnju datoteka. Ako ovaj brojač dosegne vrijednost navedenu u sljedećem polju (s_max_mnt_count), datotečni sustav mora biti provjeren (to se radi prilikom ponovnog pokretanja), a brojač se resetira.

s_max_mnt_count.

Kratko

Broj koji određuje koliko puta se može montirati sistem datoteka

s_magic

Ushort.

"Čarobni broj" (0XEF53), što ukazuje da sistem datoteka pripada vrsti EX2FS

s_state.

Ushort.

Zastave koje ukazuju na trenutni status datotečnog sustava (bilo da je čisto (čisto), itd.)

s_errors.

Ushort.

Zastave koje navode postupke za razmjenu grešaka (što učiniti ako su pronađene pogreške).

s_pad.

Ushort.

Punjenje

s_lastcheck.

Ulong

Vrijeme zadnjeg provjere datoteka datoteka

s_Checkinterval

Ulong

Maksimalno vremensko razdoblje između provjera datotečnog sistema

s_creator_os.

Ulong

Navođenje na OS unosu u kojem se stvara datotečni sistem

s_rev_level.

Ulong

Sistem datoteke nivoa revizije.

s_rerved

Ulong

Ispunjavanje do 1024 bajta

Nakon superbloka, opis blok grupe (grupni deskriptori) nalazi se. Ovaj opis je niz koji ima sledeću strukturu.

Naziv polja

Vrsta

Svrha

bg_block_bitmap

Ulong

Adresa bloka koji sadrži blokove za bitne kartice (blok bitmap) ove grupe

bg_inode_bitmap

Ulong

Adresa bloka koji sadrži bitmap deskriptora indeksa (inode bitmap) ove grupe

bg_inode_table

Ulong

Adresa bloka koji sadrži tabelu deskriptora indeksa (inode tablica) ove grupe

bg_free_blocks_count.

Ushort.

Brojač broja slobodnih blokova u ovoj grupi

bg_free_inodes_count

Ushort.

Broj besplatnih deskriptora indeksa u ovoj grupi

bg_used_dirs_count

Ushort.

Broj deskriptora indeksa u ovoj grupi, koji su katalozi

bg_pad.

Ushort.

Punjenje

bg_reserved.

Ulong

Punjenje

Veličina opisa bloka bloka može se izračunati kao (size_group_blok_v_ext2 * broj_groups) / size_block (Ako je potrebno, zaokruženo).

Informacije koje se pohranjuju u grupnoj opisu koriste se za pronalaženje bitnih kartica blokova i deskriptora indeksa, kao i tablicu deskriptora indeksa. Ne zaboravite da su blokovi i blokovi blokova numerirani iz 1.

Blokiranje bit mape (blok bitmap) je struktura, od kojih svaki ukazuje da li je odgovarajući blok dodijeljen njemu. Ako je bit 1, blok je zauzet. Ova kartica služi za pretragu besplatnih blokova u slučajevima kada je potrebno označiti lokaciju ispod datoteke, bitmap blokova zauzima broj blokova jednakim (Broj_block_v_group / 8) / size_block (Ako je potrebno, zaokruženo).

Bitmap deskriptora indeksa vrši sličnu funkciju u odnosu na tablicu deskriptora indeksa: pokazuje koje su deskriptori zauzeti.

Sljedeće područje u strukturi blok strukture služi za pohranu tablice deskriptora datoteke indeksa. Struktura samog deskriptora indeksa smatra se u sljedećem pododjeljku.

Pa, na kraju, preostalo mjesto u blok grupi dodjeljuje se za pohranu zapravo datoteka.

Sistem podatakaExt. 2 karakteriše:

  • hijerarhijska struktura
  • dogovorena obrada nizova podataka,
  • dinamičko proširenje datoteke,
  • sigurnost informacija u datotekama
  • tumačenje perifernih uređaja (kao što su terminali i uređaji za terminal) kao datoteke.

Interni pogled na datoteke

Svaka datoteka u sistemu Ext 2 ima jedinstven indeks. Indeks sadrži informacije potrebne za bilo koji proces koji će se odnositi na datoteku. Procesi se odnose na datoteke koristeći jasno definirani skup sistemskih poziva i identificira datoteku niza datoteke koja djeluje kao kompozitno ime datoteke. Svako kompozitno ime definitivno određuje datoteku, tako da sistemski kernel pretvara ovo ime u indeks datoteke. Indeks uključuje tablicu adrese lokacije na disku. Budući da se svaki blok na disku upućuje na njegov broj, ova tablica pohranjuje skup brojeva blokova diska. Da bi se povećala fleksibilnost, kernel se pričvršćuje na datoteku jedan po jedan blok, omogućujući da se podaci o datoteci razbacuju preko cijelog datotečnog sustava. Ali ovaj shema postavljanja komplicira zadatak pretraživanja podataka. Tabela adresa sadrži popis blokova koji sadrže datoteku u vlasništvu datoteke, međutim, jednostavni proračuni pokazuju da je linearna lista blokova datoteka u indeksu teško kontrolirati. Da bi se mala indeksna struktura radila sa velikim datotekama, tablica za blok diskova dovodi se u red sa strukturom prikazanom na slici 1

Većina datoteka u sustavu Ext 2 ima veličinu koja ne prelazi 10 KB, pa čak i 1 KB! Od 10 KB datoteke nalazi se u direktnim adresima, do najvećeg dijela podataka pohranjenih u datotekama, pristup se može izvršiti u jednoj žalbi na disk. Zbog toga, za razliku od pristupa velikim datotekama, rad sa standardnim datotekama veličine se nastavlja brzo.

Deskriptori datoteke indeksa

Svaka datoteka na disku odgovara jednoj i samo jednoj ručici s indeksom koji je identificiran po svom nizu - indeks datoteke. To znači da je broj datoteka koji se mogu kreirati u datotečnom sustavu ograničen brojem indeksnih deskriptora, što je jednostavno definirano prilikom kreiranja datotečnog sustava ili se izračunava na osnovu fizičke jačine particije diska. Indijski descpport postoji na disku u statičkom obliku, a kernel ih čita u memoriji prije nego što započnete s njima na posao.

Ručka datoteke indeksa ima sljedeću strukturu:

Naziv polja

Vrsta

Opis

I_mode.

Ushort.

Unesite i pristupite prava na ovu datoteku.

I_uid

Ushort.

Identifikator vlasnika datoteke (vlasnik UID).

I_size.

Ulong

Veličina datoteke u bajtovima.

I_Atime.

Ulong

Vrijeme posljednjeg pristupa datoteci (vrijeme za pristup).

I_ctime.

Ulong

Vrijeme stvaranja datoteka.

I_mtime.

Ulong

Vrijeme zadnje izmjene datoteke.

I_dime.

Ulong

Vrijeme za brisanje datoteke.

I_gid

Ushort.

Grupni identifikator (GID).

I_links_count

Ushort.

Brojač odnosa (broj veze).

I_blocks.

Ulong

Broj blokova koje zauzima datoteku.

I_Flags.

Ulong

Datoteke zastava Flags datoteka)

I_rerved1

Ulong

Rezervirano za OS.

I_block

Ulong

Pokazivači na blokove u kojima se bilježe podaci o datoteci (primjer izravne i indirektne adrese na slici 1)

I_verzija.

Ulong

Datoteka verzija (za NFS)

I_file_acl

Ulong

ACL datoteka.

I_dir_acl

Ulong

ACL katalog

I_FADDR.

Ulong

Adresa fragmenata (adresa fragmenata)

I_frag

Uchar.

Broj fragmenata (fragment broj)

I_FSIZE.

Uchar.

Veličina fragmenata (veličina fragmenata)

I_pad1

Ushort.

Punjenje

I_rerved2.

Ulong

Rezervisan

Polje tipa i prava pristupa do datoteke je dvobojna riječ, svaki bit služi kao zastava koja označava omjer datoteke na određenu vrstu ili ugradnju jednog određenog prava na datoteku.

Identifikator

Vrijednost

Zastava za imenovanje (polja)

S_ifmt.

F000.

Maska tipa datoteke

S_ifsock

A000.

Nest domena (utičnica)

S_iflnk.

C000

S_ifreg.

8000

Normalna (redovna) datoteka

S_ifblk.

6000

Uređaj orijentiran na blok

S_ifdir.

4000

Katalog

S_ifchr

2000

Bajt-orijentiran (simboličan) uređaj

S_ififo.

1000

Imenovani kanal (FIFO)

S_isuid

0800

Suid - vlasnik pomaka bita

S_isgid.

0400

SGID - grupni bitovi smjene

S_isvtx

0200

Zaštita zadataka Bit (ljepljiv bit)

S_irwxu.

01C0.

Maska za prava vlasnika datoteke

S_irusr.

0100

Pravo na čitanje

S_iwusr.

0080

Pravo na snimanje

S_ixusr.

0040

Pravo na izvršenje

S_irwxg.

0038

Grupna maska \u200b\u200bgrupa

S_irgrp.

0020

Pravo na čitanje

S_iwgrp.

0010

Pravo na snimanje

S_ixgrp.

0008

Pravo na izvršenje

S_irwxo.

0007

Maska prava ostalih korisnika

S_iroth

0004

Pravo na čitanje

S_iwoth

0002

Pravo na snimanje

S_ixoth

0001

Pravo na izvršenje

Među deskriptorima indeksa postoji nekoliko deskriptora koji su rezervirani za posebne namjene i igraju posebnu ulogu u datotečnom sustavu. Ovo su sljedeći deskriptori

Identifikator

Vrijednost

Opis

Ext2_bad_ino.

Deskriptor indeksa u kojem su navedene adrese neispravnih blokova na disku (loši blokovi inode)

Ext2_root_ino

Deskriptor deskriptora korijenskog direktorija datotečnog sistema (korijenski inode)

Ext2_acl_idx_ino.

ACL inode

Ext2_acl_data_ino.

ACL inode

Ext2_boot_loader_ino.

Deskriptor indeksa utovarivača (Utovarivač za pokretanje)

Ext2_undel_dir_ino.

Nedelete direktorija inoda.

Ext2_first_ino.

Prvi deskriptor koji nije pro-indeks

Najvažnija ručka na ovoj listi je deskriptor korijenskog direktorija. Ovaj deskriptor ukazuje na korijenski direktorij, koji, kao i svi direktoriji, sastoji se od evidencija sljedeće strukture:

Naziv polja

Vrsta

Opis

Inode

Ulong

broj deskriptora datoteke (indeks)

rEC_LEN.

Ushort.

Dužina ovog zapisa

ime_Len.

Ushort.

Dužina imena datoteke

Ime.

Char.

Ime dokumenta

Odvojeni unos u katalogu ne može preći blok obrub (odnosno treba ga nalaziti u potpunosti unutar jednog bloka). Stoga, ako se sljedeći ulazak u potpunosti ne uklapa u ovaj blok, prenosi se na sljedeći blok, a prethodni zapis se naziva na način da se blokira na kraj.

Slika 1 blokovi izravne i indirektne adrese u indeksu

Slika 2 Količina datoteke u bajtovima u bloku veličine 1 Kb

Slika 3. Primjer indeksa diska

Na slici 3 prikazan je indeks diska određene datoteke. Ovaj indeks pripada uobičajenoj datoteci, čiji je vlasnik "MJB" i veličine od 6030 bajta. Sistem omogućava korisniku "MJB" da čita, piše i izvršava datoteku; Članovi grupe "OS" i svi ostali korisnici dopušteni su samo čitati ili izvršiti datoteku, ali ne i za snimanje podataka u njega. Posljednji put je datoteka pročitana 23. oktobra 1984. u 13:45, zapis je posljednji put donesena 22. oktobra 1984. u 10:30. Indeks se prošli put promijenio 23. oktobra 1984. u 13:30, iako u ovom trenutku nisu zabilježeni nikakvi podaci. Kernel kodira sve gore navedene podatke u indeksu. Obratite pažnju na razliku u evidenciji sadržaja indeksa i sadržaja datoteke. Sadržaj datoteke se mijenja samo kada se datoteka snimka. Sadržaj indeksa mijenja se i prilikom promjene sadržaja datoteke i prilikom promjene vlasnika datoteke, pristupa pravima i sjednicima pokazivača. Promjena sadržaja datoteke automatski uzrokuje korekciju indeksa, ali korekcija indeksa ne znači promjenu sadržaja datoteke.

Katalozi

Katalozi su datoteke iz kojih se gradi hijerarhijska struktura datotečnog sistema; Oni igraju važnu ulogu u pretvaranju naziva datoteke u indeksni broj. Direktor je datoteka koja sadrži skup zapisa koji se sastoji od indeksa i naziva datoteke uključene u direktorij. Kompozitno ime je niz simbola, ispunjenih praznim simbolom i nagnutom linijom dijeli ("/") u nekoliko komponenti. Svaka komponenta, pored potonjeg, mora biti ime direktorija, ali posljednja komponenta može biti datoteka koja nije direktorij. U V verziji UNIX sistema, dužina svake komponente je ograničena na 14 znakova; Stoga, zajedno sa 2 bajta, dodijeljen broju indeksa, veličina evidentiranja direktorija iznosi 16 bajta.

Pomak u bajtovima
Unutar kataloga

Indeks broj
(2 bajta)

Imedosije

1798

u tome

1276

fSCK.

cLRI

1268

motd.

1799

montirati

mnod.

2114

passwd.

1717

umount.

1851

kontrolni popis.

fsdbld

konfiguracija

1432

getty.

sudar.

mKFS.

Slika 4 Format kataloga / itd

Slika 4 prikazuje format direktorija "ETC". Svaki direktorij ima datoteke, kao što su imena naznačena tačka i dvije točke ("." I "..") i indeksni brojevi koji odgovaraju brojevima indeksa ovog kataloga i katalog roditelja. Indeksni broj za datoteku "." Imenik "/ ETC" ima adresu sa offset 0 i vrednost 83. Indeks broj za datoteku ".." ima adresu sa offset 16 od početka direktorija i vrednost 2. Upisi u direktoriju mogu biti prazni , a indeksni broj je 0., na primjer, snimanje putem adrese 224 u imeniku "/ ETC" je prazan, uprkos činjenici da je nekada sadržavao ulaznu točku za datoteku pod nazivom "Crash". MKFS program inicijalizira sistem datoteka na takav način da indeksni brojevi za datoteke "." I ".." Korijenski direktorij poduda se s brojem korijenskog indeksa datotečnog sustava.

Kernel pohranjuje podatke u direktoriju na isti način kao i u datoteci Normal Type koristeći indeksnu strukturu i blokove s nivoima izravne i indirektne adrese. Procesi mogu čitati podatke iz direktorija na isti način dok čitaju redovne datoteke, ali ekskluzivni unos pravo na direktorij rezerviran je od jezgre, što osigurava ispravnost strukture direktorija. Katalog prava pristupa imaju sljedeće značenje: Pravo na čitanje daje procese priliku za čitanje podataka iz kataloga; Pravo snimanja omogućava procesu da stvori nove unose u direktoriju ili izbrišući stare (koristeći CREATE, MKNOD, LINK i REZERVE SISTEMA), kao rezultat koji sadrži sadržaj kataloga; Pravo izvršenja omogućava postupak pretraživanja u imeniku putem naziva datoteke (jer "izvršava" katalog je besmislen).

Kada bilo koji program koristi put do datoteke, odgovarajući NOMEP indeksnog descipa sadrži u katalozima. Nakon što se naziv datoteke koristio u broju indeksa, ovaj descippot se stavlja u memoriju i zatim se koristi u naknadnom Zap.

Koncept UNIX datotečnog sistema uključuje koncept referentne. Jedan indeks descupboard može biti povezan s više imena datoteka. Deskpott pomaže poljem, Hinner, sa kojim se datotečnim saradnicima. Dodavanje veze je kreiranje unosa direktorija, gdje broj indeksa uklanjajući broj uklanjanja diskota i povećanje referentnog brojača u Descpport. Trebali biste izbrisati veze otrova smanjuje referentni brojač i briše desqpot, ako ovaj mjerač postane null.

Takve se veze nazivaju krutim i mogu se koristiti samo u jednom datotečnom sustavu (ne možete kreirati vezu za datotečni sistem iz flip datotečnog sustava). Štaviše, kruta veza može odrediti samo datoteku (stroga referenca na direktorij može se koristiti za fokusiranje u datotečnom sustavu).

U većini UNIX sistema postoji još jedna vrsta veze. Ove veze koje promoviraju samo naziv datoteke nazivaju se simbolično. Koristite lošijeg takvih veza, dok koristite put do datoteke u descapboard za indeks, otrov zamjenjuje naziv reference na softver za uklanjanje descita (tj. U nazivu odredišne \u200b\u200bdatoteke) i re-internetske staze put do datoteke. Budući da simbolička veza ne ukazuje na indeks Desqpot, moguće je kreirati veze do datoteka koje se nalaze u dezinfiniranom datotečnom sustavu. Ove veze mogu ukazivati \u200b\u200bna datoteku bilo koje vrste, čak i na nepostojećeg. Simbolične veze su tako korištene, jer nemaju te požare koje imaju tešku vezu. Međutim, oni zauzimaju malo jačine zvuka na disku, gdje su dozvoljeni indeksni descapboard i blokovi podataka. Njihova upotreba može se koristiti za načine koji se odnose na ispuštanje da bi se pustio na datoteku u datoteku u indeks descapboard, što je zbog činjenice da bi simbolizacija simboličkih veza otrova trebala ponovo unijeti put u datoteku.

Uređaji datoteka

U operativnim sistemima sličnim UNIX-u, pristup uređajima se vrši kroz posebne datoteke. Ova se datoteka ne odvija u datotečnom sustavu. To je samo pristupna tačka pogona uređaja.

Postoje dvije vrste datoteka uređaja: simbolički i blok. Kada koristite simbolički tip, moguće je razmjenjivati \u200b\u200bpodatke s uređajem samo u režimu znakova, dok datoteke uređaja Block tipa omogućavaju da zamijenite samo blokove koristeći tampon. Prilikom zahtjeva za i / o zahtjev za datoteku uređaja, ovaj upit se preusmjerava na pokretač odgovarajućeg uređaja. Svaka slična datoteka odgovara starijem broju koji definira vrstu uređaja i mlađe sobe koji određuje sam uređaj.

Dodatne funkcije Ext2fs.

Pored UNIX-a, ekstend2FS Samostalne funkcije, postoje neke dodatne funkcije koje obično ne podnose UNIX datotečni sustavi.

Datoteka ATPIBUTS omogućava vam da promijenite pritisak polarne pomoću datoteka sa datotekama. Možete instalirati na datoteku ili direktorij. U drugom slučaju, datoteke stvorene u ovom direktoriju naslijeđuju ove apoiquet.

U toku montizacije sistema mogu se instalirati neke određene karakteristike povezane s atikvotima datoteke. Opcija Mount omogućava Administraciji da odabere značajke kreiranja datoteka. U datotečnom sustavu sa značajkama BSD-a, datoteke se kreiraju istim identifikatorom GPPP-om, kao i katalog stanova. Sustav značajki V je nešto složenije. Ako je postavljen katalog Setgid Bit, primljene su datoteke koje su stvorili identifikator GPP-a ovog direktorija, a poddirektoriji naslijeđuju identifikacije GPPP-a i setgidnih bitova. U ovom slučaju, datoteke i katalozi kreiraju se sa osnovnim identifikatorom GPPP-a uzrokovanja ppcressa.

Sistem Ext2FS može koristiti sinhronu izmjenu podataka slična BSD sustavu. Opcija montira omogućava administraciji da odredi sve podatke (indeks descpliste, bita, indirektnih blokova i blokova direktorija) snimljeni na DC sinkrono u svojim izmjenama. To se može koristiti za postizanje visokih informativnih zapisa, ali također uzima u pogoršanje u svećeništvu. Zapravo, ova se značajka obično ne koristi, jer se pogoršanje širenja, to se može koristiti za znovanje korisnika korisnika, koji nisu označeni pomoću datotečnog sustava.

Ext2fs vam omogućava da kreirate datotečni sistem za odabir logičkog bloka. To može biti Pazmer 1024, 2048 ili 4096 bajtova. Upotreba velikih blokova za jačinu zvuka za I / O optianing (kao što je količina sisa na disk smanjuje), a samim tim u manju zaglavlje glave. S drugom stranom bloka, upotreba velikih blokova blokova do biranja diskovnog pansiona. Obično se zadnji blok datoteke ne koristi u potpunosti za polje informacija, pa, sa povećanjem zapremine bloka, jačinu pričvršćenog udarnog udara.

Ext2FS omogućava vam da koristite oskijene simboličke veze. Koristeći takve veze, blokovi se ne koriste blokovi podataka. Naziv odredišne \u200b\u200bdatoteke nije u bloku podataka, već u samu indeksa. Takva struktura omogućuje vam održavanje udarca diska i isparavati viski simboličke veze. Naravno, postoji cjevovod, desno pod descitom, lepršavim, tako da nije svaka veza ne može prepisati kao Hersal. Maksimalna dužina naziva datoteke u sekundarnom vezu ima 60 znakova. U bliskoj budućnosti planirano je da pauziraju ovu shemu za male količine glasnoće.

Ext2fs slijedi stanje datotečnog sistema. Loše koristi zasebno polje u suspenziji kako bi naznačio status datotečnog sustava. Ako je datotečni sustav montiran u čitanju / pisanje, njegovo stanje je instalirano kao "nije čisto". Ako se ponovo demontira ili montira u uživanju samo u čitanju, tada se njegovo stanje instalira u "čisto". Kada se u toku sustav sistema i datotečnog sistema u toku, ove se informacije koriste za rad potrebe za datotečnim sustavom. Loše takođe postavlja neke nestašne greške u ovom polju. Otvoreni otrov neusklađenosti, datotečni sistem označen je kao "pogrešan". Simulator datotečnog sustava testirat će ove informacije za sustav sustava, čak i ako je njegovo stanje zapravo "čisto".

Produljeno ignoriranje datotečnog sustava Testiranje datoteka Ponekad može biti ponekad s nekom dovoljnom, pa ext2fs uključuje dvije metode regulatornog sustava. Spearlock je promoviran brojačem sistema sistema. Ovaj brojač povećava svaki PA kada je sistem montiran u funkciji čitanja / pisanja. Ako njegova vrijednost dostigne maksimum (također je ubijen u suspenziji), tada se testiranje datotečnog sustava pokreće po blagajni, čak i ako je njegovo stanje "čisto". Potonji, prvi put i maksimalni inteligentni između prvog je također ubijen u suspenziji. Kada se maksimalna inteligencija postigne između PINK-ova, stanje datotečnog sistema je zanemareno, a kontrolna točka je pokrenuta.

Sistem Ext2FS pomaže se za sadašnjost. Tune2FS Bramma može se koristiti za promjenu:

  • action PRI greška raspakiranje. Otvoren za otrov koji nije usklađen, datotečni sistem označen je kao "pogrešan", a jedan od sljedećih koraka može se izvesti: provedba izvršenja, ažuriranje datotečnog sustava u korisnoj uživanju u samom stanju za čitanje da bi se izbjeglo Spojnica, sistem pozivanja sistema za datotečni sistem.
  • maksimalna postavljena vrijednost.
  • maksimalna inteligencija između igle.
  • broj logičkih blokova, vozenog za korijenski korisnik.

Opcije navedene montiranim mogu se koristiti i za promjenu radnji obveze otrova greške.

Korištenje ATPIBUT omogućava korisnicima da brišu sesledne datoteke. Možete izbrisati sličnu datoteku u blokovima koji se koriste za korištenje ove datoteke, evidentiraju nasumične informacije. To će se promovirati da bi se pristupio prvom preklopivanju ove datoteke u autoritetu i pomoć za biranje diska.

Ext2FS sistem nedavno je dodao nove vrste datoteka preuzetih iz 4,4 BSD datotečnog sistema. Datoteke tipa koji se mogu koristiti samo za čitanje: Niko ih ne mora promijeniti ili izbrisati. To se može koristiti za zaštitu važnih konfiguracijskih datoteka. Vrsta datoteke datoteka, ovo su datoteke koje se mogu pretvoriti u funkcije snimanja, a podaci se mogu dodati samo na kraj ove datoteke. Ova vrsta datoteka može se ukloniti ili trajati. Oni se mogu koristiti kao datoteke zateh ... koji mogu samo povećati zapreminu.

Optimizacija privatnosti

Ext2FS sistem olakšava mnoge funkcije koje optimiziraju njegov profil, što dovodi do povećanja opsega razmjene informacija o čitanju i pisanju datoteka.

Ext2FS aktivno koristi diskovni međuspremnik. Kada se jedinica mora pročitati, otrov prikazuje I / O OPT / izlaz neprozirnu. Dakle, siromašniji pokušaji osiguranja da je sljedeći blok, koji treba pročitati, već je zadužen za tampon diska. Takve se opreme obično vrše koristeći serijskim datotekama za čitanje.

Ext2FS sistem takođe pruža veliku količinu optimizacije informacija. Blokovi se koriste za kombiniranje odgovarajućih indeksnih decippeta i blokova podataka. Otrov uvijek pokušava stisnuti blokove podataka jedne datoteke u jednom GPUP-u, kao i njen desqpot. To se primjenjuje na smanjenju postupka glava zaglavlja i čitanje opisa i odgovarajući blokovi podataka koji odgovaraju njoj.

Ovi podaci zapise u datoteci, ext2fs će pojačati do 8 susjednih blokova pomoću novog bloka. Takva metoda omogućava postizanje visokog poraznosti snage sistema sistema. Također vam omogućava da koristite susjedne blokove za datoteke koje odgovara njihovom naknadnom čitanju.

Biblioteka ext2fs.

Da biste iskoristili upotrebu štetočina Ext2FS i kontrolu kontaktnih streata ovog datotečnog sistema, Libext2FS biblioteka je bila jednostavna. Ova biblioteka pruža funkcije koje se mogu koristiti za rad i promjenu ovih ext2 datotečnih sustava tako što se odnosi na fizički eliminiranje.

Most ext2fs komunalije (MKe2FS, E2FSCK, Tune2FS, DUPE2FS, DEBUGFS i DP.) Koristite ovu biblioteku. Snažno nadopunjuje izmjenu ovih komunalnih usluga, jer bi bilo kakve promjene uvođenja dodatnih funkcija Ext2FS datotečnom sustavu bi trebale biti same samo u biblioteci Ext.s2FS.

Budući da je internetska biblioteka Ext2FS-a dovoljno shiyky i pomoćna, ona se može lako napisati uz pomoć, što će se lako napisati, za rad koji se može koristiti datotečni sistem. Primjeni, biblioteka Ext2FS koristila je 4,4 BSD deponija i oporavak nekih komunalnih usluga. Ubijeno je da se vrlo malo promene prilagodeći tim upotrebi u Linuxu (bilo je potrebno zamijeniti nekoliko funkcija koje komuniciraju s datotečnim sustavom za pozivanje u biblioteku ext.s2FS-a).

Ext2FS biblioteka uključuje pristup operacijama nekoliko klasa. Pubertetska klasa je neprozirna povezana s datotečnim sustavom. Svaki šampom može otvoriti ili prebaciti datotečni sistem, čitati ili pisati bit blok, stvoriti novi sistem datoteka na disku. Postoje i funkcije liste loših blok sistema.

Druga klasa neprozirke koristiće kataloge. Propamma Korištenje ext2FS biblioteke može kreirati ili izviđati direktorij, kao i dodavanje ili brisanje zapisa u direktoriju. Postoje funkcije kao propelanti na putu za spuštanje indeksa do datoteke i stazu puta do datoteke prema navedenom kosiju.

Posljednja klasa neprozirke otvara se indeksnim descjepcima. Moguće je čitati tablicu Descpport, prebrojite ili zapišite descpotp, pp Pogledajte sve blokove navedenog desqpot-a. Moguće je nastaviti funkcije formiranja i puštanja blokova i descpports.

Odjeljak Ext2FS sistema

Za sistem Ext2FS korištena je snažna upotreba komplementarne upotrebe. Ove se koristi koriste za stvaranje, izmjenu i kopiranje bilo koje nedosljednosti u ext2FS datotečnim sustavima. MKe2FS program koristi se za instaliranje diskovne paste koja pruža prazan ext2fs sistem datoteka.

Aplikacija Tune2FS može se koristiti za snagu datotečnog sustava Papalmetal. CCC, može se promijeniti da bi se promijenila u pojave u nastajanju, maksimalni broj ugradnje sustava, maksimum namijenjene napretkom sustava i broju logičkih blokova za Korijenski korisnik.

Možda je najinteligentnija upotreba pojednostavljeni sistem datoteka. E2FSCK praktičan za potpunu nedosljednosti u datotečnom sustavu nakon inakacije primitka cijelog sustava. Početna verzija E2FSCK propamme temelji se na Linus Torvald FSCK datoteci za minix datotečni sistem. Međutim, trenutne verzije transmantnentnog perioda koristeći biblioteku ext2fs i brže su i mogu se izvršiti samo u većem broju grešaka u polju svog ispitivanja, prema pripremi s papiranjem Vexa.

Sramota E2FSCK proučavana je u takvom trenutku tako da je izvedena maksimalnom brzinom. Budući da se ubode datotečnog sustava naziva na traku za glavu diska, trebali biste optimizirati trepereći algoritme E2FSCK-a, da se postupak datotečnog sustava treba mnogo lakši koristiti. I, štoviše, namjerama indeksa Descpts i direktoriji bi se vršile u skladu s brojem bloka za smanjenje glave pogona diska.

U razbijanju E2FSCK-a, datotečni sustav pisteni su svi kostisioni indeksa i jedan descippiputi kao poseban element sistema. Takva prilika, ovim testiranjem ne odgovara objektima datotečnog sistema. Jedan od ciljeva takvih igle je unos postojanja vrste tipa datoteke, kao i prepisku svih blokova u descpeppetu sa blokovima sa postojećim brojevima. U sklopku se bitovi u funkciji ukazuju na upotrebu blokova i descplista.

Ako E2FSCK pronađe blokove podataka, od kojih se NOM-ovi sakupljaju u više od jednog descipa.

Najbliža pepinja zauzima najviše od svega, jer svi indeksni decippeti moraju se čitati u memoriju i nerazdvojni. Da bi se smanjio ulazno / izlazni pojači u narednim tijelima, sve potrebne informacije o pokretu ostaje u međuspremniku. Spasivo čitanje ove sheme je traženje svih blokova direktorija datotečnog sustava. Da biste dobili ove informacije, u drugim putovanjima čitaju se nizovi svih direktorija datotečnog sistema.

U drugom ukrasu, direktoriji se kucaju kao pojedinačni elementi datotečnog sustava. Blok svakog direktorija je odvojen, bez reference na blokove DPUCH direktorija. To omogućava E2FSCK da isključi sve blokove direktorija na broj blokova i kontaktiraju ih u vrijeme rada, takva vremena smanjujući pristup disku. Kataloški blokovi testirani su za prepisku stvarnost svojih zapisa i da doprinose referenci na descput s postojećim brojem (kao što je uključeno u razbijanju).

Za blok direktorija u svakom rasporedu direktorija postojaće postojanje unosa. ". i ".." i da je broj Descppet za snimanje. " Odgovara trenutnom direktoriju. (Broj zapisa za snimanje ".." ne testira se dok se ne okrene.)

Prilikom izvođenja druge fode, u međuspremnici se sprema info pokret koji odgovara katalogu stanova.

Treba napomenuti da će do kraja drugog Pchoda gotovo svi ulazno / izlazni pojači sa diskom biti pokriveni. Sve info pokretne pokret koji se pokušava tisućama četvrte i peto putovanja promovirati u sjećanje, međutim, preostale jame PPPSSOP-a i zauzimaju manje od 5-10% od ukupnog izvršenja E2FSCK-a.

Kataloške veze su uključene u sitnicu. E2FSCK vrši staze svakog direktorija da piju u krevet, koristeći informacije dobivene drugim fode. Evo zapisa ".." za svaki katalog. Svi katalozi identificirani nakon prvog i ne postoje veze nalaze se u / Lost + Fondec Directory.

U četvrtom, E2FSCK izlete, referentni šalteri za svaki indeks Descip sadrži ppplaying sve descpposs i odražava referentne brojile (ove informacije čuvaju se iz unakrsnog bušenja) sa unutrašnjim brojilom, koje su vrijednosti izračunate u Pod-drugi i trup. Sve neuspjele datoteke sa nultom referentnim brojilom također su postavljene u / Lost + Fondes Directory.

I na kraju, u petom, E2FSCK je prepiska svih informacija o podacima o datotečnom sustavu. Ovdje su bitovi blokova i descplistasta, koji su dobili u prvim komadima, s važećim vrijednostima i, ako je potrebno, informacije o disku na odgovarajućem mjestu.

Koristite korisnu upotrebu pogrešaka datotečnog sistema. Debugfs je moćna ispraznost koja vam omogućava da se spustite i postavite status datotečnog sistema. U suštini, to je interaktivni internet u biblioteku Ext2FS, odnosno tipične naredbe za pozivanje bibliotečkih funkcija.

Debugfs se mogu koristiti za rad interne sistemskih datoteka strogu, ostavljajući sistem za oporavak ili stvaranje uvjetnih testova za E2FSCK. Nažalost, ovaj Jammy može pobijediti u datotečnom sistemu ako ne znate kako ga koristiti. Uz ovu silu, dovoljno je uništiti datotečni sistem. Stoga Debugfs pretvara sistem datoteka u zadani položaj samo za čitanje. Da biste pristupili kovertu za čitanje / pisanje, trebali biste odrediti opciju -W.

Izračun privatnosti

Rezultati Bonnie testiranja su vidljivi iz sljedeće tablice:

Snimanje šećera (CB / s)

Unos zakrpa (CB / s)

Performanse (KB / s)

Čitanje šećera (CB / s)

Čitanje komada (KB / s)

BSD async.

BSD Sync.

Ext2 fs.

1237

1033

Xia FS.

Rezultati su dovoljno upoznati sa blok unosom / izlazom: Ext2FS sistem pobjeđuje na referentnom sustavu. To je zbog optimizacije uključene u aproksimaciju PA. Unos je takođe dovoljno brz, prema činjenici da je lutkar u Gupiene Puremu. Velika brzina čitanja povezana je sa činjenicom da su blokovi uvučeni u datoteku, tako da se glave za naslovu ne izvode između dva čitanja i optimizaciju prvog čitanja u potpunosti će u potpunosti u potpunosti.

Sa drugom stranom strane, FreeBSD sistem uključuje simboličan ulaz / izlaz referentne vrijednosti iznad. Možda je to zbog činjenice da FreeBSD i Linux koriste odgovarajuće biblioteke koje odgovaraju odgovarajućim C knjižbi C. Pored toga, u FreeBSD-u, optimizovanija simbolička biblioteka za čitanje i zato ovdje postoji malo bolje.

Rezultati testa Andrew.

Rezultati Andrew testa vidljivi su iz sljedeće tablice:

Papa 1 Izrada

Vodovod 2 kopiranje

Vodovod 3 status

Vodovod 4 bapti

Vodoinstalater 5 kompilacija

2203

7391

6319

17466

75314

BSD Sync.

2330

7732

6317

17499

75681

Ext2 fs.

Rezultati protekle dvije jame pokazuju da će Linux osvojiti asinhonalnu razmjenu podataka. Stvarate direktorij i datoteke, BSD sistem sinkrono bilježi Descpports i zapise direktorija. Postoji poziv da asinchpone subdepding za FreeBSD još nije u potpunosti implementiran.

U počast do vrijednosti Linuxa i BSD su vrlo slični. Dok je BSD gore opisan, dodavanje bukencije za imena datoteka u Linux VFS sustav postavljena je na ovu vrstu.

U petom i petom PPodu Linux će se brzo slobodno slobodno, uglavnom na korištenju kombinirane upotrebe buketa. Glasnoća pufera može uzeti više memorije i uzeti više memorije nego u FreeBSD-u, gdje se koristi fiksna jačina zvuka. Rezultati ext2fs i Xia FS odgovora pokazuju da se optimizacija naiđe u Ext2FS-u zaista korištena: počinitelj ovih sustava iznosi oko 5-10%.

Zaključak

Ext2 datotečni sistem je najbrže korišten u Linux korisnicima. Ona pruža UNIX standardne karakteristike i dodatne funkcije. Štaviše, zahvaljujući optimizaciji uključenoj u otrovu, pokazuje odlične rezultate odgovora.

Ext2FS sistem uključuje funkcije za dodavanje novih funkcija. Neki se brinu o korištenju PAS-a za pravi datotečni sustav: popis kontrole pristupa, odgovarajućeg Posix Standa, obnavljajući daljinske datoteke i komprimirati datoteke u dugoj prebivalištu.

Prvo, Ext2FS sistem integriran je u Linux otrov, a aktivno se kreće na radu operativnih sistema. Ext2FS je takođe važna komponenta MASIX operativnog sistema, koji se trenutno proučava jedna od autofa.