Ext2, ext3, ext4 failu sistēmu fiziskā organizācija. Kā piekļūt ext2, ext3, ext4 nodalījumiem no Windows? ext2 failu sistēma

Ja jums ir instalētas divas operētājsistēmas — Windows un Linux, tad noteikti vēlaties atrasties bezmaksas operētājsistēmas nodalījumos tieši no sistēmas Windows, nerestartējot datoru.

Diemžēl operētājsistēmā Windows netiek atbalstīti Linux OS nodalījumi. Bet velti. Man šķiet, ka tā varētu būt jauks žests Microsoft.

Problēmas būtība slēpjas faktā, ka Windows izmanto NTFS failu sistēmu, un Linux ir savs failu organizēšanas veids, paplašinātā failu sistēma, jaunākā versija kam ir sērijas numurs 4.

Linux lietotājiem ir draudzīgāks nekā tā komerciālā māsa: Linux pēc noklusējuma nodrošina Windows NTFS failu sistēmas atbalstu. Protams, jūs nevarēsit instalēt Linux NTFS nodalījumā, taču jūs varat lasīt un rakstīt datus no šāda nodalījuma.

Ext2 IFS

Ext2 IFS atbalsta Windows NT4.0/2000/XP/2003/Vista/2008 x86 un x64 versijas un ļauj skatīt un rakstīt Linux ext2 nodalījumus. Lietderība instalē sistēmas draiveri ext2fs.sys, kas tiek paplašināts Windows funkcijas un tajā ir iekļauts pilns ext2 atbalsts: ext2 nodalījumiem tiek piešķirti diska burti, un tajos esošie faili un mapes tiek parādīti visu lietojumprogrammu dialogos, piemēram, pārlūkprogrammā Explorer.

Ext2 FSD

Ext2 FSD ir bezmaksas draiveris Windows sistēmas(2K/XP/VISTA/7 x86 un x64 versijas). Tāpat kā iepriekšējā utilīta, kas savā būtībā ir arī draiveris, tā ietver pilnīgu ext2 failu sistēmas atbalstu operētājsistēmā Windows.

LTOOLS - utilītu komplekts komandrinda, kas ļauj nolasīt un rakstīt datus uz/no Linux ext2, ext3 un ReiserFS nodalījumiem (standarta Linux failu sistēmas) no DOS vai Windows datora.

Ir programmas versija ar grafisko apvalku (rakstīta Java valodā) - LTOOLSgui, kā arī versija ar grafisko čaulu, kas rakstīta valodā.

Ext2Read

Desertā, kā vienmēr, visgaršīgākais.

Ext2Read ir failu pārvaldnieka utilīta, kas ļauj gan skatīt ext2/ext3/ext4 nodalījumus, gan rakstīt tajos. Atbalsta LVM2 un, kas to atšķir no citām programmām šajā pārskatā, ext4 failu sistēmu. Ir iebūvēts atbalsts rekursīvai direktoriju kopēšanai.

Un šeit ir otrais deserts. Sākotnēji tika teikts, ka tas būtu labs solis no Microsoft, lai pēc noklusējuma iespējotu atbalstu Linux nodalījumiem sistēmā Windows.

Tomēr šis žests tika veikts Linux 20. gadadienā. Paskaties pats.

Tas ir viss. Paldies par uzmanību. Es cīnīšos ar maija kļūdām. Šopavasar tādu ir tik daudz. 🙂

Tagad mēs aprakstīsim populārāko Linux diska failu sistēmu ext2. Pirmajā Linux laidienā tika izmantota MINIX 1 failu sistēma, kas bija īsie vārdi faili un maksimālais faila lielums 64 MB. MINIX 1 failu sistēma galu galā tika aizstāta ar pirmo paplašināto failu sistēmu ext, kas ļāva izmantot garākus failu nosaukumus un lielākus failu izmērus. Pateicoties zemajai efektivitātei (veiktspējas ziņā), ext sistēma tika aizstāta ar tās pēcteci ext2, kas joprojām tiek plaši izmantota.

Diska nodalījums ar ext2 satur failu sistēmu, kas parādīta attēlā. 10.17 izkārtojums. 0. bloku neizmanto Linux sistēma, un tajā ir datora sāknēšanas kods. Pēc bloka 0 diska nodalījums tiek sadalīts bloku grupās (neņemot vērā diska cilindru robežas). Katra grupa tiek organizēta šādi.


Pirmais bloks ir superbloks, kurā tiek glabāta informācija par failu sistēmas izkārtojumu, ieskaitot i-mezglu skaitu, diska bloku skaitu, brīvo disku bloku saraksta sākumu (parasti vairāki simti elementu). Tam seko grupas deskriptors, kurā ir informācija par bitkartes atrašanās vietu, brīvo bloku un i-mezglu skaitu grupā un direktoriju skaitu grupā. Šī informācija ir svarīga, jo ext2 failu sistēma mēģina vienmērīgi sadalīt direktorijus pa visu disku.

Divas bitkartes izseko brīvos blokus un bezmaksas i-mezglus (tas ir arī mantots no MINIX 1 failu sistēmas un atšķir to no vairuma UNIX failu sistēmu, kurās tiek izmantots bezmaksas bloku saraksts). Katras bitkartes izmērs ir viens bloks. Izmantojot bloka izmēru 1 KB, šī shēma ierobežo bloku grupas lielumu līdz 8192 blokiem un 8192 i mezgliem. Pirmais skaitlis ir reāls ierobežojums, bet otrais praktiski nav. Izmantojot 4 KB blokus, skaitļi ir četras reizes lielāki.

Tad atrodas paši i-mezgli. Tie ir numurēti no 1 līdz noteiktam maksimumam. Katrs i-node ir 128 baiti liels un apraksta tieši vienu failu. I-node satur grāmatvedības informāciju (tostarp visu, ko atgriež stat izsaukums, kas to vienkārši paņem no i-node), kā arī pietiekami daudz informācijas, lai atrastu visus diska blokus, kuros ir faila dati.

I-mezgliem seko datu bloki. Šeit tiek glabāti visi faili un direktoriji. Ja fails vai direktorijs sastāv no vairākiem blokiem, šiem blokiem diskā nav jābūt blakus. Patiesībā bloki liels fails visticamāk, būs izkaisīti pa visu disku.

Direktorijiem atbilstošie i-mezgli ir izkaisīti pa visām disku bloku grupām. Ext2 mēģina ievietot parastos failus tajā pašā bloku grupā, kurā atrodas vecākdirektorijs, un datu failus tajā pašā blokā kā i-node. avota fails(ja ir pietiekami daudz vietas). Šī ideja tika aizgūta no Berkeley Fast File System (McKusick et al., 1984). Bitkartes tiek izmantotas, lai ātri pieņemtu lēmumus par piešķiršanu.

vietas jauniem failu sistēmas datiem.

Kad tiek piešķirti jauni failu bloki, ext2 arī iepriekš piešķir vairākus (astoņus) papildu blokus vienam un tam pašam failam (lai samazinātu faila sadrumstalotību turpmākās rakstīšanas dēļ). Šī shēma izplata failu sistēmu visā diskā. Viņai arī ir labs sniegums(sakarā ar tendenci uz blakus atrašanās vietu un samazinātu sadrumstalotību).

Lai piekļūtu failam, vispirms ir jāizmanto viens no Linux sistēmas izsaukumiem (piemēram, open), kas prasa norādīt ceļu uz failu. Šis ceļš tiek parsēts, un no tā tiek iegūti tā veidojošie direktoriji. Ja ir norādīts relatīvs ceļš, meklēšana sākas no pašreizējā procesa direktorija, pretējā gadījumā no saknes direktorija. Jebkurā gadījumā i-node pirmajam direktorijam ir viegli atrodams: procesa deskriptorā uz to ir rādītājs vai (saknes direktorija gadījumā) tas tiek saglabāts diskā noteiktā blokā.

Direktorija pieļauj failu nosaukumus līdz 255 rakstzīmēm (10.18. attēls). Katrs direktorijs sastāv no vairākiem diska blokiem (lai direktoriju varētu ierakstīt diskā atomiski). Direktorijā failu un direktoriju elementi ir nešķirotā secībā (katrs elements uzreiz seko iepriekšējam). Elementi nevar šķērsot bloku robežas, tāpēc katra diska bloka beigās parasti ir zināms daudzums neizmantotu baitu.


Katrs direktorija ieraksts attēlā. 10.18 sastāv no četriem fiksēta garuma laukiem un viena mainīga garuma lauka. Pirmais lauks ir i-node numurs, kas ir 19 milzīgajam failam, 42 apjomīgajam failam un 88 bigdir direktorijam. Tālāk nāk lauks rec_len, kas norāda visa direktorija ieraksta lielumu baitos (iespējams, ar papildu polsterējuma baitiem aiz nosaukuma). Šis lauks ir nepieciešams, lai atrastu nākamo ierakstu (gadījumā, ja faila nosaukums ir polsterēts ar nezināmu baitu skaitu). Attēlā šis lauks ir norādīts ar bultiņu. Pēc tam ir lauks, kura tips ir fails, direktorijs utt. Pēdējā fiksētā garuma laukā ir faila nosaukuma garums baitos (8, 10 un 6 šis piemērs). Visbeidzot, ir arī pats faila nosaukums, kas beidzas ar nulles baitu un papildināts ar 32 bitu robežu. Tam var sekot papildu polsterējuma baiti.

Uz att. 10.18.b parāda to pašu direktoriju pēc tam, kad ir noņemts elements apjomīgam. Viss, ko tas dara direktorijā, ir palielināt skaitu iepriekšējā kolosālā faila ieraksta lieluma laukā un direktorija ieraksta baitus attālais fails apjomīgs pārvērsties par vietturiem pirmajam ierakstam. Pēc tam šos baitus var izmantot rakstīšanai, veidojot jaunu failu.

Tā kā katalogi tiek meklēti lineāri, ieraksta meklēšana liela direktorija beigās var aizņemt ilgu laiku. Tāpēc sistēma uztur nesen piekļūto direktoriju kešatmiņu. Kešatmiņā tiek meklēts pēc faila nosaukuma, un, ja tas tiek atrasts, tad dārgā lineārā meklēšana vairs nav nepieciešama. Dentry objekts tiek ievadīts direktorija ieraksta kešatmiņā katram ceļa komponentam, un (izmantojot tā i-mezglu) direktorijā tiek meklēti nākamie ceļa ieraksti (līdz tiek atrasts faktiskais faila i-mezgls).

Piemēram, lai atrastu failu, kas norādīts ar absolūtu ceļu (piemēram, /usr/ast/file), ir jāveic šādas darbības. Pirmkārt, sistēma atrod saknes direktoriju, ko parasti izmanto i-node numurs 2 (īpaši, ja i-node numurs 1 ir rezervēts sliktiem blokiem). Tas ievieto atbilstošo ierakstu direktoriju ievades kešatmiņā (turpmākai saknes direktorija meklēšanai). Pēc tam saknes direktorijā tiek meklēta virkne "usr", lai iegūtu /usr direktorija i-node numuru (kas arī tiek ievadīts direktorija vienuma kešatmiņā). Pēc tam šis i-mezgls tiek nolasīts un no tā tiek izvilkti diska bloki, lai varētu lasīt /usr direktoriju un meklēt virkni "ast". Kad atbilstošs ieraksts ir atrasts, no tā var noteikt direktorijas /usr/ast i-node numuru. Ņemot vērā šo i-node numuru, to var nolasīt un atrast direktoriju blokus. Visbeidzot, mēs meklējam "failu" un atrodam tā i-node numuru. Tādējādi relatīvā ceļa izmantošana ir ne tikai ērtāka lietotājam, bet arī samazina sistēmas darba apjomu.

Ja fails ir, sistēma izgūst i-node numuru un izmanto to kā i-node tabulas indeksu (diskā), lai meklētu atbilstošo i-node un nolasītu to atmiņā. Šis i-node tiek ievietots i-node tabulā, kodola datu struktūrā, kurā ir visi pašlaik atvērto failu un direktoriju i-mezgli. Lai stat izsaukums darbotos, i-node elementa formātā ir jāsatur (vismaz) visi stat sistēmas izsaukuma atgrieztie lauki (sk. 10.10. tabulu). Tabulā. Attēlā 10-13 parādīti daži lauki i-node struktūrā, ko atbalsta Linux failu sistēma. Faktiskā i-node struktūra satur daudz vairāk lauku, jo tā pati struktūra tiek izmantota direktoriju, ierīču un citu īpašu failu attēlošanai. I-node struktūrā ir arī lauki, kas rezervēti turpmākai lietošanai. Vēsture ir parādījusi, ka neizmantotie biti ilgi nepaliek dīkstāvē.

Tagad redzēsim, kā sistēma nolasa failu. Atcerieties, ka tipisks bibliotēkas procedūras izsaukums, lai palaistu lasīšanas sistēmas zvanu, izskatās šādi:

n = lasīt(fd, buferis, nbaiti);


Kad kodols pārņem vadību, viss, ko tas var sākt, ir šie trīs parametri un informācija tā iekšējās tabulās (attiecībā uz lietotāju). Viens no šo iekšējo tabulu elementiem ir failu deskriptoru masīvs. To indeksē failu deskriptori, un katrā atvērtajā failā ir viens elements (līdz noteiktam maksimālajam skaitam, parasti 32 pēc noklusējuma).

Ideja ir sākt ar šo faila deskriptoru un beigt ar atbilstošo bnode. Apskatīsim vienu iespējamo shēmu: novietojiet rādītāju uz mezglu failu deskriptoru tabulā. Neskatoties uz vienkāršību šī metode(diemžēl) nedarbojas. Problēma ir tāda. Katram faila deskriptoram ir jābūt saistītam faila rādītājam, kas norāda faila baitu, ar kuru tiks sākta nākamā lasīšanas vai rakstīšanas darbība. Kur šis rādītājs jāglabā? Viena iespēja ir ievietot to mezglu tabulā. Taču šī pieeja nedarbosies, ja vienu un to pašu failu atver vairāki nesaistīti procesi vienlaikus, jo katram procesam ir jābūt savam rādītājam.

Otrs risinājums ir ievietot rādītāju faila deskriptoru tabulā. Katram procesam, kas atver failu, ir sava pozīcija failā. Diemžēl arī šī shēma nedarbojas, taču neveiksmes iemesls šajā gadījumā nav tik acīmredzams un ir saistīts ar failu koplietošanas būtību Linux sistēmā. Apsveriet čaulas skriptu 5, kas sastāv no divām komandām (p1 un p2), kas jāizpilda pēc kārtas. Ja skripts tiek izsaukts no komandrindas

tad ir sagaidāms, ka p1 ierakstīs savu izvadi failā x, un pēc tam arī p2 ierakstīs savu izvadi failā x, sākot no vietas, kur p1 pārtrauca.

Kad čaula sākas p1, fails x sākumā būs tukšs, tāpēc p1 vienkārši sāks rakstīt failā pozīcijā 0. Tomēr, kad p1 ir pabeigts, ir nepieciešams kāds mehānisms, lai nodrošinātu, ka p2 sākuma pozīciju redz nevis 0 (bet tieši tas notiek, ja faila pozīcija tiek saglabāta faila deskriptora tabulā), bet vērtība, pie kuras pi apstājās.

Kā tas tiek darīts, parādīts attēlā. 10.19. Viltība ir ieviest jaunu tabulu - atvērtā faila apraksta tabulu - starp faila deskriptora tabulu un i-node tabulu un saglabāt faila rādītāju (kā arī lasīšanas/rakstīšanas bitu). Attēlā vecāku process ir apvalks, un bērns vispirms ir pi process un pēc tam p2 process. Kad apvalks izveido pi procesu, tā lietotāja struktūra (ieskaitot faila deskriptora tabulu) ir precīza vienas un tās pašas čaulas struktūras kopija, tāpēc tajos abos ir norādes uz vienu un to pašu atvērtā faila apraksta tabulu. Kad pi process iziet, čaulas faila deskriptors turpina norādīt uz atvērto faila apraksta tabulu, kurā ir ietverta p1 procesa pozīcija failā. Kad apvalks tagad izveido p2 procesu, jaunais pakārtotais process automātiski pārmanto faila pozīciju, un ne jaunajam procesam, ne apvalkam nav jāzina šīs pozīcijas pašreizējā vērtība.


Ja kāds svešs process atver failu, tad tas saņems savu ierakstu atvērtajā faila apraksta tabulā ar savu pozīciju failā, kas ir tieši tas, kas nepieciešams. Tādējādi atvērtā faila apraksta tabulas mērķis ir ļaut vecākiem un pakārtotajiem procesiem failā koplietot vienu rādītāju, bet svešiem procesiem piešķirt personīgās norādes.

Tātad (atgriežoties pie lasīšanas veikšanas problēmas), mēs esam parādījuši, kā tiek noteikta pozīcija failā un i-mezgls. I-mezgls satur faila pirmo 12 bloku diska adreses. Ja pozīcija failā ietilpst tā pirmajos 12 blokos, tad tiek nolasīts vēlamais faila bloks un dati tiek kopēti lietotājam. Failiem, kas garāki par 12 blokiem, i-node satur viena netiešā bloka diska adresi (10.19. attēls). Šajā blokā ir ietvertas papildu diska bloku diska adreses. Piemēram, ja bloka izmērs ir 1 KB un diska adrese ir 4 baiti, tad vienā netiešajā blokā var saglabāt līdz 256 diska adresēm. Šī shēma ļauj atbalstīt failus līdz 268 KB.

Failu sistēma(angļu failu sistēma) - procedūra, kas nosaka datu organizēšanas, glabāšanas un nosaukšanas metodi informācijas nesējos IT aprīkojumā (izmantojot pārnēsājamās zibatmiņas kartes pārnēsājamās elektroniskās ierīcēs vairākkārtējai informācijas ierakstīšanai un uzglabāšanai pārnēsājamās elektroniskās ierīcēs: digitālajās kamerās, mobilajās ierīcēs). tālruņi utt. ) Un datortehnoloģijas. Tas nosaka satura formātu un informācijas fizisko glabāšanu, kas parasti tiek grupēta failu veidā. Konkrēta failu sistēma nosaka faila (mapes) nosaukuma lielumu, maksimālo iespējamo faila un nodalījuma lielumu un faila atribūtu kopu. Dažas failu sistēmas nodrošina tādus pakalpojumus kā piekļuves kontrole vai failu šifrēšana.

Failu sistēmas uzdevumi

Jebkuras failu sistēmas galvenās funkcijas ir vērstas uz šādu uzdevumu risināšanu:

failu nosaukumu piešķiršana;

programmas saskarne darbam ar lietojumprogrammu failiem;

failu sistēmas loģiskā modeļa samērošana ar datu noliktavas fizisko organizāciju;
failu sistēmas stabilitātes organizēšana strāvas padeves pārtraukumiem, aparatūras un programmatūras kļūdām;

Daudzlietotāju sistēmās parādās cits uzdevums: aizsargāt viena lietotāja failus no cita lietotāja nesankcionētas piekļuves, kā arī nodrošināt kopīgu darbu ar failiem, piemēram, kad failu atver kāds no lietotājiem, citiem tas pats. fails īslaicīgi būs pieejams tikai lasīšanas režīmā .

Failu sistēma ir galvenā struktūra, ko dators izmanto, lai sakārtotu informāciju cietajā diskā. Uzstādot jaunu cietais disks tai jābūt sadalītai un formatētai noteiktai failu sistēmai, pēc tam tajā var saglabāt datus un programmas. Sistēmai Windows ir trīs iespējamās failu sistēmas opcijas: NTFS, FAT32 un reti izmantotā mantotā FAT sistēma (pazīstama arī kā FAT16).

NTFS ir vēlamā failu sistēma šai Windows versijai. Tam ir daudz priekšrocību salīdzinājumā ar iepriekšējo FAT32 sistēmu; daži no tiem ir uzskaitīti zemāk.

Iespēja automātiski atgūties no dažām diska kļūdām (FAT32 nav šīs iespējas).
Uzlabots atbalsts lieliem cietajiem diskiem.
Augstāka drošības pakāpe. Varat izmantot atļaujas un šifrēšanu, lai neļautu lietotājiem piekļūt noteiktiem failiem.

Iepriekš tika izmantota FAT32 failu sistēma un reti izmantotā FAT sistēma Windows versijas, tostarp Windows 95, Windows 98 un Windows Millennium Edition. FAT32 failu sistēma nenodrošina tādu drošības līmeni, kādu nodrošina NTFS, tādēļ, ja datoram ir FAT32 formatēts nodalījums vai sējums, šajā nodalījumā esošie faili ir redzami ikvienam, kam ir piekļuve datoram. FAT32 failu sistēmai ir arī faila lieluma ierobežojumi. Šajā Windows versijā nav iespējams izveidot FAT32 nodalījumu, kas lielāks par 32 GB. Turklāt FAT32 nodalījumā nedrīkst būt fails, kas lielāks par 4 GB.

Galvenais FAT32 sistēmas izmantošanas iemesls būtu tas, ka dators varēs darbināt gan Windows 95, Windows 98 vai Windows Millennium Edition, gan arī šo Windows versiju (vairāku OS konfigurācija). Lai izveidotu šādu konfigurāciju, nodalījumā, kas formatēts ar FAT32 vai FAT, ir jāinstalē iepriekšējā operētājsistēmas versija, padarot to par primāro (primārajā nodalījumā var būt operētājsistēma). Citi nodalījumi, kuriem piekļūst no iepriekšējām Windows versijām, arī ir jāformatē kā FAT32. Vairāk agrīnās versijas Windows var piekļūt tikai NTFS tīkla nodalījumiem vai sējumiem. NTFS nodalījumi vietējā datorā nebūs pieejami.

TAUKI - plusi:

Lai darbotos efektīvi, ir nepieciešams nedaudz RAM.
Ātrs darbs ar maziem un vidējiem direktorijiem.
Disks vidēji veic mazākas galvas kustības (salīdzinājumā ar NTFS).
Efektīvs darbs ar lēniem diskiem.

TAUKI - mīnusi:

Katastrofāls veiktspējas zudums, palielinoties sadrumstalotībai, īpaši lieliem diskdziņiem (tikai FAT32).
Grūtības ar nejaušu piekļuvi lieliem (piemēram, 10% vai vairāk diska lieluma) failiem.
Ļoti lēns darbs ar direktorijiem, kas satur lielu skaitu failu.

NTFS plusi:

Failu sadrumstalotībai ir maz vai nav nekādas ietekmes uz pašu failu sistēmu — sadrumstalotas sistēmas veiktspēja tiek pasliktināta tikai attiecībā uz piekļuvi pašiem faila datiem.
Direktoriju struktūras sarežģītība un failu skaits vienā direktorijā arī nerada īpašus šķēršļus veiktspējai.
Ātra piekļuve patvaļīgam faila fragmentam (piemēram, lielu .wav failu rediģēšana).
Ļoti ātra piekļuve maziem failiem (vairāki simti baiti) - viss fails atrodas tajā pašā vietā, kur sistēmas dati (MFT ieraksts).

NTFS mīnusi:

Būtiskas sistēmas atmiņas prasības (64 MB ir absolūtais minimums, vairāk ir labāk).
Lēni diski un kontrolleri bez kopnes pārvaldīšanas ievērojami palēnina NTFS veiktspēju.
Darbs ar vidēja lieluma direktorijiem ir sarežģīts, jo tie gandrīz vienmēr ir sadrumstaloti.
Disks, kas ilgu laiku darbojas 80% - 90% pilnā stāvoklī, parādīs ārkārtīgi zemu veiktspēju.

Šādas failu sistēmas tiek uzskatītas par Linux “native” (tas ir, tās, kurās to var instalēt un no kurām to var sākt): ext2fs, ext3fs, ext4fs, ReiserFS, XFS, JFS. Tieši viņiem parasti tiek piedāvāta izvēle, instalējot lielāko daļu izplatījumu. Protams, ir veidi Linux instalācijas uz FAT/VFAT/FAT32 failu sistēmām, bet tas ir tikai tiem medusiem un monsieuriem, kas daudz ko saprot no perversijām un par tām nerunāšu.

Galvenie failu sistēmas izvēles kritēriji parasti ir uzticamība un ātrums. Dažos gadījumos ir jāņem vērā arī saderības faktors – šajā gadījumā tas nozīmē citu operētājsistēmu spēju piekļūt konkrētai failu sistēmai.
Sākšu ar ReiserFS - jo šīs piezīmes rakstīšanas iemesls bija jautājums: kas būtu jāuzskata par maziem failiem? Galu galā ir labi zināms, ka šīs failu sistēmas stiprā puse ir darba efektivitāte ar maziem failiem.

Tātad mazie faili ir faili, kas ir mazāki par failu sistēmas loģisko bloku, kas Linux vairumā gadījumu ir vienāds ar četriem kilobaitiem, lai gan to var iestatīt formatēšanas laikā noteiktās robežās (atkarībā no konkrētā FS). Jebkurā Unix līdzīgā operētājsistēmā ir neskaitāmi daudz šādu mazu failu. Tipisks piemērs ir faili, kas veido FreeBSD portu, Gentoo portu un līdzīgu portētu sistēmu koku.
Lielākajā daļā failu sistēmu šādiem mini failiem ir gan savs inode (informācijas mezgls, kas satur metainformāciju par failu), gan datu bloks, kas izraisa gan diska vietas patēriņu, gan lēnākas failu darbības. Jo īpaši tas ir iemesls FreeBSD failu sistēmas (gan vecās, UFS, gan jaunās UFS2) katastrofālajai pārdomātībai, strādājot ar savu portu sistēmu.

ReiserFS failu sistēmā šādos gadījumos atsevišķi bloki datiem netiek piešķirti - tai izdodas faila datus nospiest tieši savas inodes apgabalā. Sakarā ar to tiek ietaupīta vieta diskā, un veiktspēja palielinās - burtiski vairākas reizes salīdzinājumā ar visiem citiem FS.
Šī mazo ReiserFS failu apstrāde ir radījusi leģendu par tā neuzticamību. Patiešām, kad failu sistēma avarē (tas ir, apkalpošanas apgabali tiek iznīcināti), kopā ar to inodēm ievietotie dati pazūd kopā ar tiem - un neatgriezeniski. Savukārt tajās failu sistēmās, kurās inodes un datu bloki vienmēr ir telpiski atdalīti, pēdējos teorētiski var atjaunot. Tātad ext2/ext3 ir pat rīki, kas ļauj to izdarīt.

Tomēr, kā jebkura leģenda, arī šī rada tikai autentiskuma iespaidu. Pirmkārt, pastāvīgs datu zudums attiecas tikai uz ļoti maziem failiem. Lietotāju vidū tādu praktiski nav, un visi pārējie ir viegli atjaunojami no izplatīšanas komplekta.
Otrkārt, runājot par iespēju atgūt datus no blokiem, kuri ir zaudējuši saiti ar savām inodēm, es nejauši neizmantoju vārdu “teorētisks”. Jo praksē šī nodarbošanās ir ārkārtīgi laikietilpīga, nedodot garantētu rezultātu. Ikviens, kuram tas nācies darīt, piekritīs, ka tam var ļauties tikai pilnīgas bezcerības dēļ. Un tas attiecas uz visām Linux failu sistēmām. Tāpēc šo aspektu var neņemt vērā, izvēloties failu sistēmu.

Runājot par kopējo veiktspēju, ReiserFS noteikti ir ātrāks par visiem citiem žurnālā reģistrētajiem FS un dažos aspektos pat pārspēj ext2. Dažu izplatītu failu failu operāciju ātruma salīdzināšanas rezultātus var atrast šeit.
Bet ar ReiserFS saderību situācija ir nedaudz sliktāka. Piekļuve tai no Windows OS, cik man zināms, nav iespējama. Dažas BSD saimes operētājsistēmas (DragonFlyBSD, FreeBSD) atbalsta šo failu sistēmu, bet tikai lasīšanas režīmā. Pat varbūtība, ka patvaļīgam Linux LiveCD no pagājušā gada nesatur ReiserFS atbalstu, nav nulle.

Un šeit ir pienācis laiks atcerēties par ext3fs. Tās priekšrocība nepavisam nav lielāka uzticamība - tā ir tāda pati leģenda kā ReiserFS nestabilitāte. Esmu dzirdējis tikpat daudz par ext3fs avārijām, cik esmu dzirdējis par ReiserFS avārijām. Es pats nevarēju iznīcināt ne vienu, ne otru. Ja vien tas nedarbojās ar ext2 - bet pat tas bija ļoti sen, kodola 2.2 (vai pat 2.0) laikā.

Nē, galvenā ext3fs priekšrocība ir tā savietojamība – to var nolasīt jebkura Linux sistēma. Piemēram, atjaunojot no kāda sena LiveCD asistenta - gandrīz nemaz tik neticama situācija, nācās tajā iekļūt. Atkal, lielākā daļa BSD sistēmu viegli saprot ext3fs (kaut arī bez žurnāla). Operētājsistēmai Windows ir arī, cik es zinu, visu veidu draiveri un spraudņi parastajiem failu pārvaldniekiem (piemēram, Kopējais komandieris), kas nodrošina piekļuvi ext2fs/ext3fs nodalījumiem.

Veiktspējas ziņā ext3fs atstāj neviennozīmīgu iespaidu. Pirmkārt, tā veiktspēja ir ļoti atkarīga no reģistrēšanas režīma, no kuriem ir trīs: ar pilnu datu reģistrēšanu, daļēju datu reģistrēšanu un tikai metadatu reģistrēšanu. Katrā no režīmiem tas parāda atšķirīgu veiktspēju dažādi veidi failu operācijas. Tomēr jebkurā gadījumā sniegums nav rekords.

Taču, ja pirmajā vietā tiek likta prasība pēc ātruma, tad ext2fs ir ārpus konkurences – tomēr šajā gadījumā būs jāsamierinās ar mežizstrādes trūkumu vispār. Un līdz ar to ar ilgstošām failu sistēmas pārbaudēm nepareizas izslēgšanas gadījumā - un ar mūsdienu disku apjomu, tas var ievilkties ilgu laiku ...

Attiecībā uz XFS ir iespējams pateikt sekojošo. Saderības ziņā uz to attiecas viss, kas rakstīts priekš ReiserFS - turklāt līdz kādu laiku to neatbalstīja standarta Linux kodols. No veiktspējas viedokļa tas XFS arī nespīd, runājot kopumā apmēram tādā pašā līmenī kā ext3fs. Un attiecībā uz failu dzēšanas darbību tas parasti parāda nomācošu lēnumu.
Mana pieredze liecina, ka XFS izmantošana atmaksājas, strādājot ne tikai ar lieliem failiem, bet arī ļoti lieliem failiem – kas patiesībā ir tikai DVD attēli un video faili.

Es atgriežos pie uzticamības jautājuma. Banāla izslēgšana parasta lietotāja darba laikā, kā likums, nesāpīgi pārsūta visas žurnālizētās failu sistēmas (un neviena no tām nenodrošina diskā neierakstīto lietotāja operāciju drošību - glābjot slīkstošos un šeit paliek pašu slīcēju darbs) . Tiesa, jebkurai failu sistēmai jūs varat simulēt situāciju, kurā strāvas izslēgšana radīs vairāk vai mazāk nopietnu bojājumu. Tomēr reālajā dzīvē šādas situācijas ir maz ticamas. Un jūs varat tos pilnībā novērst, iegādājoties avotu nepārtrauktās barošanas avots- tas sniegs lielāku pārliecību par datu drošību nekā failu sistēmas veids. Jebkurā gadījumā tikai to regulāra dublēšana var būt garantija iznīcināto datu atjaunošanai ...

Es domāju, ka iepriekš minētā informācija ir pietiekama apzinātai izvēlei. Mana personīgā izvēle pēdējos gados ir bijusi ReiserFS. Reizēm sistēmās, kurās ir pamatoti visu iespējamo pārvietot ārpus saknes nodalījuma, saknes failu sistēmai ieteicams izmantot ext3fs, bet visam pārējam - ReiserFS.

Ja /boot direktorijam ir paredzēts atsevišķs nodalījums (un to iesaka izstrādātāji, izmantojot GRUB sāknēšanas ielādētāju), tad neviena cita failu sistēma, izņemot ext2fs, tam nav attaisnojama, nekāda reģistrēšana šeit nav jēga. Visbeidzot, ja tiek izveidots atsevišķs nodalījums visu veidu multivides materiāliem, tad varat padomāt par XFS.

Ja pieejam skaidrojumam metodiskāk

ext — Linux sākumā ext2 (paplašināta failu sistēma, 2. versija) bija dominējošā sistēma. Kopš 2002. gada tā ir aizstāta ar ext3 sistēmu, kas lielā mērā ir savietojama ar ext2, bet atbalsta arī žurnālu veidošanas funkcijas, un, strādājot ar kodola versiju 2.6 un augstāku, arī ACL. Maksimālais faila lielums ir 2 TB, maksimālais failu sistēmas izmērs ir 8 TB. 2008. gada beigās tika oficiāli izziņota ext4 versija, kas ir atpakaļgaitā saderīga ar ext3, taču daudzas funkcijas ir ieviestas efektīvāk nekā iepriekš. Turklāt maksimālais failu sistēmas lielums ir 1 EB (1 048 576 TB), un jūs varat paļauties, ka ar to kādu laiku pietiks. Par reiser — sistēma tika nosaukta tās dibinātāja Hansa Reisera vārdā, un tā bija pirmā sistēma ar reģistrēšanas funkcionalitāti, lai piekļūtu Linux kodolam datiem. Zp SUSE versija kādu laiku pat tika uzskatīta par standartu. Galvenās reiser priekšrocības salīdzinājumā ar ext3 ir ātrāks ātrums un labāks izvietojums, strādājot ar maziem failiem (un lielākā daļa failu failu sistēmā mēdz būt mazi). Tomēr laika gaitā reiseferu attīstība apstājās. Jau sen tika izziņota 4. versija, kas joprojām nav gatava, un 3. versijas atbalsts ir beidzies. Par xfs — xfs failu sistēma sākotnēji tika izstrādāta SGI darbstacijām, kas darbojas ar IRIX operētājsistēmu. Xfs ir īpaši piemērots darbam ar lieliem failiem, jo ​​īpaši tas ir ideāli piemērots darbam ar video straumēšanu. Sistēma atbalsta kvotas un paplašinātos atribūtus (ACL).
jfs

jfs — a66peBHaTypaJFS nozīmē "Journaled File System". Sākotnēji tas tika izstrādāts IBM un pēc tam pielāgots operētājsistēmai Linux. Jfs nekad nav guvis lielu atpazīstamību operētājsistēmā Linux, un pašlaik tā ir nožēlojama, zemāka par citām failu sistēmām.
brtfs

brtfs — ja tā ir vadošo kodola izstrādātāju griba, Linux brtfs failu sistēmai ir gaiša nākotne. Šī sistēma tika izstrādāta Oracle no paša sākuma. Tas ietver ierīces kartētāju un RAID atbalstu. Brtfs ir visvairāk līdzīgs Sun's ZFS. Viņai ļoti interesantas funkcijas ietver failu sistēmas pārbaudi, atrodoties ceļā, kā arī atbalstu SSD (saistvielu diskdziņi ir cietie diski pamatojoties uz zibatmiņu). Diemžēl pārskatāmā nākotnē darbs pie brtfs netiks pabeigts. Kopš Fedora versijas 11 ir iespēja instalēt brtfs, taču iesaku to izmantot tikai failu sistēmu izstrādātājiem!
Nav "ātrākās" vai "labākās" failu sistēmas — aplēse ir atkarīga no tā, kādam nolūkam sistēmu plānojat izmantot. Iesācējiem Linux lietotājiem, kuri strādā lokālā datorā, ieteicams strādāt ar ext3, bet servera administratoriem ar ext4. Protams, ext4 ir ātrāks par ext3, taču ext4 ir ievērojami sliktāka datu ticamība - jūs varat viegli zaudēt informāciju, ja sistēma pēkšņi izslēdzas.

Ja datorā instalējāt otru UNIX līdzīgu operētājsistēmu, datu apmaiņai (no vienas OS uz citu) noderēs tālāk norādītās failu sistēmas.

sysv — izmanto SCO, Xenix un Coherent OS.

ufs — izmanto FreeBSD, NetBSD, NextStep un SunOS. Linux var tikai nolasīt informāciju no šādām failu sistēmām, bet nevar veikt izmaiņas datos. Lai piekļūtu BSD segmentiem, papildus būs nepieciešams BSD disklabel paplašinājums. Līdzīgs paplašinājums pastāv SunOS nodalījumu tabulām.

ZFS ir salīdzinoši jauna sistēma, ko Sun izstrādājusi Solaris. Tā kā ZFS kods neatbilst GPL licencei, to nevar integrēt ar Linux kodolu. Šī iemesla dēļ Linux atbalsta šo failu sistēmu tikai netieši, izmantojot FUSE.
Windows, Mac OS X

Tālāk norādītās failu sistēmas būs noderīgas, apmainoties ar informāciju ar MS DOS, Windows, OS/2 un Macintosh.

vfat — izmanto operētājsistēmā Windows 9x/ME. Linux var nolasīt informāciju no šādiem nodalījumiem un veikt tajā izmaiņas. Vfat sistēmas draiveri ļauj strādāt ar vecām MS DOS failu sistēmām (8 + 3 rakstzīmes).

ntfs - sistēma tiek izmantota visās mūsdienu Windows versijās: otNT un jaunākās versijās. Linux var lasīt un modificēt savus failus.

hfs un hfsplus ir failu sistēmas, ko izmanto Apple datori. Linux var lasīt un modificēt savus failus.

Datu kompaktdiski un DVD parasti izmanto savas failu sistēmas.

iso9660 — CD-ROM failu sistēma ir aprakstīta ISO-9660 standartā, kas pieļauj tikai īsus failu nosaukumus. Garie nosaukumi dažādās operētājsistēmās tiek atbalstīti dažādos veidos, izmantojot dažādus paplašinājumus, kas nav saderīgi viens ar otru. Linux sistēma spēj darbināt gan UNIX kopīgo Rockridge paplašinājumu, gan Microsoft izstrādāto Joliet paplašinājumu.

udf - šis formāts (universālā diska formāts) parādījās un attīstījās kā ISO 9660 mantinieks.

Tīkla failu sistēmas

Failu sistēmām nav jābūt ieslēgtām lokālais disks- viņi
var izveidot savienojumu ar datoru un caur tīklu. Linux kodols atbalsta dažādas tīkla failu sistēmas, no kurām visbiežāk tiek izmantotas šādas.

smbfs/cifs - palīdz izveidot savienojumu tīkla direktoriji Windows vai Samba uz direktoriju koku.

nfs ir vissvarīgākā UNIX tīkla failu sistēma.

coda - šī sistēma ir ļoti līdzīga NFS. Tam ir daudz papildu funkciju, taču tas nav īpaši izplatīts.

ncpfs — darbojas NetWare kodola protokolā;oH, ko izmanto Novell Netware.

Virtuālās failu sistēmas

Operētājsistēmā Linux ir vairākas failu sistēmas, kas nav paredzētas datu glabāšanai cietajā diskā (vai citā datu nesējā), bet tikai informācijas apmaiņai starp kodolu un lietotāja programmām.
devpts — šī failu sistēma nodrošina piekļuvi pseidotermināļiem (īsumā PTY), izmantojot /dev/pts/* saskaņā ar UNIX-98 specifikāciju. (Pseidotermināļi emulē seriālo interfeisu. UNIX/Linux sistēmās šādas saskarnes izmanto termināļa emulatori, piemēram, xterm. Parasti tiek izmantotas tādas ierīces kā /dev/ttypn. Turpretim UNIX-98 specifikācija nosaka jaunas ierīces. Sīkāka informācija informācija tiek ziņots teksta terminālī H0WT0.)
proc un sysfs - proc failu sistēma tiek izmantota, lai parādītu pakalpojumu informāciju, kas saistīta ar kodola un procesu pārvaldību. Papildus tam sysfs failu sistēma veido attiecības starp kodolu un aparatūru. Abas failu sistēmas ir uzstādītas pozīcijās /proc un /sys.
tmpfs — šī sistēma ir balstīta uz koplietojamo atmiņu saskaņā ar System V. Tā parasti ir savienota pozīcijā /dev/shm un nodrošina efektīvu informācijas apmaiņu starp divām programmām. Dažos izplatījumos (piemēram, Ubuntu) direktorijas /var/run un /var/lock arī tiek izveidotas, izmantojot tmpfs failu sistēmu. Šajos direktorijos esošos failus izmanto daži tīkla dēmoni, lai saglabātu procesa identifikācijas numurus un failu piekļuves informāciju. Pateicoties tmpfs, šie dati tagad tiek atspoguļoti RAM. Metode garantē lielu ātrumu, kā arī to, ka pēc datora izslēgšanas direktorijās /var/run vai /var/lock nepaliks nekādi faili.

usbfs - usbfs failu sistēma, sākot ar kodola versiju 2.6 un jaunāku, sniedz informāciju par pievienotajām USB ierīcēm. Parasti tas ir integrēts proc failu sistēmā. Par USB ierīču atbalstu operētājsistēmā Linux.

Citas failu sistēmas

auto - patiesībā nav failu sistēmas ar šādu nosaukumu. Tomēr vārdu auto var izmantot failā /etc/fstab vai ar komandu mount, lai norādītu failu sistēmu. Šajā gadījumā Linux mēģinās atpazīt failu sistēmu pati. Šī metode darbojas ar lielāko daļu lielāko failu sistēmu.
autofs, autofs4

autofs, autofs4 arī nav failu sistēmas, bet gan kodola paplašinājumi, kas automātiski izpilda mount komandu atlasītajām failu sistēmām. Ja failu sistēma kādu laiku nav izmantota, tad tai automātiski tiek izpildīta komanda umount. Šī metode ir noderīga galvenokārt gadījumos, kad vienlaikus tiek aktīvi izmantoti tikai daži no daudzajiem NFS direktorijiem.

Lai veiktu šīs darbības, skripts /etc/init.d/ autofs automātiski izpilda automātiskās pievienošanas programmu sistēmas startēšanas laikā. Tas ir konfigurēts, izmantojot failu /etc/auto.master. Atbilstošās programmas tiek automātiski instalētas, piemēram, Red Hat un Fedora. Jebkurā gadījumā autofs tiek iespējots tikai pēc /etc/auto.master vai /etc/auto.misc konfigurēšanas.
cramfs un squashfs

cramfs un squashfs — Cram un Squash failu sistēmas ir tikai lasāmas. Tos izmanto, lai pēc iespējas vairāk "iesaiņotu" zibatmiņā vai ROM (tikai lasāmatmiņā) zip failus.

drošinātājs — FUSE nozīmē "Filesystem in Userspace" un ļauj izstrādāt un izmantot failu sistēmas draiverus ārpus kodola. Tāpēc FUSE vienmēr tiek izmantots ar ārēju failu sistēmas draiveri. FUSE darbojas īpaši ar NTFS draiveri ntfs-3g.

gfs un ocfs — Oracle Globālā failu sistēma un Oracle Cluster File System ļauj izveidot milzīgas tīkla failu sistēmas, kurām vienlaikus var piekļūt daudzi datori.

jffs un yaffs — žurnālu failu sistēma zibatmiņas datu nesējiem (Journaling flash fails Sistēma) un Alternatīvā Flash failu sistēma (vēl viena Flash failu sistēma) ir īpaši optimizētas darbam ar cietvielu diskdziņi un zibatmiņas datu nesēji. Izmantojot īpašus algoritmus, viņi cenšas vienmērīgi izmantot visas atmiņas šūnas (nodiluma izlīdzināšanas tehnoloģija), lai izvairītos no priekšlaicīgas sistēmas atteices.
cilpa

cilpa - izmanto, lai strādātu ar pseido ierīcēm. Cilpas ierīce ir adapteris, kas spēj piekļūt parastam failam tā, it kā tas būtu blokierīce. Pateicoties viņam, jūs varat ievietot jebkuru failu sistēmu jebkurā failā un pēc tam savienot to ar direktoriju koku, izmantojot mount. Par to atbildīgā kodola funkcija - pseidoierīču atbalsts - ir ieviesta cilpas modulī.

Ir dažādi veidi, kā izmantot pseidoierīces. Jo īpaši tos var izmantot, veidojot diskus RAM sākotnējai inicializēšanai (Sākotnējais RAM disks) GRUB vai LILO, ieviešot šifrētas failu sistēmas vai testējot CD ISO attēlus.

Krātuves datu nesēju failu sistēmas

Failu sistēmas
ISO 9660
Joliet ISO 9660 failu sistēmas paplašinājums.
Rock Ridge (RRIP, IEEE P1282) ir ISO 9660 failu sistēmas paplašinājums, kas paredzēts operētājsistēmās izmantoto failu atribūtu glabāšanai. POSIX sistēmas
Amiga Rock Ridge paplašinājumi
El Torito
Apple ISO9660 paplašinājumi
HFS, HFS+
Universālais diska formāts No operētājsistēmas neatkarīga failu sistēmas formāta specifikācija failu glabāšanai optiskajos datu nesējos. UDF ir ISO/IEC 13346 standarta ieviešana
Reinjē kalns

14 jūnijs

Failu sistēmas ext2, ext3, XFS, ReiserFS, NTFS

Failu sistēma- šī ir kārtība, kas nosaka datu organizēšanas, glabāšanas un nosaukšanas veidu uz jebkura elektroniskā datu nesēja datoros.

Failu sistēmu dažādība ir izskaidrojama ar to, ka katra tika izgudrota konkrētai uzdevumu pakotnei. Daži raksta mazus failus ļoti ātri (teiksim, līdz 1GB), bet tajā pašā laikā slikti mijiedarbojas ar lieliem failiem vai arī nedarbojas ar tiem vispār. Daži ir labi drošības ziņā, citi rakstīšanas / lasīšanas ātruma ziņā. Katrai failu sistēmai ir savi plusi, mīnusi, ievainojamības un atšķirīgas iezīmes.

IN Linux Visbiežāk izmantotie failu sistēmu veidi ir:

  1. ext2- apzīmē Otrā paplašinātā failu sistēma(otrā paplašinātā failu sistēma). Izstrādāja Remy Card 1993. gadā kā failu sistēma Linux kodolam, no 1993. līdz 2001. gadam tā bija galvenā failu sistēma Linux.
    Priekšrocība ir lielais lasīšanas/rakstīšanas ātrums.
    Galvenais sistēmas trūkums ext2 ir tas, ka tas netiek ierakstīts žurnālā, bet, pateicoties tam, tam ir lieliska veiktspēja ( mežizstrāde- tas ir reģistrēšanas process, kurā tiek saglabāts izmaiņu saraksts, kas palīdz saglabāt failu sistēmas integritāti dažādu sistēmas kļūmju laikā);
  2. ext3- apzīmē Trešā paplašinātā failu sistēma(paplašinātās failu sistēmas trešā versija). Izstrādāja Stīvens Tvīdijs 2001. gadā, tiek izmantots izplatīšanā līdz pat šai dienai Linux. Dzimis kā uzlabots ext2.
    Šīs sistēmas priekšrocība ir tā, ka tā tiek reģistrēta žurnālā, tas ir, tās uzticamība palielinās vairākas reizes salīdzinājumā ar ext2.
    Trūkums ir nedaudz zemāka veiktspēja un lasīšanas / rakstīšanas ātrums.
  3. XFS- Izstrādājis uzņēmums Silikona grafika 1993. gadā tika pievienots kodolam Linux kā failu sistēma 2002. gadā visai izplatīšanas grupai Linux, pašlaik izplatīšanā tiek izmantots kā “vietējais”. sarkana cepure.
    Priekšrocība ir metadatu reģistrēšanas klātbūtne, augsta darba stabilitāte, tiek atbalstīta I / O straumju sadale pa grupām, liels ātrums lasīt / rakstīt, ir iespējams defragmentēt pat ar uzstādītu nodalījumu, un jūs varat palielināt failu sistēmas izmēru. Visefektīvāk darbojas ar lieliem failiem.
    Trūkums ir tas, ka nodalījuma izmēru nevar samazināt, metadatu apstrāde nav tik ātra, ar maziem failiem tas darbojas ievērojami lēnāk nekā cita veida failu sistēmas.
  4. ReiserFS- izstrādājis uzņēmums namesys Hansa Reizera vadībā 2001. gadā. Izmanto tikai operētājsistēmās Linux. Tā bija pirmā žurnālu failu sistēma, kas tika pieņemta kodolā.
    Šīs failu sistēmas priekšrocība ir tā, ka tā darbojas ļoti ātri ar maziem failiem (lasīšanas/rakstīšanas ātrums ir lielāks nekā ģimenei ext4), atbalsta reģistrēšanu.
    Trūkums ir tāds, ka tā attīstība ir manāmi palēninājusies galvas Hansa Reizera aresta dēļ un nav fona šifrēšanas.
  5. NTFS- apzīmē jaunu tehnoloģiju failu sistēma(failu sistēma jauna tehnoloģija). Korporācija izstrādāja 1993. gada jūlijā Microsoft. To plaši izmanto dažādās operētājsistēmās, kā arī dažādos datu nesējos.
    Priekšrocība ir iebūvētā iespēja ierobežot piekļuvi datiem dažādiem lietotājiem, kā arī noteikt ierobežojumus maksimālajam diska vietas apjomam, žurnālu sistēmas izmantošanai un lielam mazu failu lasīšanas/rakstīšanas ātrumam.
    Trūkums ir tāds, ka stabilai darbībai nav nepieciešams mazs RAM Dators ar lieliem failiem ir lēns, ceļa garums līdz failiem ir ierobežots (32 767 unikoda rakstzīmes).

Tādā vienkāršā veidā mēs izdomājām "failu sistēmas ext2, ext3, XFS, ReiserFS, NTFS«!

VLADIMIRS MEŠKOVS

ext2 failu sistēmas arhitektūra

Rakstā aplūkota operētājsistēmas Linux failu sistēmas ext2 loģiskā struktūra.

Ext2 failu sistēmas pamatkomponenti

Tāpat kā jebkurā UNIX failu sistēmā, arī ext2 failu sistēmā var atšķirt šādus komponentus:

  • bloki un bloku grupas;
  • informācijas mezgls (informācijas mezgls);
  • superbloks.

Bloki un bloku grupas

Visa diska nodalījuma vieta ir sadalīta fiksēta izmēra blokos, sektora lieluma daudzkārtņi - 1024, 2048 un 4096 baiti. Bloka lielums tiek norādīts, veidojot failu sistēmu cietā diska nodalījumā. Mazāks bloka izmērs ietaupa vietu cietajā diskā, bet arī ierobežo maksimālo failu sistēmas lielumu. Visiem blokiem ir sērijas numuri. Lai samazinātu sadrumstalotību un cietā diska galvas kustību skaitu, lasot lielus datu masīvus, bloki tiek apvienoti grupās.

Informācijas mezgls

Failu sistēmas pamatjēdziens ir informācijas mezgls, informācijas mezgls vai inode. Šī ir īpaša struktūra, kas satur informāciju par faila atribūtiem un fizisko atrašanās vietu. Faila atribūti ir tā veids (parastais fails, direktorijs utt.), piekļuves tiesības tam, īpašnieka ID, izmērs, izveides laiks. Fiziskās atrašanās vietas informācija ir absolūtu bloku numuru secība, kas satur faila datus.

Superbloks

Superbloks ir galvenais ext2 failu sistēmas elements. Tajā ir šāda informācija par failu sistēmu (saraksts nav pilnīgs):

  • kopējais bloku un inožu skaits failu sistēmā;
  • brīvo bloku un inožu skaits failu sistēmā;
  • failu sistēmas bloka lielums;
  • bloku un inodu skaits grupā;
  • inode izmērs;
  • failu sistēmas identifikators;
  • pirmā datu bloka numurs.

Citiem vārdiem sakot, tas ir bloka numurs, kurā ir superbloks. Šis skaitlis vienmēr ir 0, ja failu sistēmas bloka izmērs ir lielāks par 1024 baitiem, un 1, ja bloka izmērs ir 1024 baiti.

Failu sistēmas veselība ir tieši atkarīga no superbloka integritātes. Operētājsistēma izveido vairākas superbloka rezerves kopijas, lai bojājumu gadījumā to varētu atjaunot. Galvenā kopija atrodas 1024 baitu nobīdē no tā nodalījuma sākuma, kurā tika izveidota failu sistēma (pirmie 1024 baiti ir rezervēti operētājsistēmas ielādētājam).

Agrīnās ext2 failu sistēmas versijas katras bloku grupas sākumā izveidoja superbloka kopijas. Tas izraisīja lielu diska vietas zudumu, tāpēc vēlāk superbloku dublējumkopiju skaits tika samazināts, un to izvietošanai tika piešķirtas bloku grupas 0, 1, 3, 5 un 7.

Bloku grupas formāts

Vispārināts strukturālā shēma ext2 failu sistēma ir parādīta attēlā. viens.

Gandrīz visām bloku grupām ir vienāds formāts. Katrā grupā papildus informācijas blokiem bitkartes veidā tiek glabāta informācija par grupas bloku un inodu noslogojumu. Bloku grupa 0 ietver arī superbloku un grupas deskriptora tabulu, par ko mēs runāsim tālāk.

Bloku aizņemtā bitkarte parasti atrodas grupas pirmajā blokā. Ja grupā ir rezerves superbloks, bitkarte atrodas grupas otrajā blokā. Bitkartes izmērs ir viens bloks. Katrs šīs kartes bits norāda bloka stāvokli. Ja bits ir iestatīts (1), tad bloks ir aizņemts; ja tas ir atiestatīts (0), bloks ir brīvs. Pirmais grupas bloks atbilst kartes nulles bitam, otrais bloks atbilst pirmajam bitam utt.

Inodes, kas atrodas vienā grupā, tiek apkopotas tabulā. Grupas inode aizņemtības bitkartē katrs bits apzīmē elementa stāvokli grupas inode tabulā.

Katra bloku grupa ir aprakstīta ar bloku grupas deskriptoru. Grupas deskriptors ir struktūra, kas satur informāciju par bloka aizņemtās bitkartes, aizņemtās inodes bitkartes un atbilstošās grupas inode tabulas adresēm. Visi grupu deskriptori tiek apkopoti grupas deskriptoru tabulā, kas tiek saglabāta bloku grupā 0. Tāpat kā superblokam, operētājsistēma izveido dublējumkopijas grupu deskriptoru tabulas.

Failu lasīšanas algoritms

Katrai inodei, tāpat kā blokam, ir kārtas numurs, kas ir unikāls failu sistēmā un satur informāciju tikai par vienu failu. Tādējādi, lai piekļūtu faila saturam, ir jāzina tam atbilstošās inodes kārtas numurs.

Kā minēts iepriekš, informācija par faila fizisko atrašanās vietu ir ietverta inode. Šī informācija ir 32 bitu bloku numuru secība, kas satur faila datus (1. attēls). Pirmie 12 numuri ir tiešas saites uz informācijas blokiem (tiešo bloku numurs). 13. numurs ir netiešs bloka numurs. Tajā ir bloka adrese, kurā tiek saglabātas informācijas bloku adreses. 14. numurs ir dubultā netiešā saite (dubulto bloku numurs), 15. numurs ir trīskārša netiešā saite (trīskāršā bloka numurs).

Faila nosaukums nav daļa no inode, kartēšana starp failu nosaukumiem un inode kārtas numuriem tiek veikta, izmantojot direktorijus.

Katalogi

Faili UNIX un POSIX sistēmās tiek glabāti kokam līdzīgā hierarhiskā failu sistēmā. Failu sistēmas sakne ir saknes direktorijs, kas apzīmēts ar simbolu "/". Katrs starpmezgls failu sistēmas kokā ir direktorijs. Failu sistēmas koka lapu mezgli ir tukši direktoriji vai faili. Faila absolūtais ceļa nosaukums sastāv no visu direktoriju nosaukumiem, kas ved uz norādīto failu, sākot no saknes direktorija. Piemēram, ceļa nosaukums /home/test.file nozīmē, ka fails test.file atrodas mājas direktorijā, kas savukārt atrodas saknes "/" direktorijā.

Direktoriju, tāpat kā failu, apraksta ar inode. Direktorija saturs ir ierakstu masīvs, katrs satur informāciju par failu, kas atrodas pašreizējā direktorijā.

Direktorija ierakstam ir šāds formāts:

  • faila inodes numurs;
  • ieraksta garums baitos;
  • Faila nosaukums;
  • faila nosaukuma garums.

Faila inodes numura meklēšana vienmēr sākas saknes direktorijā. Piemēram, lai iegūtu saknes direktorijā esošā faila inodes numuru, operētājsistēmai ir jāiegūst saknes direktorija saturs, jāatrod tajā ieraksts ar šī faila nosaukumu un no šī ieraksta jāizvelk faila inodes numurs. .

Pirmās dažas inodes ir rezervētas failu sistēmā, un tās ir norādītas galvenes failā:

*Īpaši inodes numuri

#define EXT2_BAD_INO 1 /* Slikti bloki inode */

#define EXT2_ROOT_IN 2 /* Saknes 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 /* Atsaukt direktorija inode dzēšanu */

Inode numurs 2 (saknes inode) ir rezervēts saknes direktorija ierakstam. Šī inode atrodas bloku grupā 0 un ir otrā pozīcija grupas inode tabulā. Pirmās nerezervētās inodes numurs tiek saglabāts superblokā.

Noteicot faila inode kārtas numuru, kodols aprēķina grupas numuru, kurā atrodas šī inode, un tās pozīciju grupas inode tabulā. Lasot no šīs inode pozīcijas, operētājsistēma izpaužas pilna informācija par failu, tostarp to bloku adreses, kuros tiek glabāts faila saturs.

Bloku grupas numuru, kurā atrodas inode, aprēķina pēc formulas:

grupa = (inode_num - 1) / inodes_per_group

kur:

  • grupai– vēlamā bloku grupas numurs;
  • inode_num– failu definējošās inodes kārtas numurs;
  • inodes_per_group– inodu skaits grupā (šī informācija ir superblokā).

Inodes pozīciju grupas inodes tabulā nosaka pēc formulas:

indekss = (inode_num - 1) % inodes_per_groupe

kur indekss ir inodes pozīcija tabulā.

Apsveriet piemēru, kā iegūt saknes direktorijā esošā faila test.file saturu. Lai lasītu failu /test.file, jums ir nepieciešams:

  • saknes direktorija ierakstu masīvā atrodiet ierakstu par šo failu;
  • izvelciet faila inodes kārtas numuru, aprēķiniet grupas numuru, kurā atrodas šī inode;
  • izvilkt grupas inode tabulas adresi no grupas deskriptora;
  • aprēķiniet inodes pozīciju šajā tabulā;
  • lasīt faila inode;
  • izvilkt no inodes informācijas bloku adreses un nolasīt šajos blokos ietverto informāciju.

Uz att. 2. attēlā ir detalizēti parādītas /test.file lasīšanas darbības.

    1.–6. darbība — saknes direktorija lasīšana:

  1. No bloku grupas 0 tiek nolasīta grupas deskriptora tabula.
  2. Bloku grupas deskriptors 0 tiek izgūts no grupas deskriptoru tabulas un no tā tiek nolasīta 0 grupas inode tabulas adrese.
  3. Inode tabula tiek nolasīta no bloku grupas 0.
  4. Saknes direktorija inode ir fiksēta uz 2, tāpēc otrais elements tiek nolasīts no grupas 0 inode tabulas, kurā ir saknes direktorija saturu saturošā bloka adrese. Pieņemsim, ka šis bloks atrodas bloku grupā A.
  5. No bloku grupas A tiek nolasīts bloks, kurā ir saknes direktorija ieraksti.
  6. Tiek meklēts ieraksts ar nosaukumu "test.file". Ja šāds ieraksts tiek atrasts, no tā tiek izgūts "test.file" inoda numurs.
  7. Norādot inodes numuru, jūs varat piekļūt informācijas bloki fails (7.–11. darbība):

  8. Tiek aprēķināts grupas numurs, kurā atrodas dotā inode, un tās pozīcija grupas inode tabulā (pieņemot, ka grupas numurs ir B un vieta tabulā ir X).
  9. No grupas deskriptoru tabulas mēs izgūstam bloku grupas B deskriptoru un no tā nolasām šīs bloku grupas inode tabulas adresi.
  10. Inode tabula tiek nolasīta no bloku grupas B.
  11. No bloku grupas B inode tabulas tiek nolasīta inode pozīcijā X.
  12. No lasīšanas inode tiek izvilktas bloku adreses ar faila /test.file saturu un informācija tiek nolasīta no bloka ar norādīto adresi.

Failu lasīšanas algoritma programmatūras realizācija

Sākotnējie dati: ir cietā diska nodalījums, kurā ir izveidota ext2 failu sistēma. Šis nodalījums atbilst /dev/hda3 ierīces failam. Sākuma apakšdirektorijs ir izveidots nodalījuma saknes direktorijā, un tajā ir fails test.file ar šādu saturu:

Vai citrusaugļi dzīvotu dienvidu biezokņos?

Jā, bet viltota kopija!

1234567890-=

Nedomājiet par sliktu, tas nav muļķības, bet gan pārbaudes vingrinājums no bijušās PSRS signālkaraspēka telegrāfistu apmācības kursa!

Uzmanību! Jāņem vērā svarīgs punkts. Izveidotais fails netiks uzreiz ierakstīts diskā, bet vispirms nonāks diska buferī. Mēģinājums nekavējoties iegūt faila saturu, izmantojot iepriekš minēto algoritmu, neko nedos, jo diskā par šo failu fiziski nav informācijas. Jums ir "jāpiespiež" sistēma ierakstīt diska buferi diskā. Vienkāršākais veids, kā to izdarīt, ir veikt atsāknēšanas darbību. Tāpēc pēc faila izveides restartējiet sistēmu.

Mūsu uzdevums ir izmantot /dev/hda3 ierīces failu, lai lasītu failu /home/test.file, tieši piekļūstot tā informācijas blokiem.

Apsveriet tā moduļa programmatūras ieviešanu, kas veic šo darbību.

Galvenes faili:

#iekļauts

#iekļauts

#iekļauts

#iekļauts

#iekļauts

#iekļauts

Galvenes failā ir noteikti strukturālie tipi, kas apraksta ext2 failu sistēmas galvenās sastāvdaļas - superbloku, bloku grupas deskriptoru, informācijas mezglu, direktorija ierakstu.

Īsi apskatīsim laukus, kas ir iekļauti katrā no šīm struktūrām:

  1. Superbloka struktūras struktūra ext2_super_block:
    • __u32 s_inodes_count ir kopējais inodes skaits failu sistēmā;
    • __u32 s_blocks_count ir kopējais bloku skaits failu sistēmā;
    • __u32 s_free_blocks_count– brīvo bloku skaits;
    • __u32 s_free_inodes_count– brīvo inožu skaits;
    • __u32 s_first_data_block– pirmā datu bloka numurs (bloka numurs, kurā atrodas superbloks);
    • __u32 s_log_block_size- Šo vērtību izmanto bloka izmēra aprēķināšanai. Bloka izmēru nosaka pēc formulas: bloka izmērs = 1024<< s_log_block_size;
    • __u32 s_blocks_per_group– bloku skaits grupā;
    • __u32 s_inodes_per_group– inodu skaits grupā;
    • __u16 s_magic– ext2 failu sistēmas identifikators (paraksts 0xEF53);
    • __u16 s_inode_size– informācijas mezgla (inode) lielums;
    • __u32s_first_ino ir pirmās nerezervētās inodes numurs.
  2. Bloķēt grupas deskriptora struktūra struct ext2_group_desc:
    • __u32 bg_block_bitmap– grupu bloka aizņemtības bitkarte;
    • __u32 bg_inode_bitmap– grupas inode aizņemta bitkarte;
    • __u32 bg_inode_table– grupas inode tabulas adrese.
  3. Informācijas mezgla struktūra struct ext2_inode:
    • __u16 i_mode - faila tips un piekļuves tiesības tam. Faila tipu nosaka šī lauka 12.–15. biti:
      • 0xA000– simboliska saite;
      • 0x8000– parastais fails;
      • 0x6000– bloķēt ierīces failu;
      • 0x4000- direktorijs;
      • 0x2000– rakstzīmju ierīces fails;
      • 0x1000- FIFO kanāls.
    • __u32 i_size– izmērs baitos;
    • __u32 i_atime– laiks, kad pēdējā piekļuve failam;
    • __u32 i_ctime– faila izveides laiks;
    • __u32 i_mtime– pēdējās modifikācijas laiks;
    • __u32 i_blocks– faila aizņemto bloku skaits;
    • __u32 i_block– informācijas bloku adreses (ieskaitot visas netiešās atsauces).
  4. EXT2_N_BLOCKS vērtība ir definēta failā:

    * Konstantes attiecībā pret datu blokiem

    #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. Direktorija ieraksta struktūra struct ext2_dir_entry_2:
  6. #define EXT2_NAME_LEN 255

  • __u32 inode– faila inodes numurs;
  • __u16 rec_len– direktorijas ieraksta garums;
  • __u8 name_len– faila nosaukuma garums;
  • tēla vārds Faila nosaukums.

Noteiksim tā nodalījuma nosaukumu, kurā tika izveidota failu sistēma, globālās struktūras un mainīgos.

#define PART_NAME "/dev/hda3"

struct ext2_super_block sb;

/* buferis grupas deskriptora tabulai */

neparakstīts char buff_grp;

unsigned char buff; /* informācijas buferis */

int indev; /* ierīces faila deskriptors */

int BLKSIZE; /* failu sistēmas bloka lielums */

Definēsim dažas funkcijas, kas mums jādarbojas:

Superblock lasīšanas funkcija:

nevar read_sb()

memset(&sb,0,1024);

Mēs pārbīdām 1024 baitus no sadaļas sākuma un nolasām superbloku struct ext2_super_block sb struktūrā:

If(lseek(indev,1024,0)< 0) {

kļūda("lseek");

Iziet(-1);

Ja(lasīt(indev,(char *)&sb,sizeof(sb))< 0) {

kļūda ("lasīt");

Iziet(-1);

Failu sistēmas ID pārbaude:

If(sb.s_magic != EXT2_SUPER_MAGIC) (

Printf ("Nezināms failu sistēmas tips!");

Iziet(-1);

EXT2_SUPER_MAGIC vērtība ir definēta galvenes failā.

Mēs parādām informāciju par failu sistēmu, kas atrodas superblokā:

printf(" Superbloka informācija ----------- ");

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

Printf("Bloku skaits - %u ",sb.s_bloku_skaits);

Printf("Bloka izmērs - %u ",1024<< sb.s_log_block_size);

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

Printf("Maģija - 0x%X ",sb.s_magic);

Printf("Inode izmērs - %d ",sb.s_inode_size);

Printf("Inodes vienai grupai - %u ",sb.s_inodes_per_group);

Printf("Bloki grupā - %u ",sb.s_blocks_per_group);

Printf("Pirmais datu bloks - %u ",sb.s_first_data_block);

atgriešanās;

Grupas deskriptora tabulas lasīšanas funkcija:

Void read_gdt()

Aprēķiniet failu sistēmas bloka lielumu:

BLKSIZE = 1024<< sb.s_log_block_size

Grupas deskriptora tabula atrodas blokā tieši aiz pirmā datu bloka (aiz superbloka).

Lasot tabulu:

If(lseek(indev, (sb.s_first_data_block + 1) * BLKSIZE, 0)< 0) {

kļūda("lseek");

Iziet(-1);

If(lasīt(indev,buff_grp,BLKSSIZE)< 0) {

kļūda ("lasīt");

Iziet(-1);

atgriešanās;

Funkcija, lai iegūtu inodes saturu pēc tā numura:

void get_inode(int inode_num, struct ext2_inode *in)

Funkcijas ievades parametri ir inodes numurs un struktūra ext2_inode.

Struktūra ext2_group_desc gd;

U64 grupa, indekss, poz.;

Mēs aprēķinām bloku grupas skaitu, kurā atrodas inode ar kārtas numuru inode_num:

Grupa = (inode_num - 1) / sb.s_inodes_per_group;

Izņemiet grupas deskriptoru no grupas deskriptoru tabulas un kopējiet to uz struct ext2_group_desc gd struktūru:

Memset((tukšums *)&gd, 0, sizeof(gd));

Memcpy((void *)&gd, buff_grp + (grupa * (sizeof(gd))), sizeof(gd));

Mēs aprēķinām inode pozīciju ar kārtas numuru inode_num grupas inode tabulā un nolasām šo inode struct ext2_inode struktūrā:

indekss = (inode_num - 1) % sb.s_inodes_per_group;

Pos = ((__u64)gd.bg_inode_table) * BLKSIZE + (indekss * sb.s_inode_size);

Preread64(indev, in, sb.s_inode_size, poz);

atgriešanās;

Datu bloka lasīšanas funkcija:

void read_iblock(struct ext2_inode *in, int blk_num)

U64pos;

Funkcijas ievades parametri ir inodes struktūra un bloka numurs (kas nozīmē numuru no adrešu bloku secības, kas atrodas inodē).

Mēs aprēķinām nodalījuma informācijas bloka nobīdi un nolasām šo bloku globālajā bufera buferī:

Pos = ((__u64)in->i_block) * BLKSIZE;

Preread64 (indev, buff, BLKSIZE, poz);

atgriešanās;

Funkcija saknes direktorija satura iegūšanai:

Void get_root_dentry()

Struktūra ext2_inode in;

Saknes direktorija inode numurs ir zināms, tāpēc mēs iegūstam saknes direktorija inode saturu un nolasām tā saturu bufera buferī:

get_inode(EXT2_ROOT_INO, &in);

Read_iblock(&in, 0);

Bufera buferis saturēs saknes direktorija saturu.

atgriešanās;

Funkcija inode numura iegūšanai no faila nosaukuma:

int get_i_num(char *name)

Funkcijas ievades parametri ir faila nosaukums. Atgriešanas vērtība ir faila inodes numurs.

int i = 0, rec_len = 0;

Struktūra ext2_dir_entry_2dent;

Bufera buferis satur direktoriju ierakstu masīvu. Lai noteiktu faila inodes numuru, šajā masīvā jāatrod ieraksts ar šī faila nosaukumu:

For (;i< 700; i++) {

Memcpy((tukšums *)&dent, (buff + rec_len), sizeof(dent));

If(!memcmp(dent.name, name, dent.name_len)) break;

Rec_len += dent.rec_len;

Atgriezties dent.inode;

Tagad uzrakstīsim galveno funkciju:

int main()

Mainīgie un struktūras:

struct ext2_inode in;

// faila absolūtais ceļa nosaukums

Neparakstīts char *full_path = "/home/test.file";

neparakstīts char buff1;

Statiskā int i = 1;

int n, i_num, outf, type;

Pirmajai rakstzīmei faila absolūtā ceļa nosaukumā ir jābūt slīpsvītrai (/). Pārbaudīsim to:

If(pilns_ceļš != "/") (

kļūda("slīpsvītra");

Iziet(-1);

Atveriet ierīces failu, izlasiet superbloka un grupas deskriptora tabulu:

indev = atvērts (DAĻAS_NAME, O_RDONLY);

if(indev< 0) {

kļūda ("atvērt");

Iziet(-1);

Read_sb();

Read_gdt();

Iegūstiet saknes direktorija saturu:

get_root_dentry();

Buff buferis tagad satur visus saknes direktorija ierakstus (ja vēlaties, varat tos saglabāt atsevišķā failā). Tagad, kad mums ir saknes direktorija ieraksti, mēs varam piekļūt faila test.file saturam, izmantojot iepriekš minēto failu lasīšanas algoritmu. Šim nolūkam mēs organizējam ciklu. Cilpas pamattekstā mēs parsēsim faila absolūtā ceļa nosaukumu, izceļot tā elementus - apakšdirektorijas (mums tāds ir, mājas) un vajadzīgā faila nosaukumu (test.file). Katram elementam mēs nosakām inodes kārtas numuru, nolasām šo inode un pēc tam iegūstam nulles bloka saturu (no adrešu bloku secības, kas atrodas inodē):

kamēr(1) (

memset(buff1,0,sizeof(buff1));

For(n = 0 ; n< EXT2_NAME_LEN; n++, i++) {

Buff1[n] = pilns_ceļš[i];

If((buff1[n] == "/") || (buff1[n] == "?")) (

I++;

pārtraukums;

buff1[n] = "?";

Katram faila absolūtā ceļa nosaukuma elementam mēs nosakām inodes kārtas numuru, nolasām šo inode atmiņā un pēc tam iegūstam nulles bloka saturu:

I_numurs = get_i_num(buff1);

Get_inode(i_num, &in);

Read_iblock(&in, 0);

Parādīsim informāciju par failu (nosaukums, inodes numurs, faila lielums un veids):

Printf("Inode numurs - %u ", i_num);

Printf("Faila nosaukums - %s ", buff1);

Printf("Faila lielums - %u ",in.i_size);

Faila tipu nosaka struct ext2_inode struktūras lauka i_mode augšējie četri biti:

tips = ((in.i_mode & 0xF000) >> 12);

Printf("Tips - %d ",tips);

slēdzis (tips) (

Lieta (0x04):

Printf("(direktorijs)");

pārtraukums;

Lieta (0x08):

Printf("(parastais fails)");

pārtraukums;

Lieta (0x06):

Printf ("(bloķēt ierīces failu)");

pārtraukums;

Lieta (0x02):

Printf("(ierīces fails)");

pārtraukums;

noklusējuma:

Printf("(nezināms tips)");

pārtraukums;

Faila veida pārbaude. Ja tas ir parasts fails, mēs pārtraucam cilpu:

If(type & 0x08) (

Bufera buferis saturēs informāciju, kas nolasīta no faila /home/test.file informācijas blokiem. Ierakstīsim šo informāciju failā:

Outf = atvērts("out",O_CREAT|O_RDWR,0600);

Write(outf, buff, sizeof(buff));

aizvērt(outf);

pārtraukums;

Izeja:

aizvērt (indev);

atgriezties 0;

Tas noslēdz mūsu apsvērumus par ext2 failu sistēmas loģisko struktūru.