Un sistem de fișiere este un set de procese care controlează modul, locul și momentul în care datele sunt stocate și recuperate de pe un dispozitiv de stocare. Un sistem de fișiere eficient este esențial pentru procesele zilnice ale sistemului.
Nucleul Linux acceptă diferite sisteme de fișiere, dar cel mai frecvent utilizat este sistemul de fișiere ext4.
În acest articol, veți afla mai multe despre dezvoltarea sistemelor de fișiere Linux și despre principalele caracteristici ale sistemului ext4.
Notă: În Linux, totul este stocat sub formă de fișiere (de exemplu: directoare, imprimante, partiții, date de nucleu etc.). Acest lucru face cu atât mai important să învățați cum funcționează sistemul de fișiere Linux.
Cuprins
Evoluția sistemului de fișiere Linux
Să aruncăm o privire mai atentă la evoluția sistemului de fișiere Linux:

Sistemul de fișiere Minix
Sistemul de fișiere Minix a fost acceptat de sistemul de operare Minix. Acesta a fost introdus pentru prima dată în 1987 de Andrew S. Tanenbaum.
Sistemul de operare Minix și sistemul său de fișiere au fost utilizate în principal în scopuri educaționale de codare.
Performanța sistemului de fișiere era la nivelul standardelor de la aceea vreme. Lungimile numelor de fișiere erau limitate la 14 caractere, iar partițiile erau limitate la 64 MB. La acea vreme, hard disk-urile suportau partiții de până la 140 MB.
În 1992, Minix a fost în mare parte scos din uz din cauza lipsei de perfromanță și a dezvoltării sistemului de fișiere ext.
Sistemul de fișiere ext
Sistemul de fișiere ext înseamnă „Extended File System”. Acesta a fost primul sistem de fișiere conceput pentru a susține nucleul Linux.
Pentru sistemul de fișiere ext a fost utilizat sistemul de fișiere virtual (Virtual File System – VFS). Scopul său principal era de a permite nucleului Linux să acceseze sistemul de fișiere ext.
Sistemul de fișiere ext a limitat lungimea numelor de fișiere la 255 de caractere și a acceptat partiți de până la 2 GB.
Deși a reușit să rezolve problemele pe care le avea sistemul de fișiere Minix, acesta avea un defect major – marcajul temporal.
Spre deosebire de ziua de azi, când fiecare fișier Linux are trei marcaje de timp (marcajul de acces, marcajul de timp modificat și marcajul de timp schimbat), sistemul de fișiere ext permitea doar un singur marcaj de timp pentru fiecare fișier.
În ianuarie 1993, a fost introdus sistemul de fișiere ext2. În timp, toți utilizatorii au trecut de la ext la ext2.
Sistemul de fișiere ext2
Remi Card a proiectat sistemul de fișiere ext2 și l-a lansat în ianuarie 1993, la mai puțin de un an după introducerea sistemului de fișiere ext.
Sistemul de fișiere ext2 a permis păstrarea structurii interne în timp ce funcționalitățile sistemului de fișiere au fost extinse. Datele din fișiere au fost păstrate în blocuri de date de aceeași lungime.
Sistemul de fișiere ext2 a acceptat dimensiunea maximă a fișierelor de 2 TB. Lungime numelor de fișiere nu erau limitate în caractere, ci în octeți – 255 de octeți. Nu suporta funcția de jurnalizarea.
Deși acest sistem de fișiere a fost utilizat pe scară largă, avea totuși două probleme majore:
- Coruperea fișierelor – Acest fenomen ar apărea dacă datele ar fi fost scrise pe disc în momentul unei pene de curent sau al unei căderi de sistem.
- Pierderea de performanță – Fragmentarea discului are loc atunci când un singur fișier este rupt în bucăți și răspândit în mai multe locații de pe disc. Ca urmare, fișierele necesită mai mult timp pentru a fi citite și scrise, ceea ce duce la o degradare a performanței.
Sistemul ext2 a fost utilizat în principal până la începutul anilor 2000, când a fost introdus sistemul de fișiere ext3. În prezent, acesta este utilizat ocazional pentru dispozitivele USB, deoarece nu acceptă sistemul de jurnalizare.
Sistemul de fișiere ext3
Stephen Tweedie a proiectat sistemul de fișiere ext3 (Third Extended File System). Acesta a fost lansat în neiembrie 2001 cu nucleul Linux 2.4.15 și este utilizat și în prezent.
Sistemul de fișiere ext3 este o versiune îmbunătățită a sistemului de fișiere ext2. Acesta acceptă o dimensiune maximă a fișierelor de 2TB și limitează lungimea maximă a numelui de fișier la 255 de octeți. Îmbunătățirea se reflectă în jurnalizare.
Sistemul de jurnalizare păstrează un „jurnal” al tuturor modificărilor din structura de date care nu au fost încă efectuate.
În cazul unei pierderi de energie sau al unei căderi de sistem, jurnalele stocate prin intermediul sistemului de jurnalizare returnează datele într-o manieră de câteva secunde, reducând riscul de corupție sau de pierdere de date.
Sistemul scrie datele în zonele corecte ale sistemului de fișiere atunci când jurnalul este actualizat.
Nucleul Linux acceptă trei niveluri de jurnalizare:
- Jurnal – Constă în scrierea metadatelor și a conținutului fișierelor într-un jurnal înainte ca modificările să fie efectuate în sistemul principal de fișiere. Acest lucru salvează datele în cazul unei pierderi de energie sau al unei căderi a sistemului. Dezavantajul acestui nivel de jurnalizare este că performanța sistemului scade.
- Ordonat – Acest nivel de jurnalizare scrie metadatele în jurnal, în timp ce conținutul fișierelor este stocat automat în sistemul principal de fișiere. Procesul se realizează într-o anumită ordine. Mai întâi, metadatele sunt scrise în jurnal. Apoi, conținutul fișierelor este scris în sistemul principal de fișiere. În cele din urmă, metadatele se conectează la sistemul principal de fișiere. Prin urmare, sistemul principal de fișiere nu este corupt în cazul unei căderi a sistemului. Numai fișierele care sunt în curs de scriere încazul unei căderi de sistem pot fi corupte.
- Scrierea inversă (Writeback) – Acest nivel de jurnalizare scrie numai metadate în jurnal. Conținutul fișierelor este scris în sistemul principal de fișiere numai după ce jurnalul este actualizat. Din cauza lipsei de sincronizare a metadatelor și a conținutului fișierelor, sistemul de fișiere va fi probabil corupt dacă sistemul se blochează.
Sistemul de fișiere ext4
Sistemul de fișiere ext4 este sistemul de fișiere implicit al actualului nucleu Linux. Acesta a fost introdus în octombrie 2008, odată cu nucleul Linux 2.5.28.
Sistemul de fișiere ext4 acceptă o dimensiune maximă a fișierelor de 16 TB și restricționează lungimea maximă a numelor de fișiere la 255 de octeți.
Caracteristicile sistemului de fișiere ext4
Să ne uităm la principalele caracteristici ale sistemului de fișiere ext4.

Compatibilitate cu versiunile anterioare
Sistemul de fișiere ext4 suportă compatibilitatea anterioară (backward) cu sistemele de fișiere ext3 și ext2. O caracteristică suplimentară este montarea automată a sistemului de fișiere ext3 în modul ext3 prin utilizarea unui driver ext4.
Îmbunătățiri de alocare
Sistemul de fișiere ext4 alocă mai eficient blocurile de stocare înainte de a le scrie pe disc. Acest lucru îmbunătășețte performanțele de citire și scriere.
Îmbunătățiri ale marcajului de timp
Sistemul de fișiere ext4 adaugă încă 408 ani la marcajul de timp (timestamp) și acceptă date până la 10 mai 2446. Marcajele de timp sunt, de asemenea, măsurate mai rapid în nanosecunde.
Extensii
Versiunile învechite ale sistemului de fișiere ext mapează toate blocurile care se corelează cu fiecare fișier. Procesul nu funcționează atunci când este vorba de fișiere mari care necesită un număr mare de blocuri. Extensiile (extents) au rezolvat problema în sistemul de fișiere ext4.
Extensiile reduc cantitatea de metadate necesare pentru a cartografia blocurile fiecărui fișier. Sistemul salvează adresa primului și ultimului bloc corespunzător fișierului de mari dimensiuni.
Îmbunătățiri ale alocării multi-bloc
Un alocator de blocuri caută blocuri libere care pot fi utilizate pentru a scrie date pe disc. Sistemul de fișiere ext4 utilizează alocări multiple care permit alocarea mai multor blocuri la fiecare apel. Acest lucru reduce fragmentarea discului.
Alocare întârziată
Funcția de alocare întârziată alocă blocuri numai atunci când fișierul este scris pe disc. Cu această funcție, memoria cache nu este umplută cu date inutile, iar performanța sistemului crește.
Număr nelimitat de subdirectoare
Versiunea 2.6.23 a nucleului Linux acceptă un număr nelimitat de subdirectoare. Sistemul de fișiere ext4 a introdus structura de date HTree pentru a evita scăderile de performanță. Structura de date HTree reprezintă o versiune specializată a B-tree.
Sumele de verificare ale jurnalului
Sistemul de fișiere ext4 utilizează opțiune checksum. Această opțiune a fost introdusă pentru a reduce riscul de corupere a fișierelor.
Sistemul de jurnalizare este cea mai utilizată parte a discului. Atunci când apare o defecțiune hardware, blocurile devin inutilizabile și se produce coruperea fișierelor.
Opțiunea checksum verifică în mod constant dacă un bloc este deteriorat. Acest proces îmbunătățește, de asemenea, performanța, deoarece scurtează timpul de jurnalizare.
Verificări mai rapide ale sistemului de fișiere
Într-un sistem de fișiere ext4, sunt marcate grupurile nedistribuite de blocuri și tabelele inode. Timpul necesar pentru a executa comanda fsck este semnificativ mai scurt deoarece grupurile marcate sunt sărite. Aceasta îmbunătățește performanța generală.
Defragmentare online
Fragmentarea discului duce la degradarea performanțelor, ceea ce a reprezentat o problemă semnificativă în cazul sistemelor de fișiere ext2 și ext3.
Sistemul de fișiere ext4 suportă instrumentul e4defrag, care permite utilizatorilor să defragmenteze fișiere individuale sau întreg sistem de fișiere.
Limitările sistemului de fișiere ext4.
Deși sistemul de fișiere ext4 este consierat ca fiind cel mai bun sistem de fișiere pentru distribuțiile Linux, există câteva limitări care ar trebui luate în considerare în dezvoltarea ulterioară a sistemului:
- Recuperarea datelor corupte – Sistemul de fișiere ext4 nu poate detecta sau recupera datele corupte deja scrise pe disc.
- Dimensiunea maximă a volumului – Dimensiunea maximă a volumului este setată la 1 EB. Cu toate acestea, sistemul de fișiere nu poate aborda mai multe de 100 TB de date fără o pierdere semnificativă de performanță și o fragmentare crescută a discului.
Sisteme de fișiere Linux alternative
Există mai multe alternative la sistemul de fișiere ext4. Nucleul Linux acceptă toate alternativele enumerate mai jos.
Notă: Pentru a evita problemele, utilizați sisteme de fișiere alternative în directoare separate.
XFS
XFS este un sistem de fișiere pe 64 de biți care a fost introdus pentru prima dată în 1994 și încorporat în nucleul Linux începând cu 2001. Acesta este sistemul de fișiere implicit pentru RedHat Linux.
XFS acceptă o dimensiune maximă a fișierului de 8 EB și limitează lungimea numelui de fișier la 255 de octeți. Suportă jurnalizarea și, la fel ca ext4, salvează modificările într-un jurnal înainte ca acestea să fie transferate în sistemul de fișiere principal. Acest lucru reduce posibilitatea de corupere a fișierelor.
Datele sunt structurate în B+ tree, ceea ce asigură o alocare eficientă a spațiului și, prin urmare, o performanță sporită.
Principalul dezavantaj al acestui sistem se reflectă în procesul dificil de redimensionare a unui sistem de fișiere XFS existent.
OpenZFS
OpenZFS este o platformă care combină sistemele de fișiere cu administratorii de volume. A fost introdus pentru prima dată în 2013.
OpenZFS acceptă o dimensiune maximă a fișierului de 16 EB și limitează lungimea maximă a numelui de fișier la 255 de caractere. Printre caracteristicile acestui sistem se numără protecția împotriva corupției datelor, criptarea, suportul pentru capacități mari de stocare, copy-on-write și RAID-Z.
Principalul dezavantaj al OpenZFS este incompatibilitatea juridică dintre licențele CDDL (OpenZFS) și GPL (nucleul Linux). Acest aspect este rezolvat prin compilarea și încărcarea codului ZFS în nucleul Linux.
BtrFS
Oracle a conceput BtrFS (acronimul de la „B-tree file system”) și l-a lansat în 2009 cu nucleul Linux 2.6.29.
BtrFS acceptă o dimensiune maximă a fișierului de 16 EB și limitează lungimea maximă a numelui de fișier la 255 de caractere.
Printre caracteristicile BtrFS se numără defragmentarea online, adăugarea și eliminarea online a dispozitivelor de bloc, suport RAID, compresia configurabilă pentru fiecare fișier sau volum, clonarea fișierelor, sume de control și capacitatea de a gestiona fișiere swap și partiții swap.
De final
Sistemele de fișiere Linux a evoluat timp de zeci de ani pentru a dobândi complexitatea și funcționalitatea sa. Fiecare nouă funcționalitate a rezolvat o problemă prezentă în versiunile învechite ale sistemului.
După ce ați citit acest articol, ar trebui să înțelegeți mai bine sistemul de fișiere Linux și modul în care acesta funcționează.