Ext4

De la Wikipedia, enciclopedia liberă
Jump to navigation Jump to search

Ext4 sau al patrulea sistem de fișiere extins este un sistem de fișiere cu jurnalizare dezvoltat ca succesor pentru ext3. Ext4 s-a născut ca o serie de extensii pentru ext3, compatibile cu versiunile anterioare, care extinde limitele ext3 64-bit și adaugă și alte îmbunătățiri de performanță. Totuși, unii dezvoltatori ai nucleului sistemului de operare Linux s-au opus acceptării extensiilor la ext3 din motive de stabilitate, și au propus separarea codului sursă de ext3, botezarea lui ca ext4, și conducerea dezvoltării acolo, fără a afecta utilizatorii ext3. Această propunere a fost acceptată și, în 28 iunie 2006 Theodore Ts'o, întreținătorul ext3 a anunțat noul plan de dezvoltare pentru ext4. O versiune preliminară a ext4 a fost inclusă în nucleul Linux versiunea 2.6.19. În 11 octombrie 2008, petecele care marchează ext4 ca fiind cod stabil au fost incluse în arhivele cu codul sursă pentru Linux 2.6.28, denotând sfârșitul fazei de dezvoltare și s-a recomandat adoptarea ext4. Nucleul 2.6.28, care conține sistemul de fișiere ext4, a fost lansat în 25 decembrie 2008.

Facilități[modificare | modificare sursă]

Limitări[modificare | modificare sursă]

Sistemul de fișiere ext4 poate suporta volume de până la 1 exaoctet și fișiere cu mărimea de până la 16 teraocteți, față de Ext3, care suporta volume de maxim 16 teraocteți și fișiere de până la 2 teraocteți (pentru blocuri de 8 kiloocteți, limitarea putând fi mai mică dacă dimensiunea blocului este mai mică).

Extinderea[modificare | modificare sursă]

Sistemele de fișiere extinse au fost introduse pentru a înlocui modelul tradițional bazat pe blocuri utilizat de sistemele de fișiere ext2/3. O extindere este o serie de blocuri fizice contigue care îmbunătățește performațele sistemelor mari de fișiere și reduce fragmentarea. O singură extindere în ext4 poate mapa până la 128 MO de spațiu contiguu cu bloc de 4 KO mărime.

Compatibilitate regresivă[modificare | modificare sursă]

Sistemul de fișiere ext4 este compatibil cu ext3, ceea ce face posibilă montarea unui sistem de fișiere ext3 ca ext4.

Compatibilitate progresivă[modificare | modificare sursă]

Sistemul de fișiere ext4 este parțial compatibil cu ext3, adică poate fi montat ca partiție ext3 (folosind tipul de sistem de fișiere ext3 atunci când are loc montarea). Totuși, dacă partiția ext4 folosește extinderile sistemului de fișiere (o facilitate majoră nouă în ext4), atunci posibilitatea de a monta un sistem de fișiere ext4 ca și ext3 nu mai există. Extinderile au fost activate ca setare implicită în nucleul 2.6.23. Înainte opțiunea "extinderi" era cerută în mod explicit (ex: mount /dev/sda1 /mnt/point -t ext4dev -o extents).

Prealocare persistentă[modificare | modificare sursă]

Sistemul de fișiere ext4 permite prealocarea spațiului de pe disc corespunzător unui fișier. Metodologia curentă pentru majoritatea sistemelor de fișiere este să umple spațiul cu 0 spațiul necesar fișieruui atunci când fișierul este creat (deși XFS are ioctl pentru a permite și prealocare adevărată). Această metodă nu va mai fi necesară pentru ext4; în schimb funcția de sistem fallocate() a fost adăugată nucleului linux pentru a fi folosită de către sistemele de fișiere care au posibilitatea, inclusiv ext4 și XFS. Spațiul alocat fișierelor va fi garantat și cel mai probabil va fi contiguu. Prealocarea persistentă are aplicații pentru fluxurile media și pentru bazele de date.

Alocare întârziată[modificare | modificare sursă]

Ext4 folosește o tehnică de creștere a performanței sistemului de fișiere numită allocate-on-flush, cunoscută de asemenea și ca alocare întârziată. Tehnica consistă din întârzierea alocării blocurilor până când datele sunt pe cale de a fi scrise pe disc, spre deosebire de alte sisteme de fișiere, care alocă blocurile necesare înaintea acestui pas. Această tehnică crește performanța și reduce fragmentarea prin îmbunătățirea deciziilor de alocare a blocurilor datorită bazării pe mărimea reală a fișierului.

Depășirea limitei de 32 000 de subdirectoare[modificare | modificare sursă]

În ext3 numărul de subdirectoare pe care un director îl poate conține este limitat la 32 000. Această limită a fost crescută la 64 000 în ext4, și cu facilitatea "dir_nlink" se poate trece mai departe. Pentru a permită performanță continuă în cazul directoarelor mult mai mari, indexul htree (o versiune specializată a B-tree) este activat implicit în ext4. Aceasta facilitate este implementată în nucleul Linux 2.6.23. Htree este de asemenea disponibil în ext3 când facilitatea dir_index este activată.

Jurnal cu sume de verificare[modificare | modificare sursă]

Ext4 folosește sumele de verificare în jurnal pentru a îmbunătăți citirea, din moment ce jurnalul este unul dintre cele mai folosite fișiere de pe disc. Această facilitate are un al doilea beneficu: se poate evita așteptarea I/O din timpul procesului de jurnalizare, ceeace îmbunătățește performanța ușor. Tehnica verificării cu sume a jurnalizării a fost inspirată dintr-o cercetare a universității Wisconsin intitulată Sisteme de fișiere IRON (în special secțiunea a șasea, intitulată "sume de verificate a tranzacției").

Defragmentare online[modificare | modificare sursă]

Ext4 are un program de defragmentare online. Chiar și cu diferitele tehnici folosite pentru a evita fragmentarea, un sistem care duce o viață lungă tinde să se fragmenteze. Ext4 va avea o unealtă care va defragmenta fișierele individuale sau sisteme de fișiere întregi.

Verificare mai rapidă a sistemului de fișiere[modificare | modificare sursă]

În ext4, grupurile de blocuri nealocate sunt marcate ca nealocate. Aceasta permite ca e2fsck să sară peste ele în timpul unei verificări și să reducă drastic timpul necesar unei verificări a sistemului de fișiere de mărimea celor pe care ext4 le va suporta. Această facilitate a fost implementată în versiunea 2.6.24 a nucleului Linux.

Alocare multibloc[modificare | modificare sursă]

Ext4 alocă blocuri multiple pentru un fișier dintr-o singură operație, ceea ce reduce fragmentarea datoriă faptului că încearcă să aleagă blocuri contigue pe disc. Alocatorul multibloc este activ când se folosește O_DIRECT sau când alocarea întârziată este activată. Aceasta permite ca un fișier să aibă mai multe blocuri murdare trimise spre scriere în același timp, spre deosebire de mecanismul existent din nucleu în care fiecare bloc este trimis separat către sistemului de fișiere pentru alocare.

Marcaje de timp îmbunătățite[modificare | modificare sursă]

Odată cu creșterea vitezei calculatoarelor și creșterea utilizării Linuxului pentru aplicații critice, granularilatea marcajelor de timp bazate pe secunde devine insuficientă. Pentru a rezolva această problemă, ext4 va avea marcajele de timp măsurate în nanosecunde. Această facilitate este în prezent implementată în 2.6.23. În plus, doi biți ai marcajului de timp extins sunt adăugați celor mai semnificativi biți ai câmpului secundelor pentru a rezolva problema anului 2038, întârziind-o cu încâ 500 de ani.

Note[modificare | modificare sursă]

Vezi și[modificare | modificare sursă]

Legături externe[modificare | modificare sursă]