Sisteme de fișiere: comparație, secrete și caracteristici unice. Reglarea utilizând tune2fs. Sisteme de fișiere în rețea

Cum în Mediul Windows face posibilă accesarea unei partiții de disc sau a unui mediu amovibil cu sisteme de fișiere Ext2/3/4 ? Dacă, de exemplu, există și un al doilea sistem pe computer Linux. Și trebuie să lucrați cu datele sale din mediu Windows. Sau un alt exemplu - când discurile virtuale sunt montate în Windows cu instalat mașini virtuale sisteme Linux sau Android. Cu Ext2/3/ 4 Windows nu poate funcționa nativ; pentru aceasta are nevoie de instrumente terțe. Ce fel de mijloace sunt acestea? Să ne uităm la cele de mai jos.


***
Primele trei instrumente vor face posibilă citirea numai de pe dispozitivele de informare Ext2/3/4. Cea mai recentă soluție vă va permite atât să citiți, cât și să scrieți date. Toate instrumentele discutate mai jos sunt gratuite.

1. DiskInternals Linux Reader

Un program simplu este un manager de fișiere primitiv, realizat ca un Windows Explorer standard, cu suport pentru sisteme de fișiere Ext 2/3/4 , Reiser4 , HFS , UFS2. În fereastra programului vom vedea partițiile și dispozitivele cu Linux sau Android.

Pentru a copia, trebuie să selectați un folder sau un fișier, apăsați butonul "Salva".

Apoi specificați calea de copiere.

2. Plugin pentru Total Commander DiskInternals Reader

Fanii popularului pot extrage date Linux sau Androidîn Windows folosind acest manager de fișiere. Dar mai întâi instalați un plugin special în el. Unul dintre aceste plugin-uri este , se poate conecta și citi dispozitive de informații formatate în Ext2/3/4 , Fat/exFAT , HFS/HFS+ , ReiserFS. Descărcați pluginul, despachetați arhiva acestuia în interior , confirmați instalarea.

Hai să lansăm (important) în numele administratorului. Să mergem la secțiune. Clic.

Aici, împreună cu alte partiții de disc și medii, cel cu Ext2/3/4 .

Datele sunt copiate în mod tradițional mod - apăsând F5 pe al doilea panou.

3. Plugin pentru Total Commander ext4tc

O alternativă simplificată la soluția anterioară - ext4tc, un alt plugin pentru . Se poate conecta la dispozitive de citire a informațiilor formatate numai în Ext2/3/4. Descărcați pluginul, despachetați arhiva acestuia în managerul de fișiere și începeți instalarea.

Hai să lansăm (important) în numele administratorului. Clic. Să mergem la .

Dacă trebuie să copiați date, utilizați modul obișnuit cu tasta F5.

4. Driver de suport Ext2Fsd

Program Ext2Fsd– acesta este șoferul Ext2/3/4, implementează suport pentru aceste sisteme de fișiere la nivel sistem de operare. Puteți lucra cu partiții de disc și unități formatate în aceste sisteme de fișiere ca și cu cele obișnuite, acceptate. Dispozitive Windows informații în fereastra Explorer sau programe de la terți. Driverul vă permite să citiți și să scrieți date.

Descărcați cel mai recent Versiune curentă Ext2Fsd.

În timpul instalării activăm (dacă pentru muncă pe termen lung) trei casete de selectare sugerate:

1 — Rularea automată a driverului cu Windows;
2 - Suport de înregistrare pentru Ext2;
3 - Suport pentru formatare Ext3.

În etapa de pre-finisare, activăm opțiunea de a lansa fereastra managerului de șoferi - - împreună cu alocarea de informații dispozitivelor din Ext2/3/4 litere de unitate.

În fereastra care se deschide Vom vedea mass-media cu scrisoarea deja atribuită. De exemplu, în cazul nostru, un transportator cu Ext4 se dă prima scrisoare gratuită F.

Acum putem lucra cu discul Fîn fereastra Explorer.

Atribuiți o scrisoare noilor dispozitive conectate cu Ext2/3/4 se poate face folosind meniul contextual apelat pe fiecare dintre cele afișate în fereastră dispozitive. Dar pur și simplu atribuind o literă de unitate, un astfel de dispozitiv nu va apărea după repornirea Windows; această soluție este doar pentru o sesiune de lucru cu computerul. Pentru a face un dispozitiv nou cu Ext2/3/4 vizibil permanent în mediul Windows, trebuie să faceți dublu clic pe el pentru a deschide fereastra de configurare și a seta parametrii de conexiune permanenți. În a doua coloană aveți nevoie de:

Pentru suporturi amovibile activați caseta de selectare indicată de numărul 1 în captură de ecran și specificați litera unității;
Pentru discurile și partițiile interne, activați caseta de selectare indicată în captura de ecran de mai jos cu numărul 2 și, de asemenea, specificați litera unității.

Când rulați Linux, puteți alege tipul de sistem de fișiere, precum și multe alte opțiuni. Cel mai probabil, veți lucra cu partiții Linux care utilizează unul dintre sistemele de fișiere extinse, care sunt acceptate de toate distribuțiile Linux și sunt soluții fiabile, din nou.

Istoria sistemului de fișiere extins (ext) datează din primele zile ale Linux. La un moment dat, acest sistem de fișiere a eliminat limita de dimensiune a fișierelor de 2 GB, dar era extrem de susceptibil la fragmentare. Prin urmare, la scurt timp după lansarea primului sistem de fișiere extins, a fost dezvoltată a doua sa versiune (ext2), eliminând o serie de restricții suplimentare (de exemplu, dimensiunea maximă a fișierului a fost crescută la 4 TB). Sistemul de fișiere ext2 a devenit rapid standardul Linux general acceptat, dar a continuat să evolueze pe măsură ce sistemul de operare a evoluat. Astfel, astăzi avem încă două versiuni ale sistemului de fișiere extins - a treia (ext3) și a patra (ext4).

Vă rugăm să rețineți că toate comenzile din listele din acest articol încep cu simbolurile $ sau #, care sunt folosite în comandă interpret Linux anumite valori. Simbolul $ de pe linia de comandă înseamnă că utilizatorul rulează cu drepturi normale, în timp ce simbolul # înseamnă că utilizatorul are privilegii cont root (adică este un administrator). Când vedeți o comandă în listări care începe cu simbolul #, pentru a o executa trebuie să aveți acces la comanda sudo sau la un cont de utilizator root care vă permite să executați comanda direct.

În cea mai mare parte, acest articol discută despre lucrul cu familia de sisteme de fișiere extinse Linux (ext). Cu toate acestea, printre alte sisteme de fișiere, Linux acceptă și multe sisteme de fișiere pe disc, de exemplu, XFS, ReiserFS, Btrfs (arborele B Sistemul de fișiere) și JFS (IBM Journaled File System). În funcție de sarcinile pe care le efectuați pe computer și în mediul dvs. de lucru, unele dintre aceste sisteme de fișiere pot fi mai potrivite decât sistemul de fișiere extins. Cu toate acestea, familiarizarea cu sistemul de fișiere extins este un bun punct de plecare, deoarece majoritatea distribuțiilor Linux folosesc sistemul de fișiere ext3 sau ext4 în mod implicit.

Sistemul de fișiere ext3 este o dezvoltare ulterioară a sistemului de fișiere ext2 anterior și este utilizat pe scară largă astăzi. Una dintre cele importante diferențe fundamentale ext3 din ext2 este prezența înregistrării. Sistemul de fișiere ext3 este compatibil cu ext2, astfel încât trecerea de la ext2 la ext3 nu necesită re-partiționarea discului. De obicei, acest lucru se poate face prin rularea tune2fs –j cu privilegii root. De exemplu, dacă sistemul de fișiere ext2 este utilizat pe a doua partiție a primului hard disk, atunci pentru a-l converti în ext3, pur și simplu rulați comanda tune2fs -j /dev/sda2 .

Pe lângă înregistrare, ext3 are o serie de alte îmbunătățiri față de ext2, cum ar fi: viteza crescuta si fiabilitate. Lipsit de capabilități de jurnalizare, sistemul de fișiere ext2 a suferit de reporniri murdare ale sistemului de operare (cum ar fi întreruperi neașteptate de curent sau blocări ale sistemului). Când computerul a pornit, fiecare sistem de fișiere ext2 trebuia verificat înainte de a putea fi montat. Având în vedere dimensiunea modernă a sistemelor de fișiere, timpul de verificare a integrității în majoritatea cazurilor este inacceptabil, deoarece aceasta proces lung reduce semnificativ disponibilitatea sistemului. Sistemele de fișiere jurnalizate (cum ar fi NTFS) scriu date pe disc și le marchează ca fiind consistente sau neconsistente. Prin urmare, o repornire murdară verifică doar acele fișiere care sunt marcate ca non-întregi, eliminând necesitatea de a verifica întregul sistem de fișiere. ext3 oferă trei moduri de înregistrare:

  • Jurnal.Înregistrare completă a datelor. Nu numai metadatele sunt înregistrate, ci și datele în sine. Acesta este modul cel mai lent.
  • Ordonat. Din punct de vedere tehnic, sunt scrise doar metadatele, dar această tehnică poate elimina coruperea întârzierii la scriere prin scrierea mai întâi în blocurile de date.
  • Scriere înapoi. Doar metadatele sunt înregistrate, nu datele în sine. Acesta este cel mai rapid mod.

Cea mai recentă versiune a sistemului de fișiere extins de astăzi este sistemul de fișiere ext4, care este compatibil cu ext2 și ext3. În comparație cu ext3, ext4 introduce o serie de îmbunătățiri, legate în principal de viteză și fiabilitate. Sistemul de fișiere ext4 este disponibil în Linux cu versiunea de kernel 2.6.28 și o versiune ulterioară.

Tabelul 1 prezintă câteva caracteristici de bază ale celor mai comune sisteme de fișiere Linux pentru a vă ajuta să planificați aspectul partițiilor sau să convertiți partițiile existente.

Evoluția sistemului de fișiere extins

Sistemul de fișiere
Sistem de fișiere extins (din aproximativ 1991) Cel mai vechi sistem de fișiere Linux. Dezavantajul acestui sistem de fișiere este fragmentarea excesivă.
Ext2 (din 1993 sau cam asa ceva) Acest sistem de fișiere are fiabilitate ridicată, dar îi lipsește jurnalizarea. După o repornire bruscă sau o blocare a sistemului, comanda fsck este rulată pentru întregul sistem de fișiere.
Ext3 (din circa 2001) Acest sistem de fișiere poate conține 32.000 de subdirectoare, acceptă jurnalizarea și este compatibil cu sistemul de fișiere ext2.
Ext4 (din 2008 sau cam asa ceva) Acest sistem de fișiere poate conține 64.000 de subdirectoare, permite dezactivarea completă a jurnalului (spre deosebire de ext3) și este compatibil cu sistemele de fișiere ext2 și ext3.

Cum sunt stocate datele în sistemul de fișiere extins Linux

Există două tipuri de date stocate în sistemul de fișiere Linux. Primul tip este datele utilizatorului (fișiere și directoare obișnuite cu care lucrează utilizatorii). Fișierele pot fi, de asemenea, de patru tipuri: fișiere obișnuite, legături, conducte numite (FIFO) și prize.

Este posibil să fi auzit expresia „În Linux, totul este un fișier sau un proces”. Această expresie implică faptul că Linux nu are conceptul registru de sistem. În schimb, toate obiectele sunt stocate ca unul dintre cele patru tipuri de fișiere. Un alt tip de date stocate în sistemul de fișiere este metadatele, care este un nod index și este numit în mod obișnuit inodul. Inodele sunt o modalitate de a indexa atributele fișierelor în Linux. Fiecare fișier are propriul inod, care conține de obicei următoarele informații:

  • Mărime fișier.
  • Proprietarii fișierului (utilizator și grup).
  • Permisiuni pentru fișiere.
  • Numărul de link-uri hard și soft.
  • Ora la care fișierul a fost accesat și modificat ultima dată.
  • Informații din lista de control al accesului (ACL).
  • Orice atribute suplimentare definite pentru fișier (de exemplu, imuabilitate).

Lista 1 prezintă un exemplu de utilizare a comenzii stat pentru a prelua informațiile stocate într-un inod.
Listare 1. Folosind comanda stat

$ stat /etc/services Fișier: `/etc/services" Dimensiune: 362031 Blocuri: 728 Bloc IO: 4096 fișier obișnuit Dispozitiv: fd00h/64768d Inode: 1638437 Legături: 1 Acces: (0644/-rw-r--r- -) Uid: (0/ root) Gid: (0/ root) Acces: 2011-12-19 00:01:25.000000000 -0600 Modificare: 2006-02-23 07:09:23.000000000 -0600 Modificare: 09011 18 17:29:37.000000000 -0500

În Lista 1, comanda a fost rulată împotriva fișierului /etc/services. Ca urmare a execuției sale, am primit în formă vizuală toate informațiile descriptorului de index și ale atributelor fișierului.

Directoare

Când lucrați la linia de comandă Linux, veți vedea folderele de fișiere, adesea numit directoare. Directoarele servesc aceleași scopuri ca și folderele Windows sau foldere GUI Linux. Dar, în realitate, directoarele sunt doar fișiere goale pentru a organiza alte fișiere sau chiar directoare.

Toate directoarele sunt organizate într-o structură ierarhică, începând cu directorul rădăcină (/). În realitate, aceasta este doar o ordonare logică, deoarece nu toate directoarele sunt situate pe aceeași partiție a sistemului de fișiere. De fapt, dacă montați un sistem de fișiere de rețea (cum ar fi NFS), punctul de montare va fi situat undeva în această structură ierarhică sub directorul rădăcină. Aceasta este o diferență semnificativă față de Windows, unde sunteți obișnuit cu faptul că unitatea C conține de obicei sistemul de fișiere pe disc și sistemele de fișiere ulterioare (partajări de rețea montate, Unități CD-ROMși unități USB) sunt montate ca unități separate - D, E, F și așa mai departe.

Superbloc

La cel mai înalt nivel, toate informațiile despre sistemul de fișiere în sine sunt stocate în așa-numitul. superbloc. Deși lucrul cu un superbloc poate să nu fie de mare interes, înțelegerea conceptului de utilizare a comenzii dump2fs vă poate ajuta să obțineți o înțelegere aprofundată a conceptelor de stocare a datelor într-un sistem de fișiere.

Lista 2 arată un exemplu în care obținem informații despre partiția situată pe dispozitivul /dev/sda1 (în cazul nostru, partiția /boot). În construcția superbloc grep -i, folosim comanda grep care nu ține seama de majuscule și minuscule pentru a scoate informații care conțin șirul superblock .
Lista 2. Folosirea dumpe2fs pentru a obține informații despre superbloc

# dumpe2fs /dev/sda1 | grep -i Superbloc Superbloc primar la 1, Descriptori de grup la 2-2 Superbloc de rezervă la 8193, Descriptori de grup la 8194-8194 Superbloc de rezervă la 24577, Descriptori de grup la 24578-24578 Superbloc de rezervă la 40961, Descriptori de grup la Superbloc de rezervă la 4096962 la 57345, descriptori de grup la 57346-57346 Superbloc de rezervă la 73729, descriptori de grup la 73730-73730

Vedeți starea sistemului de fișiere

Desigur, veți dori să configurați setările de bază ale sistemului de fișiere, cum ar fi alocarea spațiului pe disc, puncte de control siguranța și un anumit nivel de performanță. GNU are multe instrumente pentru lucrul cu sistemul de fișiere. Cele mai comune comenzi sunt df, du, fsck și fdisk, precum și iostat și sar (aceste comenzi nu sunt la fel de populare, dar sunt totuși utile).

comenzile du și df

Comenzile df și du sunt folosite pentru a obține informații despre utilizarea discului și spațiul liber pe disc. Comanda du -csh /var arată dimensiunea fișierelor din directorul /var. Dacă trebuie să obțineți informații despre subdirectoarele imbricate ale directorului /var, trebuie să rulați comanda du -h.

comanda fsck

Comanda fsck este folosită pentru a verifica sistemul de fișiere și pentru a-l repara dacă este necesar. De exemplu, dacă trebuie să verificați partiția situată pe dispozitivul /dev/sda2 pentru erori, atunci introduceți comanda fsck /dev/sda:

# umount /var # fsck /var fsck din util-linux-ng 2.17.2 e2fsck 1.41.12 (17-mai-2010) /dev/sda3: curat, 702/192000 fișiere, 52661/768000 blocuri

Notă. Această comandă ar trebui să fie rulată pe un sistem de fișiere demontat.

În exemplele de mai sus, toate sarcinile au fost efectuate în modul utilizator unic. Partiția /var situată pe dispozitivul /dev/sda3 a fost mai întâi demontată. Comanda fsck nu a găsit erori, altfel ar fi încercat să le repare.

comanda iostat

Comanda iostat afișează statisticile I/O disc.

$ iostat Linux 2.6.18-164.el5 (DemoServer) 12/19/2011 avg-cpu: %user %nice %system %iowait %steal %idle 0.25 1.74 1.26 2.89 0.00 93.86 Dispozitiv: tps Bld_wread/ Bld_wread/ Blk_wread Blk_wrtn sda 10,69 351,52 227,60 1759192 1139038 sda1 0,06 0,45 0,00 2254 22 sda2 10,62 351,01 227,60 60 60 60 60 60 60 60 50,72 227,60 1755178 1139016 dm-1 0,02 0,18 0,00 920 0 hdc 0,00 0,03 0,00 144 0 fd0 0,00 0,00 0,00 0,00 0,00 0,00

Acest exemplu demonstrează modul în care comanda iostat poate fi utilizată pentru a obține informații despre operațiunile de citire/scriere și statistici generale. Rețineți că, în mod implicit, această comandă afișează informații de citire/scriere pentru toate dispozitivele, dar linia de sus afișează statistici generale utilizare.

Echipa sar

Comanda sar afișează valorile contorului de sistem, similare cu Monitorul de performanță al sistemului de operare Windows. Comanda sar poate fi folosită pentru a afișa valori istorice sau pentru a afișa contoare în timp real:

$ sar 4 5 Linux 2.6.18-164.el5 (DemoServer) 12/19/2011 12:20:20 AM CPU %user %nice %system %iowait %steal %idle 12:20:24 AM toate 0.00 0.00 0.00 0.00 0.00 100.00 12:20:28 AM toate 0.00 0.00 1.01 0.00 0.00 98.99 12:20:32 AM toate 0.00 0.00 0.50 0.00 0.00 99.50: 0.00 0.00 0.00 0.00 0.00 31.00 AM toate .00 0.00 100.00 12:20:40 toate 0,25 0,00 1,01 0,00 0,00 98,74 Medie: toate 0,05 0,00 0,50 0,00 0,00 99,45

În acest exemplu, comanda sar imprimă cinci valori de contor, actualizate la fiecare 4 secunde.

Optimizarea și reglarea fină a sistemului de fișiere

Una dintre sarcinile responsabile administrator de sistem este de a oferi acces la datele utilizatorului pentru anumit timp. La fel ca în sistemul de operare Windows, monitorizarea performanței sistemului este una dintre sarcinile principale în Linux. La fel ca performanța rețelei, performanța de citire/scriere pe disc poate deveni un blocaj al sistemului și necesită optimizare și reglare fină.

Următoarele metode pot fi utilizate pentru a configura sistemul de fișiere:

  • Aplicați instrumentul tune2fs.
  • Schimbați punctele de montare în /etc/fstab.
  • Modificați parametrii kernelului.

Tuning cu tune2fs

Utilitate Linie de comanda tune2fs este folosit pentru reglare parametri grei disc. De exemplu, dacă aveți directoare mari pe o partiție cu sistemul de fișiere ext3, puteți accelera accesul la ele folosind b-trees cu hash, pentru care utilizați comutatorul tune2fs dir_index:

# tune2fs -O dir_index /dev/sda5

Comanda tune2fs trebuie rulată ca root. Comutatorul -O specifică o opțiune pentru partiția specificată.

Montare folosind opțiuni speciale

Procesul după care sistemul de fișiere devine disponibil pentru utilizare este apelat montare Sistemul de fișiere. În practică, comanda mount este folosită pentru aceasta. Când porniți computerul Linux, sistemul trebuie să știe cum să monteze sistemele de fișiere disponibile. Fișierul /etc/fstab este folosit în aceste scopuri. Ca orice altă configurație fișiere Linux, acest fișier poate fi editat folosind orice editor de text, cum ar fi vi sau vim. Fișierul /etc/fstab conține puncte de montare pentru diferite sisteme de fișiere. Când setați opțiunile de montare, se folosește a patra coloană. De exemplu, pentru a dezactiva auditarea ultimei ore de acces la fișiere pentru un anumit sistem de fișiere (îmbunătățirea potențial a performanței), puteți adăuga opțiunea noatime. Dacă aveți un sistem de fișiere în care nu doriți să scrie utilizatorii (de exemplu, dacă stochează arhive), îl puteți monta cu opțiunea ro (numai citire).

Pentru a modifica opțiunile de montare în fișierul /etc/fstab, utilizați următoarea linie de comandă:

Dacă partiția poate fi demontată în mediul de lucru curent, atunci comanda mount -o remount va evita repornirea sistemului după modificarea fișierului /etc/fstab.

Setarea parametrilor kernelului

Pentru a vizualiza și modifica parametrii kernelului, utilizați comanda sysctl. Pentru a obține o listă a parametrilor legați de sistemul de fișiere și a valorilor lor curente, rulați sysclt -a | grep fs așa cum se arată în Lista 3.
Lista 3. Vizualizarea parametrilor kernel-ului legat de sistemul de fișiere

# sysctl -a | grep fs. | mai puțin .... fs.quota.warnings = 1 fs.quota.syncs = 23 fs.quota.free_dquots = 0 fs.quota.allocation_dquots = 0 fs.quota.cache_hits = 0 fs.quota.writes = 0 fs.quota .reads = 0 fs.quota.drops = 0 fs.quota.lookups = 0 fs.suid_dumpable = 0 fs.inotify.max_queued_events = 16384 fs.inotify.max_user_watches = 8192 fs.inotify.maxs_a.maxs.maxs. nr = 65536 fs.aio-nr = 0 fs.lease-break-time = 45 fs.dir-notify-enable = 1 fs.leases-enable = 1 fs.overflowgid = 65534 fs.overflowuid = 65534 fs.dentry-state = 26674 23765 45 0 0 0 fs.file-max = 102263 .........

Lista 3 arată un fragment din lista de opțiuni de nucleu legate de sistemul de fișiere filtrate folosind comanda grep. Puteți modifica aceste setări folosind comanda sysclt -w. De exemplu, dacă serverul dvs. procesează un număr mare de fișiere mici și întâmpină în mod constant erori cu mesajul „rămanând fără mânere de fișiere” (nu sunt suficienți handlere de fișiere), atunci puteți crește numărul maxim de mânere de fișiere deschise folosind comanda sysclt - w fișier-max=xxxxxx , Unde xxxxxx– numărul maxim necesar de manipulatori.

Orice modificare făcută cu sysctl funcționează până la prima repornire. Pentru ca aceste modificări să aibă efect după o repornire, trebuie să deschideți fișierul /etc/sysconf în orice editor de textși să-i facă modificări. Acest fișier nu conține toți parametrii nucleului, așa că dacă nu găsiți parametrul dorit în el, adăugați-l pur și simplu împreună cu valoarea dorită.

Fragmentare

De obicei, defragmentarea discului este efectuată atunci când fragmentarea acestuia este mai mare de 20%. La crearea unui sistem de fișiere extins, aproximativ 5% din spațiul pe disc este rezervat pentru sarcinile de sistem pentru a evita necesitatea defragmentării. Pe scurt, în circumstanțe normale nu trebuie să vă faceți griji cu privire la defragmentare. Cu toate acestea, acest lucru nu înseamnă că generația actuală de sisteme de fișiere extinse este complet lipsită de fragmentare. Dacă bănuiți că un fișier este fragmentat, puteți verifica cu comanda filefrag. Opțiunea -v vă permite să obțineți informații mai detaliate.

Sistemul de fișiere(sistem de fișiere în limba engleză) - o comandă care determină modul de organizare, stocare și denumire a datelor pe mediile de stocare a informațiilor ale echipamentelor IT (folosind carduri de memorie flash portabile pentru înregistrarea și stocarea repetată a informațiilor în format portabil). dispozitive electronice: camere digitale, telefoane mobile etc.) și echipamente informatice. Acesta definește formatul conținutului și stocarea fizică a informațiilor, care sunt de obicei grupate sub formă de fișiere. Un anumit sistem de fișiere determină dimensiunea numelui fișierului (dosar), dimensiunea maximă posibilă a fișierului și a partiției și un set de atribute de fișier. Unele sisteme de fișiere oferă capabilități de servicii, cum ar fi controlul accesului sau criptarea fișierelor.

Sarcini ale sistemului de fișiere

Principalele funcții ale oricărui sistem de fișiere au ca scop rezolvarea următoarelor probleme:

denumirea fișierelor;

Interfata software pentru lucrul cu fisiere pentru aplicatii;

maparea modelului logic al sistemului de fișiere la organizare fizică depozite de date;
organizarea rezistenței sistemului de fișiere la întreruperile de curent, erorile hardware și software;

În sistemele cu mai mulți utilizatori, apare o altă sarcină: protejarea fișierelor unui utilizator împotriva accesului neautorizat de către alt utilizator, precum și asigurarea colaborării cu fișierele, de exemplu, atunci când unul dintre utilizatori deschide un fișier, pentru alții același fișier va fi disponibil temporar în modul numai citire. .

Un sistem de fișiere este structura de bază pe care o folosește un computer pentru a organiza informațiile de pe hard disk. La instalare nou hard Discul trebuie să fie partiționat și formatat pentru un anumit sistem de fișiere, după care datele și programele pot fi stocate pe el. Există trei opțiuni posibile de sistem de fișiere în Windows: NTFS, FAT32 și moștenirea rar folosită Sistemul FAT(cunoscut și ca FAT16).

NTFS este sistemul de fișiere preferat pentru această versiune de Windows. Are multe avantaje față de sistemul mai vechi FAT32; Unele dintre ele sunt enumerate mai jos.

Capacitatea de a recupera automat din unele erori de disc (FAT32 nu are această capacitate).
Suport îmbunătățit pentru hard disk-uri mari.
Grad mai mare de securitate. Puteți folosi permisiunile și criptarea pentru a interzice accesul utilizatorilor la anumite fișiere.

Sistemul de fișiere FAT32 și sistemul FAT rar folosit au fost folosite anterior versiuni Windows, inclusiv Windows 95, Windows 98 și Windows Millenium Edition. Sistemul de fișiere FAT32 nu oferă nivelul de securitate oferit de NTFS, așa că dacă computerul dvs. are o partiție sau un volum formatat ca FAT32, fișierele de pe acea partiție sunt vizibile pentru oricine are acces la computer. Sistemul de fișiere FAT32 are, de asemenea, limitări de dimensiune a fișierelor. În această versiune de Windows, nu este posibilă crearea unei partiții FAT32 mai mare de 32 GB. În plus, o partiție FAT32 nu poate conține un fișier mai mare de 4 GB.

Motivul principal pentru utilizarea unui sistem FAT32 este că computerul va putea rula fie Windows 95, Windows 98, fie Windows Millennium Edition, fie această versiune de Windows (configurație cu mai multe sisteme de operare). Pentru a crea o astfel de configurație, trebuie să instalați versiunea anterioară a sistemului de operare pe o partiție formatată ca FAT32 sau FAT, făcând din aceasta partiția primară (partiția primară poate conține sistemul de operare). Alte partiții accesate din versiunile anterioare de Windows trebuie, de asemenea, formatate ca FAT32. Versiunile anterioare de Windows pot accesa numai partițiile sau volumele NTFS din rețea. Partițiile NTFS de pe computerul local vor fi inaccesibile.

FAT – avantaje:

Puțin necesar pentru a lucra eficient memorie cu acces aleator.
Lucru rapid cu cataloage mici și mijlocii.
Discul face, în medie, mai puține mișcări ale capului (comparativ cu NTFS).
Munca eficienta pe discuri lente.

GRASIME – contra:

Pierdere catastrofală de performanță odată cu creșterea fragmentării, în special pentru discuri mari (numai FAT32).
Dificultăți de acces aleatoriu la fișiere mari (de exemplu, 10% sau mai mult din dimensiunea discului).
Lucru foarte lent cu directoare care conțin un număr mare de fișiere.

NTFS - avantaje:

Fragmentarea fișierelor nu are practic consecințe asupra sistemului de fișiere în sine - performanța unui sistem fragmentat este degradată doar în ceea ce privește accesul la datele fișierelor în sine.
Complexitatea structurii directoarelor și numărul de fișiere dintr-un director, de asemenea, nu ridică obstacole speciale în calea performanței.
Acces rapid la un fragment arbitrar al unui fișier (de exemplu, editarea fișierelor mari .wav).
Foarte acces rapid la fișiere mici (câteva sute de octeți) - întregul fișier se află în același loc cu datele de sistem (înregistrare MFT).

NTFS - contra:

Cerințe semnificative de memorie de sistem (64 MB este minimul absolut, mai mult este mai bine).
Discurile lente și controlerele fără Bus Mastering reduc foarte mult performanța NTFS.
Lucrul cu directoare de dimensiuni medii este dificil, deoarece acestea sunt aproape întotdeauna fragmentate.
Un disc care funcționează mult timp la 80% - 90% plin va prezenta performanțe extrem de scăzute.

Următoarele sisteme de fișiere sunt considerate „native” pentru Linux (adică acelea pe care poate fi instalat și de la care poate porni): ext2fs, ext3fs, ext4fs, ReiserFS, XFS, JFS. Ele sunt de obicei oferite ca alegere atunci când se instalează marea majoritate a distribuțiilor. Desigur, există modalități Instalări Linux la sistemele de fișiere FAT/VFAT/FAT32, dar asta este doar pentru acei dragi și domni care înțeleg perversiunile și nu voi vorbi despre ele.

Principalele criterii atunci când alegeți un sistem de fișiere sunt de obicei fiabilitatea și performanța. În unele cazuri, trebuie să țineți cont și de factorul de compatibilitate - în acest caz, înseamnă capacitatea altor sisteme de operare de a accesa un anumit sistem de fișiere.
Voi începe revizuirea cu ReiserFS - pentru că motivul pentru care am scris această notă a fost întrebarea: ce ar trebui să fie considerate fișiere mici? La urma urmei, este bine cunoscut faptul că eficiența lucrului cu fișiere mici este punctul forte al acestui sistem de fișiere.

Deci, fișierele mici înseamnă fișiere mai mici decât un bloc logic al sistemului de fișiere, care în Linux în cele mai multe cazuri este egal cu patru kiloocteți, deși poate fi specificat în timpul formatării în anumite limite (în funcție de FS specific). Există nenumărate astfel de fișiere mici în orice sistem de operare asemănător Unix. Un exemplu tipic sunt fișierele care alcătuiesc arborele de porturi FreeBSD, portaje Gentoo și sisteme similare de tip port.
În majoritatea sistemelor de fișiere, astfel de mini-fișiere au atât propriul inod (un nod de informații care conține meta informații despre fișier) cât și un bloc de date, ceea ce duce atât la consumul de spațiu pe disc, cât și la o scădere a performanței operațiunilor cu fișiere. În special, acesta este tocmai motivul seriozității catastrofale a sistemului de fișiere FreeBSD (atât cel vechi, UFS, cât și cel nou, UFS2) atunci când lucrează cu propriul sistem de porturi.

În sistemul de fișiere ReiserFS, în astfel de cazuri, blocuri separate nu sunt alocate pentru date - reușește să împingă datele fișierului direct în zona inodului. Datorită acestui fapt, spațiul pe disc este salvat și performanța crește - literalmente de câteva ori în comparație cu toate celelalte FS.
Această manipulare a fișierelor mici ReiserFS a dat naștere legendei nefiabilității sale. Într-adevăr, atunci când sistemul de fișiere se prăbușește (adică distrugerea zonelor de serviciu), datele localizate împreună cu inodul său dispar odată cu acestea - și irevocabil. În timp ce în acele sisteme de fișiere în care inodurile și blocurile de date sunt întotdeauna separate spațial, acestea din urmă pot fi teoretic restaurate. Deci, pentru ext2/ext3 există chiar și instrumente care vă permit să faceți acest lucru.

Totuși, ca orice legendă, aceasta dă doar impresia de autenticitate. În primul rând, pierderea permanentă a datelor se aplică numai fișierelor foarte mici. Printre utilizatorii practic nu există asemenea, iar toate celelalte pot fi ușor restaurate din trusa de distribuție.
În al doilea rând, când vorbesc despre posibilitatea de a recupera date din blocuri care și-au pierdut conexiunea la inoduri, nu întâmplător am folosit cuvântul „teoretic”. Pentru că în practică această activitate este extrem de intensivă în muncă și nu dă un rezultat garantat. Oricine a fost nevoit să facă acest lucru va fi de acord că nu se poate răsfăța decât din totală disperare. Și acest lucru se aplică tuturor sistemelor de fișiere Linux. Deci acest aspect poate fi neglijat la alegerea unui sistem de fișiere.

În ceea ce privește performanța generală, ReiserFS este cu siguranță mai rapid decât toate celelalte FS jurnalizate și, în unele privințe, este superior ext2. O comparație a vitezei unor operațiuni comune de fișiere poate fi găsită aici.
Dar cu ReiserFS situația de compatibilitate este oarecum mai proastă. Accesul la el din sistemele de operare Windows, din câte știu, este imposibil. Unele sisteme de operare din familia BSD (DragonFlyBSD, FreeBSD) acceptă acest sistem de fișiere, dar în modul numai citire. Chiar și probabilitatea ca un Linux LiveCD arbitrar din anii precedenți să nu aibă suport ReiserFS nu este zero.

Și aici este timpul să vă amintiți ext3fs. Avantajul său nu este deloc în fiabilitatea mai mare - aceasta este aceeași legendă ca instabilitatea ReiserFS. Am auzit nu mai puțin despre accidente ext3fs decât despre incidente similare cu ReiserFS. Eu însumi nu am putut distruge nici una, nici alta. Cu excepția faptului că a funcționat cu ext2 - dar chiar și atunci cu foarte mult timp în urmă, în timpul nucleului 2.2 (sau chiar 2.0).

Nu, principalul avantaj al ext3fs este compatibilitatea sa - este garantat că va fi citit de orice sistem Linux. De exemplu, la restaurarea de la un LiveCD antic la îndemână - o situație care practic nu este atât de incredibilă, a trebuit să intru în ea. Din nou, majoritatea sistemelor BSD pot înțelege cu ușurință ext3fs (deși fără înregistrare). Pentru Windows, din câte știu eu, există și tot felul de drivere și plug-in-uri pentru managerii de fișiere obișnuiți (cum ar fi Total Commander), care oferă acces la partițiile cu ext2fs/ext3fs.

În ceea ce privește performanța, ext3fs lasă o impresie mixtă. În primul rând, performanța sa depinde foarte mult de modul de înregistrare, dintre care există trei: cu înregistrare completă a datelor, înregistrare parțială și înregistrare doar metadate. În fiecare mod, arată performanțe diferite tipuri diferite operațiuni cu fișiere. Cu toate acestea, în niciun caz, performanța nu bate record.

Cu toate acestea, dacă cerința de performanță este pe primul loc, atunci ext2fs nu are concurență - cu toate acestea, în acest caz va trebui să suportați deloc lipsa de logare. Și, prin urmare, cu verificări lungi ale sistemului de fișiere pentru orice rezilierea incorectă funcționează - și cu volumul discurilor moderne, acest lucru poate dura foarte mult timp...

Următoarele se pot spune despre XFS. În ceea ce privește compatibilitatea, tot ceea ce a fost scris pentru ReiserFS i se aplică - în plus, până la un timp nu a fost suportat de kernel-ul standard Linux. În ceea ce privește performanța, nici XFS nu strălucește, performând în total aproximativ la același nivel cu ext3fs. Iar operațiunea de ștergere a fișierelor demonstrează, în general, o lentoare deprimantă.
Conform observațiilor mele, folosirea XFS dă roade atunci când lucrezi nu doar cu fișiere mari, ci și cu fișiere foarte mari - care sunt de fapt doar imagini DVD și fișiere video.

Permiteți-mi să revin la problema fiabilității. Oprire banală în timpul normal lucru la comandă, de regulă, transferați fără durere toate sistemele de fișiere jurnalizate (și niciunul dintre ele nu asigură siguranța datelor nescrise pe disc operațiunile utilizatorului- salvarea oamenilor care se înecă rămâne opera oamenilor înecați înșiși). Adevărat, pentru orice sistem de fișiere este posibil să se simuleze o situație în care oprirea alimentării va duce la daune mai mult sau mai puțin grave ale acestuia. Cu toate acestea, în viata reala Este puțin probabil să apară astfel de situații. Și le puteți elimina complet achiziționând o sursă de alimentare neîntreruptibilă - va oferi mai multă încredere în siguranța datelor decât tipul de sistem de fișiere. Ei bine, în orice caz, singura garanție pentru restaurarea datelor deteriorate poate fi backup-urile regulate...

Cred că informațiile prezentate mai sus sunt suficiente pentru o alegere informată. Ale mele alegere personalăîn ultimii ani - ReiserFS. Ocazional, pe sistemele în care este justificat să mutați tot ceea ce este posibil în afara partiției rădăcină, este logic să folosiți ext3fs pentru sistemul de fișiere rădăcină și ReiserFS pentru toți ceilalți.

Dacă este furnizată o partiție separată pentru directorul /boot (și acest lucru este recomandat atunci când utilizați încărcătorul de boot GRUB de către dezvoltatorii săi), atunci niciun alt sistem de fișiere în afară de ext2fs nu este justificat pentru aceasta și orice înregistrare aici nu are sens. În cele din urmă, dacă creați o partiție separată pentru tot felul de materiale multimedia, atunci vă puteți gândi la XFS.

Dacă abordam explicaţia mai metodic

ext - în stadiul inițial dezvoltare Linux ext2 (sistemul de fișiere extins versiunea 2) a fost dominantă. Din 2002, a fost înlocuit cu sistemul ext3, care este în mare măsură compatibil cu ext2, dar acceptă și funcții de logare, iar atunci când se lucrează cu versiunea de kernel 2.6 și o versiune ulterioară, ACL-uri. Dimensiunea maximă a fișierului este de 2 TB, dimensiunea maximă a sistemului de fișiere este de 8 TB. La sfârșitul anului 2008, a fost anunțată oficial lansarea ext4, care este compatibil cu ext3, dar multe funcții sunt implementate mai eficient decât înainte. În plus, dimensiunea maximă a sistemului de fișiere este de 1 EB (1.048.576 TB) și vă puteți aștepta ca aceasta să fie suficientă pentru o perioadă de timp. Despre reiser - sistemul a fost numit după fondatorul său, Hans Reiser, și a fost primul sistem cu funcții de logare care a accesat kernel-ul Linux pentru date. Versiunea SUSE de Zp a fost chiar considerată standard de ceva timp. Principalele avantaje ale reiser față de ext3 sunt viteza mai mare și eficiența plasării atunci când lucrați cu fișiere mici (și într-un sistem de fișiere, de regulă, majoritatea fișierelor sunt mici). Cu timpul, însă, dezvoltarea reisefers s-a oprit. S-a anunțat de mult timp că va fi lansată versiunea 4, care încă nu este gata, iar suportul pentru versiunea 3 a încetat. Despre xfs - sistemul de fișiere xfs a fost dezvoltat inițial pentru stațiile de lucru SGI care rulează pe sistemul de operare IRIX. Xfs este deosebit de bun pentru a lucra cu fișiere mari și este deosebit de ideal pentru a lucra cu streaming video. Sistemul acceptă cote și atribute extinse (ACL).
jfs

jfs - a66peBHaTypaJFS înseamnă „Journaled File System”. A fost dezvoltat inițial pentru IBM și apoi adaptat pentru Linux.Jfs nu s-a bucurat niciodată de multă recunoaștere pe Linux și în prezent lâncește într-o existență mizerabilă, inferioară altor sisteme de fișiere.
brtfs

brtfs - Dacă este voința dezvoltatorilor de kernel de vârf, sistemul de fișiere brtfs din Linux are un viitor strălucit. Acest sistem a fost dezvoltat de la zero la Oracle. Include suport pentru device-mapper și RAID. Brtfs este cel mai asemănător cu sistemul ZFS dezvoltat de Sun. Cele mai interesante caracteristici ale sale includ verificarea din mers a sistemului de fișiere, precum și suportul pentru SSD-uri (unitățile cu stare solidă sunt hard disk-uri, care funcționează pe baza memoriei flash). Din păcate, lucrările la brtfs nu vor fi finalizate în viitorul apropiat. Fedora, începând cu versiunea 11, oferă posibilitatea de a instala brtfs, dar recomand să-l folosească doar dezvoltatorilor de sisteme de fișiere!
Nu există un sistem de fișiere „cel mai rapid” sau „cel mai bun” - evaluarea depinde de ceea ce intenționați să utilizați sistemul. Utilizatorilor Linux începători care lucrează pe un computer local li se recomandă să lucreze cu ext3, iar administratorilor de server cu ext4. Desigur, cu ext4 viteza de operare este mai mare decât cu ext3, dar, în același timp, în sistemul ext4 situația cu fiabilitatea datelor este mult mai rea - s-ar putea să pierdeți informații atunci când oprire bruscă sisteme.

Dacă ați instalat un al doilea sistem de operare asemănător UNIX pe computer, atunci următoarele sisteme de fișiere vă vor fi utile atunci când faceți schimb de date (de la un sistem de operare la altul).

sysv - folosit în SCO, Xenix și Coherent OS.

ufs - folosit în FreeBSD, NetBSD, NextStep și SunOS. Linux poate citi doar informații din astfel de sisteme de fișiere, dar nu poate face modificări datelor. Pentru a accesa segmente din BSD, veți avea nevoie în plus de extensia disclabel BSD. O extensie similară există pentru tabelele de partiții SunOS.

ZFS este un sistem relativ nou dezvoltat de Sun pentru Solaris. Pentru că codul ZFS nu se potrivește licențe GPL, nu poate fi integrat cu nucleul Linux. Din acest motiv, Linux acceptă acest sistem de fișiere doar indirect, prin FUSE.
Windows, Mac OS X

Următoarele sisteme de fișiere vor fi utile la schimbul de informații cu MS DOS, Windows, OS/2 și Macintosh.

vfat - folosit în Windows 9x/ME. Linux poate citi informații din astfel de partiții și poate face modificări. Driverele de sistem vfat vă permit să lucrați cu sisteme de fișiere MS DOS mai vechi (8 + 3 caractere).

ntfs - sistemul este folosit în toate versiuni moderne Windows: otNT și mai mare. Linux poate citi și modifica fișierele sale.

hfs și hfsplus - aceste sisteme de fișiere sunt utilizate în computerele Apple. Linux poate citi și modifica fișierele sale.

CD-urile și DVD-urile de date folosesc de obicei propriile sisteme de fișiere.

iso9660 - Sistemul de fișiere pentru CD-ROM-uri este descris în standardul ISO-9660, care permite doar nume scurte de fișiere. Numele lungi sunt acceptate diferit pe diferite sisteme de operare, folosind o varietate de extensii care sunt incompatibile între ele. Linux poate rula atât extensia Rockridge, care este comună în UNIX, cât și extensia Joliet, dezvoltată de Microsoft.

udf - acest format (format de disc universal) a apărut și dezvoltat ca un succesor al ISO 9660.

Sisteme de fișiere în rețea

Sistemele de fișiere nu trebuie să fie localizate disc local- Ei
se poate conecta la un computer și printr-o rețea. Nucleul Linux acceptă diverse sisteme de fișiere de rețea, dintre care următoarele sunt cele mai frecvent utilizate.

smbfs/cifs - ajută la conectarea directoarelor de rețea Windows sau Samba la un arbore de directoare.

nfs este cel mai important rețeaua UNIX Sistemul de fișiere.

coda - acest sistem este foarte asemănător cu NFS. Are multe caracteristici suplimentare, dar nu este foarte comun.

ncpfs - rulează pe protocolul kernel NetWare; oH este folosit de Novell Netware.

Sisteme de fișiere virtuale

Linux are mai multe sisteme de fișiere care nu sunt concepute pentru a stoca date pe hard disk (sau alte medii de stocare), ci doar pentru a face schimb de informații între kernel și programele utilizatorului.
devpts - Acest sistem de fișiere oferă acces la pseudoterminale (abreviat ca PTY) prin /dev/pts/* conform specificației UNIX-98. (Pseudo-terminale emulează Interfață serială. Pe sistemele UNIX/Linux, astfel de interfețe sunt utilizate de emulatori de terminale, cum ar fi xterm. În acest caz, de regulă, sunt utilizate dispozitive precum /dev/ttypn. În schimb, specificația UNIX-98 definește dispozitive noi. Mai multe detalii sunt raportate în terminalul text H0WT0.)
proc și sysfs - sistemul de fișiere proc este utilizat pentru a afișa informații despre servicii legate de managementul nucleului și al procesului. În plus, sistemul de fișiere sysfs construiește relații între kernel și hardware. Ambele sisteme de fișiere sunt montate la /proc și /sys.
tmpfs - Acest sistem este construit pe baza memoriei partajate conform Sistemului V. Este de obicei montat la poziția /dev/shm și permite schimbul eficient de informații între două programe. Pe unele distribuții (cum ar fi Ubuntu), directoarele /var/run și /var/lock sunt create și folosind sistemul de fișiere tmpfs. Fișierele din aceste directoare sunt folosite de unii daemoni de rețea pentru a stoca numerele de identificare a procesului, precum și informațiile de acces la fișiere. Datorită tmpfs, aceste date sunt acum reflectate în RAM. Metoda garantează de mare viteză, și, de asemenea, că, după ce computerul este oprit, nu vor mai rămâne fișiere în directoarele /var/run sau /var/lock.

usbfs - sistemul de fișiere usbfs, începând cu versiunea de kernel 2.6 și o versiune ulterioară, oferă informații despre dispozitivele USB conectate. Este de obicei integrat în sistemul de fișiere proc. Despre suportul dispozitivelor USB în Linux.

Alte sisteme de fișiere

auto - de fapt, nu există niciun sistem de fișiere sub acest nume. Cu toate acestea, cuvântul auto poate fi folosit în /etc/fstab sau cu comanda mount pentru a specifica sistemul de fișiere. În acest caz, Linux va încerca să recunoască singur sistemul de fișiere. Această metodă funcționează cu majoritatea sistemelor de fișiere majore.
autofs, autofs4

autofs, autofs4 nu sunt, de asemenea, sisteme de fișiere, ci extensii de nucleu care execută automat comanda mount pentru sistemele de fișiere selectate. Dacă un sistem de fișiere nu este folosit de ceva timp, comanda umount este rulată automat pe el. Această metodă este convenabilă în primul rând în cazurile în care doar câteva dintre multe directoare NFS sunt utilizate în mod activ în același timp.

Pentru a efectua astfel de operațiuni, scriptul /etc/init.d/ autofs execută automat programul de montare automată când sistemul pornește. Este configurat folosind fișierul /etc/auto.master. Programele corespunzătoare sunt instalate automat, de exemplu, în Red Hat și Fedora. În orice caz, autofs este activat numai după configurarea /etc/auto.master sau /etc/auto.misc.
cramfs și squashfs

cramfs și squashfs - Sistemele de fișiere Cram și Squash sunt doar pentru citire. Acestea sunt folosite pentru a „împacheta” cât mai multe fișiere arhivate posibil în memorie flash sau ROM (memorie doar pentru citire).

fuze - FUSE înseamnă Filesystem in Userspace și permite ca driverele de sistem de fișiere să fie dezvoltate și utilizate în afara nucleului. Prin urmare, FUSE este întotdeauna utilizat cu un driver de sistem de fișiere extern. FUSE funcționează, în special, cu driverul NTFS ntfs-3g.

gfs și ocfs - Global File System și Cluster File System de la Oracle (Oracle Cluster File System) vă permit să construiți sisteme de fișiere de rețea uriașe care pot fi accesate în paralel de mai multe computere în același timp.

jffs and yaffs - Sistem de fișiere de jurnalizare pentru media flash (Journaling Fișier Flash System) și Yet Another Flash File System sunt special optimizate pentru a funcționa unități cu stare solidăși suporturi flash. Prin utilizarea algoritmi speciali ei încearcă să folosească toate celulele de memorie în mod uniform (tehnologia de nivelare a uzurii) pentru a evita defecțiunea prematură a sistemului.
buclă

buclă - folosit pentru a lucra cu pseudo-dispozitive. Un dispozitiv loopback este un adaptor care poate accesa un fișier obișnuit ca dispozitiv bloc. Datorită acestuia, puteți plasa orice sistem de fișiere în orice fișier și apoi îl puteți conecta la arborele de directoare folosind mount. Funcția de kernel responsabilă pentru acest lucru - suport pseudo-dispozitiv - este implementată în modulul de buclă.

Există o varietate de utilizări pentru pseudodispozitive. În special, ele pot fi utilizate atunci când se creează discuri în RAM pentru inițializarea inițială (Initial disc RAM) pentru GRUB sau LILO, la implementarea sistemelor de fișiere criptate sau la testarea imaginilor ISO pe CD.

Sisteme de fișiere media de stocare

Sisteme de fișiere
ISO 9660
Extensia de fișier Joliet sisteme ISO 9660.
Rock Ridge (RRIP, IEEE P1282) – o extensie de sistem de fișiere ISO 9660 concepută pentru a stoca atributele fișierelor utilizate în sistemele de operare POSIX
Amiga Rock Ridge Extensions
El Torito
Extensii Apple ISO9660
HFS, HFS+
universal Format disc specificarea unui format de sistem de fișiere independent de sistemul de operare pentru stocarea fișierelor medii optice. UDF este o implementare a standardului ISO/IEC 13346
Muntele Rainier

Ext4 este evoluția Ext3, cel mai popular sistem de fișiere din Linux. În multe privințe, Ext4 reprezintă o îmbunătățire mai mare față de Ext3 decât Ext3 față de Ext2. Cea mai semnificativă îmbunătățire a Ext3 față de Ext2 a fost înregistrarea în jurnal, în timp ce Ext4 a introdus modificări la structurile de date importante, cum ar fi cele utilizate pentru stocarea datelor fișierelor.

Acest lucru a făcut posibilă crearea unui sistem de fișiere cu un design mai avansat, mai multă performanță și stabilitate și cu un set extins de funcții.

1. Compatibilitate

Orice sistem de fișiere Ext3 existent poate fi convertit în Ext4 printr-o procedură simplă constând în rularea câtorva comenzi în modul numai citire. Aceasta înseamnă că puteți crește performanța, capacitatea și capacitățile sistemului dvs. de fișiere existent fără a reformata sau a reinstala sistemul de operare sau programele. Dacă doriți să obțineți beneficiile Ext4 pe un sistem de producție, puteți, de asemenea, să actualizați sistemul de fișiere. Această procedură este sigură și nu vă pune în pericol datele (este, desigur, recomandat să faceți o copie de rezervă a datelor importante. Cu toate acestea, acest lucru ar trebui făcut chiar dacă nu intenționați să schimbați sistemul de fișiere).

Ext4 va folosi structuri noi doar pentru date noi, în timp ce cele vechi vor rămâne neschimbate. Dacă este necesar, acestea pot fi citite și modificate. Acest lucru înseamnă cu siguranță că, odată ce schimbați sistemul de fișiere la Ext4, nu va mai fi posibil să returnați Ext3.

De asemenea, este posibil să montați un sistem de fișiere Ext3 ca Ext4 fără a utiliza un nou format de date, ceea ce vă va permite să îl montați din nou ca Ext3 mai târziu. Cu toate acestea, desigur, nu veți putea profita de numeroasele avantaje ale Ext4.

2. Dimensiunea mai mare a fișierelor și a sistemului de fișiere

În prezent, dimensiunea maximă a unui sistem de fișiere Ext3 este de 16 teraocteți, iar dimensiunea fișierului este limitată la 2 teraocteți. Ext4 a adăugat adresarea blocului pe 48 de biți, ceea ce înseamnă că dimensiunea maximă a acestui sistem de fișiere este de un exaoctet, iar fișierele pot avea o dimensiune de până la 16 teraocteți. 1 EB (exabyte) = 1.048.576 TB (terabyte), 1 EB = 1024 PB (petabyte), 1 PB = 1024 TB, 1 TB = 1024 GB. De ce 48 de biți și nu 64 de biți? Au existat o serie de restricții care ar trebui eliminate pentru a face Ext4 complet pe 64 de biți, iar o astfel de sarcină nu a fost setată pentru Ext4. Structurile de date din Ext4 au fost concepute ținând cont de aceste schimbări, așa că într-o zi în viitor suportul pe 64 de biți va fi disponibil în Ext4. Deocamdată, va trebui să vă mulțumiți cu un exaoctet.

Notă: codul pentru crearea de sisteme de fișiere mai mari de 16 teraocteți nu este inclus în nicio versiune stabilă a e2fsprogs la momentul scrierii acestui articol. Va fi adăugat în viitor.

3. Scalabilitate a subdirectoarelor

În prezent, un director Ext3 nu poate conține mai mult de 32.000 de subdirectoare. Ext4 elimină această limitare și vă permite să creați un număr nelimitat de subdirectoare.

4. Întinderi

Sistemele de fișiere tradiționale derivate din Unix, cum ar fi Ext3, folosesc o schemă de mapare indirectă a blocurilor pentru a ține evidența fiecărui bloc responsabil cu stocarea datelor fișierului. Această abordare este ineficientă pentru fișierele mari, în special în timpul operațiunilor de ștergere și trunchiere a unor astfel de fișiere, deoarece harta corespondenței conține o intrare pentru fiecare bloc individual. Fișierele mari au multe blocuri, hărțile lor de corespondență sunt mari și sunt procesate lent.

Sistemele de fișiere moderne folosesc o abordare diferită bazată pe așa-numitele extent. O extensie este practic o colecție de blocuri fizice secvențiale. Se pare că ne spune: „Aceste date sunt în următoarele n blocuri.” De exemplu, un fișier de 100 de megaocteți ar putea fi stocat într-o singură dimensiune de acea dimensiune, în loc să fie împărțit în blocuri de 25.600 de 4 kiloocteți adresate prin mapare indirectă. Fișierele uriașe pot fi împărțite în mai multe dimensiuni.

Utilizarea extensiilor îmbunătățește performanța și, de asemenea, reduce fragmentarea, deoarece extinderile promovează plasarea datelor învecinate.

5. Distribuție multi-bloc

Dacă Ext3 trebuie să scrie date noi pe disc, un mecanism special de alocare a blocurilor determină ce blocuri libere vor fi folosite pentru aceasta. Problema este că în Ext3 acest mecanism distribuie doar un bloc (4 kiloocteți) la un moment dat. Aceasta înseamnă că dacă trebuie să scrieți, să zicem, cei 100 de megaocteți de date menționate anterior, va trebui să accesați mecanismul de distribuție de 25.600 de ori (vorbim de vreo 100 de megaocteți!). Acest lucru nu numai că este ineficient, dar și nu permite optimizarea politicii de alocare, deoarece mecanismul corespunzător nu are idee despre cantitatea reală de date care trebuie scrisă, ci știe doar despre un singur bloc.

Ext4 folosește un mecanism de alocare multibloc (mballoc) care vă permite să alocați orice număr de blocuri cu un singur apel și să evitați suprasolicitarea uriașă. Datorită acestui fapt, performanța crește semnificativ, ceea ce este vizibil mai ales în cazul distribuției leneșe (vezi mai jos) folosind extensii. Această caracteristică nu afectează în niciun fel formatul datelor.

6. Distribuție întârziată

Alocarea leneșă este o tehnică de performanță care nu afectează formatul datelor și este introdusă în sistemele de fișiere moderne precum XFS, ZFS, btrfs și Reiser 4.

Esența acestei metode este de a întârzia cât mai mult posibil alocarea blocurilor - spre deosebire de abordarea adoptată în sistemele de fișiere tradiționale (cum ar fi Ext3, reiser3 etc.): alocați blocuri imediat, cu prima ocazie. De exemplu, dacă un proces scrie apelând write(), sistemul de fișiere va aloca blocuri pentru scriere imediat - chiar dacă datele nu sunt încă scrise pe disc, dar vor rămâne în cache pentru ceva timp. Dezavantajele acestei abordări, de exemplu, sunt că, dacă un proces scrie continuu într-un fișier în creștere, apelurile succesive write() alocă continuu blocuri de date fără a ști dacă fișierul va continua să crească.

Când se utilizează alocarea leneșă, blocurile nu sunt alocate imediat când este apelată write(). În schimb, alocarea este întârziată până când fișierul este scris din cache pe disc. Datorită acestui fapt, mecanismul este capabil să optimizeze procesul de distribuție. Cel mai mare beneficiu vine din utilizarea celor două caracteristici menționate anterior - extensii și alocare multi-bloc - deoarece este adesea cazul ca fișierul final să fie scris pe disc ca extensii alocate folosind mballoc. Acest lucru oferă o creștere semnificativă a performanței și, uneori, reduce foarte mult fragmentarea datelor.

7. Fsck rapid

Fsck este o operațiune foarte lentă, mai ales în prima etapă, verificând toate inodele din sistemul de fișiere.

În Ext4, după tabelul de inoduri al fiecărui grup, este stocată o listă de inoduri neutilizate (echipate cu o sumă de control pentru fiabilitate), astfel încât fsck nu va verifica astfel de inoduri. Rezultatul este o reducere a timpului de verificare de la 2 la 20 de ori, în funcție de numărul de inoduri utilizate (vezi http://kerneltrap.org/Linux/Improving_fsck_Speeds_in_Ext4).

Faptul că lista de inoduri neutilizate este compilată de fsck și nu de Ext4 va fi clar vizibil dacă rulați fsck pentru a construi o listă de inoduri neutilizate, iar data viitoare când rulați fsck va fi mai rapid (rularea fsck este încă necesară la conversia Ext3 în Ext4).

În plus, o altă caracteristică care afectează accelerarea fsck este „grupurile de blocuri flexibile”; ele accelerează și alte operațiuni cu fișiere.

8. Înregistrați sumele de verificare

Jurnalul este partea cea mai frecvent utilizată a discului, ceea ce face ca blocurile care îl compun sunt deosebit de susceptibile la defecțiuni hardware. Mai mult, o încercare de a restabili un jurnal deteriorat poate duce la o deteriorare și mai mare a datelor. Ext4 calculează sumele de control ale datelor din jurnal, ceea ce vă permite să determinați dacă au fost corupte. Acest lucru are un alt avantaj: datorită sume de control puteți întoarce sistemul fixare în două faze Ext3 se conectează la o singură fază, ceea ce accelerează operațiunile cu fișierele în unele cazuri cu până la 20%, îmbunătățind astfel atât fiabilitatea, cât și performanța în același timp.

Notă: partea de performanță - înregistrarea asincronă - este în prezent dezactivată în mod implicit și va fi activată într-o ediție viitoare când poate funcționa în mod fiabil.

9. Mod fără înregistrare

Jurnalizarea asigură integritatea sistemului de fișiere prin înregistrarea tuturor modificărilor care apar pe disc. Dar introduce și supraîncărcare suplimentară de disc. În unele situații speciale, înregistrarea și beneficiile pe care le oferă pot fi inutile. Ext4 vă permite să dezactivați înregistrarea, ceea ce are ca rezultat un mic câștig de performanță.

10. Defragmentare online

Această funcție este în prezent în dezvoltare și va fi inclusă într-o versiune viitoare.

Deși alocarea și extinderile lene și multi-bloc ajută la reducerea fragmentării sistemului de fișiere, aceasta poate crește în timp.

De exemplu: creați trei fișiere într-un director și acestea sunt localizate unul după altul pe disc. Apoi, într-o zi, decideți să actualizați al doilea fișier, iar fișierul devine puțin mai mare, astfel încât să nu fie suficient spațiu pentru el. În acest caz, nu există alte soluții decât de a separa fragmentul de fișier care nu se potrivește și de a-l pune într-un alt loc de pe disc, sau de a aloca fișierului o zonă de disc secvenţială mai mare în alt loc, departe de primele două fișiere, ceea ce va duce la mișcări ale capului discului dacă aplicația trebuie să citească toate fișierele dintr-un director (să spunem că un manager de fișiere va crea miniaturi pentru fișierele de imagine).

Dincolo de asta, sistemului de fișiere îi pasă doar de anumite tipuri de fragmentare și nu poate ști, de exemplu, că ar trebui să păstreze toate fișierele necesare la pornire unul lângă celălalt, deoarece pur și simplu nu știe care sunt necesare. la boot. Pentru a rezolva această problemă, Ext4 va accepta defragmentarea online.

Există, de asemenea, un utilitar numit e4defrag, care vă permite să defragmentați atât fișierele individuale, cât și întregul sistem de fișiere.

11. Îmbunătățiri legate de inod

Inoduri mai mari, marcaje de timp în nanosecunde, atribute extinse rapid, rezervare inode...
  • Inoduri mai mari: Ext3 acceptă inoduri personalizate (prin specificarea opțiunii mkfs -I), cu toate acestea dimensiunea implicită a inodelor este de 128 de octeți. În Ext4 va fi de 256 de octeți. Acest lucru a fost necesar pentru a găzdui câteva câmpuri suplimentare (cum ar fi marcajele de timp în nanosecunde și versiunile de inod), iar spațiul rămas în inod va fi folosit pentru a stoca acele atribute extinse care sunt suficient de mici pentru a se potrivi acolo. Acest lucru va face accesul la astfel de atribute mult mai rapid și va îmbunătăți performanța aplicațiilor care le folosesc de 3-7 ori.
  • Esența rezervării inodelor este alocarea mai multor inoduri atunci când se creează un director în așteptarea că acestea vor fi utilizate în viitor. Acest lucru îmbunătățește performanța, deoarece fișierele nou create în acest director vor putea folosi inodurile rezervate. Prin urmare, crearea și ștergerea fișierelor este mai eficientă.
  • Marcajele de timp în nanosecunde înseamnă că câmpurile inode, cum ar fi timpul de modificare, au precizie în nanosecunde (în Ext3 era egală cu o secundă).

12. Redistribuire durabilă

Această caracteristică, deja disponibilă în Ext3 în versiunile recente de kernel și emulată de glibc pe sistemele de fișiere care nu o acceptă, permite aplicațiilor să aloce în mod proactiv spațiu pe disc comunicând nevoile lor sistemului de fișiere. Aceasta, la rândul său, alocă numărul necesar de blocuri și structuri de date, dar acestea sunt goale până când aplicația le scrie efectiv.

Este exact ceea ce fac aplicațiile P2P, de exemplu, prin alocarea de spațiu pentru date care nu vor apărea acolo decât câteva ore sau zile mai târziu. Cu toate acestea, acest lucru este implementat mult mai eficient - la nivel de sistem de fișiere și cu un API universal.

Există mai multe utilizări pentru aceasta: în primul rând, pentru a preveni aplicațiile (cum ar fi P2P) să facă același lucru care umple fișierele cu zerouri ineficient - blocurile necesare vor fi evidențiate imediat.

În al doilea rând, pentru a reduce fragmentarea - din nou pentru că blocurile sunt alocate o dată, cât mai continuu posibil.

În al treilea rând, să vă asigurați că aplicația are atât spațiu cât are nevoie, ceea ce este deosebit de important pentru aplicațiile în timp real, deoarece sistemul de fișiere poate deveni brusc plin în timpul efectuării unei operații importante.

Această caracteristică este disponibilă prin interfața libc posix_fallocate().

13. Mecanismul „barieră” este activat implicit

Aceasta este o opțiune care asigură integritatea sistemului de fișiere cu prețul unei pierderi de performanță (poate fi dezactivată folosind „mount -o barrier=0”, se recomandă să faceți acest lucru atunci când măsurați performanța).

Extras din articolul LWN: „Codul sistemului de fișiere trebuie să fie absolut sigur că toate informațiile despre tranzacție sunt plasate în jurnal înainte de a crea o înregistrare de commit [jurnal]. Pur și simplu înregistrarea în ordinea corectă nu este suficientă; roți moderne aveți o memorie cache mare și modificați ordinea de scriere pentru a optimiza performanța. Prin urmare, sistemul de fișiere trebuie să spună în mod explicit discului să scrie toate datele de jurnal pe suport înainte de a crea o înregistrare de comitere; dacă o înregistrare de comitere este creată mai întâi, jurnalul poate fi corupt. Sistemul de blocare I/O al nucleului oferă această capacitate prin utilizarea unui mecanism de barieră; Mai simplu spus, „bariera” interzice înregistrarea oricăror blocuri trimise după ea până când tot ceea ce a fost trimis înainte de „bariera” este transferat pe mass-media. Prin utilizarea porților, sistemul de fișiere se poate asigura că totul de pe disc este constant în orice moment.”

Etichete: Adăugați etichete

Sistem de fișiere EXT3

Spre deosebire de EXT2, EXT3 este jurnalizate sistem de fișiere, adică nu va ajunge într-o stare inconsistentă după eșecuri. Dar este pe deplin compatibil cu EXT2.

Dezvoltat de Red Hat

ÎN acest moment este de bază pentru LINUX.

Driverul Ext3 are stocuri pline copii exacte blocuri modificabile (1KB, 2KB sau 4KB) în memorie până la finalizarea operațiunii. Acest lucru poate părea risipitor. Blocuri pline conțin nu numai date modificate, ci și date nemodificate.

Această abordare se numește „ logare fizică", care reflectă utilizarea „blocurilor fizice” ca unitate de bază a jurnalizării. Abordarea de a stoca doar octeți modificabili, mai degrabă decât blocuri întregi, se numește „ logare logică" (Se folosește XFS). Deoarece ext3 folosește „înregistrare fizică”, jurnalul din ext3 este mai mare decât în ​​XFS. Datorită utilizării blocurilor complete în ext3, atât driverul, cât și subsistemul de înregistrare evită complexitățile care apar cu „logica”. Logare" .

Tipuri de înregistrare acceptate de Ext3, care pot fi activate din fișierul /etc/fstab:

o date=jurnal(modul de jurnalizare a datelor complete) - toate datele noi sunt mai întâi scrise în jurnal și numai după aceea sunt transferate în locația sa permanentă. În cazul unui accident, jurnalul poate fi recitit, readucerea datelor și metadatele la o stare constantă.
Cel mai lent, dar cel mai de încredere.

o date=ordonate- se înregistrează doar modificările la metadatele sistemului de fișiere, dar în mod logic metadatele și blocurile de date sunt grupate într-un singur modul numit tranzacție. Înainte de a scrie metadate noi pe disc, date aferente blocurile sunt scrise mai întâi. Acest mod de înregistrare ext3 este instalat implicit.
Când adăugați date la sfârșitul unui fișier, modul data=ordonat este garantat pentru a asigura integritatea (ca și în modul de jurnalizare a datelor complete). Cu toate acestea, dacă datele sunt scrise într-un fișier peste cele existente, atunci există posibilitatea de a amesteca blocurile „originale” cu cele modificate. Acesta este un rezultat al datelor=ordonate care nu urmăresc înregistrările unde bloc nou se află deasupra celui existent și nu provoacă modificarea metadatelor.

o date=writeback(numai metadate) - sunt înregistrate numai modificările aduse metadatelor sistemului de fișiere. Cea mai rapidă metodă de înregistrare. Acesta este tipul de jurnalizare pe care îl vedeți cu sistemele de fișiere XFS, JFS și ReiserFS.

3.3.3 Sistemul de fișiere XFS

XFS este un sistem de fișiere de jurnal dezvoltat de Silicon Graphics, dar acum lansat ca sursă deschisă.

Informații oficiale la http://oss.sgi.com/projects/xfs/

XFS a fost creat la începutul anilor 90 (1992-1993) de Silicon Graphics (acum SGI) pentru calculatoare multimedia cu Irix OS. Sistemul de fișiere era destinat fișierelor și sistemelor de fișiere foarte mari. O caracteristică a acestui sistem de fișiere este dispozitivul jurnal - o parte din metadatele sistemului de fișiere în sine sunt scrise în jurnal în așa fel încât întregul proces de recuperare se reduce la copierea acestor date din jurnal în sistemul de fișiere. Dimensiunea jurnalului este setată la crearea sistemului; trebuie să fie de cel puțin 32 de megaocteți; și nu aveți nevoie de mai mult - este greu să obțineți un astfel de număr de tranzacții neînchise.

Câteva caracteristici:

o Funcționează mai eficient cu fișiere mari.

o Are capacitatea de a muta jurnalul pe alt disc pentru a îmbunătăți performanța.

o Salvează datele din memoria cache numai când memoria este plină, și nu periodic ca celelalte.

o Sunt înregistrate numai metadatele.

o Se folosesc arbori B+.

o Se utilizează înregistrarea logică

3.3.4 Sistem de fișiere RFS

RFS (RaiserFS)- sistem de fișiere de jurnalizare dezvoltat de Namesys.

Informații oficiale despre RaiserFS

Câteva caracteristici:

o Funcționează mai eficient cu un număr mare de fișiere mici în ceea ce privește performanța și eficiența spațiului pe disc.

o Utilizează arborele echilibrat b* special optimizat (o versiune îmbunătățită a arborelui B+)

o Alocă dinamic i-noduri în loc de un set static al acestora creat la crearea unui sistem de fișiere „tradițional”.

o Dimensiuni dinamice blocuri.

3.3.4 Sistem de fișiere JFS

JFS (sistem de fișiere jurnalizate) - Un sistem de fișiere de jurnal dezvoltat de IBM pentru sistemul de operare AIX, dar acum lansat ca sursă deschisă.

Informații oficiale despre tehnologia Jurnaled File System pentru Linux

Câteva caracteristici:

o Jurnalele JFS se potrivesc model clasic tranzactii acceptate in baze de date

o Doar metadatele sunt înregistrate

o Dimensiunea jurnalului nu depășește 32 de megaocteți.

o Mod de înregistrare asincronă - efectuat când traficul I/O scade

o Se utilizează înregistrarea logică.

3.4 Tabel de comparație a unor sisteme de fișiere moderne

NTFS EXT4 RFS XFS JFS
Stocarea informațiilor despre fișier MFT inodul inodul inodul inodul
Dimensiunea maximă a partiției 16 EB (2 60) 1 ebyte 4 gigablocuri (deoarece blocurile sunt dinamice) 16 ebytes 32 PB
Dimensiunile blocurilor de la 512 octeți la 64 KB 1 KB - 4 KB Până la 64 KB (fix în prezent 4 KB) de la 512 octeți la 64 KB 512/1024/2048/4096 octeți
Număr maxim de blocuri 2^48 2^32 2^32
Dimensiunea maximă a fișierului 2^64 16 TB (pentru blocuri de 4 KB) 8 TB 8 ebyți 4 PB (2 50)
Lungime maxima nume de fișier
Logare da da da da da
Gestionare gratuită a blocurilor Nu Bazat pe bitmap Arborii B indexați după offset și dimensiune Tree+ Binary Buddy
Extinderi pentru spațiul liber Nu Nu da Nu
Arborele B pentru articolele de director da Nu Ca un subarboresc al arborelui principal al sistemului de fișiere da da
B-trees pentru adresarea blocurilor de fișiere Nu În interiorul arborelui principal al sistemului de fișiere da da
Extinderi pentru adresarea blocurilor de fișiere Nu Da (din versiunea 4) da da
Date din inodul (fișiere mici) Nu da da Nu
Date de legătură simbolică în inode Nu da da da
Intrări de director în interiorul inodelor (directoare mici) Nu da da da
Alocare dinamică inod/MFT da Nu da da da
Structuri pentru gestionarea inodurilor alocate dinamic Nu General B*arbore B+arbore B+arborele cu regiuni de inoduri contigue
Suport rar pentru fișiere da Nu da da da