Failisüsteem **ext4** on Linuxi failisüsteemi ext3 edasiarendus, mis parandab oluliselt failisüsteemi töökindlust ning suurendab selle võimalikku mahtu.

Ajalugu
-------

Peamine ext3 erinevus ext2-st oli teatud tüüpi registreerimise – päevikupidamise (*journaling*) lisamine. Stabiilsuse tagamiseks ei võtnud Linuxi tuuma arendajad esialgu vastu ext3 täiendusi, millest paljud lõi Cluster File Systems Lustre failisüsteemi jaoks aastatel 2003–2006. Nende ettepanekul loodi ext3 arendusharu, mis nimetati ext4-ks. See võimaldas kogu arendustegevust teha ext3 kasutajaid häirimata. Täiendused suurendasid jõudlust ja failide salvestusmahtu.
28. juunil 2006 andis Theodore Ts'O teada plaanist hakata arendama ext4.

ext4 eelarendus-versioon tuli Linuxi tuuma 2.6.19. 11. oktoobril 2008 lisati paigad, mis märkisid ext4 kui stabiilse ja kood lisati Linuxi tuuma 2.6.28 koodi repositooriumitesse. Sellega lõppes arendusfaas ja soovitati ext4 kasutusele võtta. 25. detsembril 2008 tuli välja tuum 2.6.28, mis sisaldas ext4-failiüsteemi. 15. jaanuaril 2010 teatas Google, et nad uuendavad oma andmete infrastruktuuri ext2-lt ext4-le. 14. detsembril teatas Google, et ext4 asendab YAFFS-i Android 2.3-l.

Omadused
--------

### Ühilduvus

Kõiki kasutuses olevaid ext3-failisüsteeme saab muuta ext4-ks. Failisüsteemi saab uuendada ainult siis, kui failisüsteem ei ole kirjutamiseks ühendatud.

ext2-failisüsteemi ext3-ks muutmiseks kasutatav käsk:

 `# tune2fs -j /dev/DEV`

ext4 võimaluste kasutusele võtuks kasutatav käsk:

`# tune2fs -O extents,uninit_bg,dir_index /dev/DEV`

Pärast viimase käsu kasutamist tuleb käivitada programm fsck, korrigeerimaks failisüsteemi struktuuri, mida tune2fs muutis:

`# e2fsck -fDC0 /dev/DEV`

Vormindamata failisüsteemi uuendamise puhul kasutab ext4 uute andmete jaoks uut failistruktuuri. Uute andmete lisandumisel kirjutatakse need ext4 failisüsteemi. Vanad andmed säilitatakse muutumatu failisüsteemiga. Tagasi muutmine ext3-ks ei ole võimalik, kuid failisüsteemi saab ühendada ext3-na, mis kaotab kõik ext4 pakutavad eelised.

### Failisüsteemi maht

Eelmine failisüsteem ext3 toetab kuni 16 TB mahuga failisüsteemi, kuhu saab paigutada kuni 2-terabaidiseid faile. ext4 puhul lisati 48-bitine plokkide adresseerimine. Selle tulemusel muutus ext4 failisüsteemi tugi suuruseni 1 EB (1 EB = 1 048 576 TB) ning kasutatava faili maht kuni 16 TB. Toimub arendustegevus 64-bitise süsteemi kasutuselevõtuks.

### Alamkataloogid

Suurim võimalik arv alamkatalooge on ext4-s 64 000, mis on rohkem kui ext3 puhul. Seda arvu on võimalik suurendada kasutades dir\_nlink võimalust. Lubamaks suuremaid kaustu ja jõudluse hoidmiseks kasutab ext4 Htree indekseerimist. See võimalus on kasutusel alates Linux 2.6.23.

### Ulatused

Ulatused (*extent*) asendavad traditsioonilist plokkide kaardistamise skeemi, mis on kasutusel ext2-s ja ext3-s. Ulatus koosneb paljudest järjestikustest plokkidest, parandades suurte failide käsitlemise kiirust ja vähendades fragmenteerumist. Üks ulatus ext4-s suudab ühendada 128 MB ruumi 4 kB suuruselt. Seetõttu saab 4 ulatust ühendada ühte i-kirjesse.
Kui fail koosneb rohkemast kui neljast ulatusest, siis on need indekseeritud Htree'ga
Traditsioonilist kaardistamismeetodit kasutades kuluks 128 MB faili jaoks 25 600 plokki, igaüks neist 4 kB.

### Hilistatud eraldus

Jõudluse parandamiseks ja fragmenteerumise vältimiseks kasutatakse ext4 puhul meetodit, kus andmeplokkide asukoha ülesmärkimine toimub alles pärast andmete täielikku kettale kirjutamist (*delayed allocation*).

### Kiire fsck

Failisüsteemi kontroll kasutades fsck on ext4 puhul kiirem. ext4 loob i-kirjete rühmadele tabelid, milles on märgitud kasutamata i-kirjed. Esmasel fsck kasutamisel tekitatakse vastav tabel. Kasutamata i-kirjeid fsck ei kontrolli. See kiirendab kontrollimisprotseduuri 2–20 korda. Kiiruse muutus sõltub kasutatud i-kirjete hulgast.

### Päeviku räsisumma

Päevik on kasutatavaim osa kettast, seega tõenäoliselt ka kõige enam mõjutatud mehaanilistest riketest. Vigase žurnaali järgi andmete taastamine lõpeb suure tõenäosusega vigaste või kadunud andmetega. Räsisumma kontroll tõstab failisüsteemi usaldusväärsust, võimaldades välistada päeviku vigaste kirjete kasutamise. Räsisumma kontrolli lisaväärtus on see, et kaheetapilisest ext3 päeviku pidamisest saab üheetapiline, mille tulemusena tõuseb kiirus kuni 20%.

### Päeviku mittepidamine

Vajadusel on võimalik ext4 päevikupidamine välja lülitada. Sel juhul jõudlus veidi paraneb. Reeglina seda aga ei kasutata, sest päevikupidamine tagab failisüsteemi tervikluse ja salvestab toimuvad muutused logisse. Päevik võimaldab pärast planeerimatut töökatkestust taastada failisüsteemi tervikliku seisu võimalikult väikeste kadudega.

### Uuendatud ajamärgid

Arvutite kiiremaks muutmine on tekitanud olukorra, kus sekunditel põhinev ajaarvestus ei ole enam piisav. Selle probleemi lahendamiseks kasutatakse ext4 puhul aja märkimiseks nanosekundeid. Kahe biti lisamisega ajamärkimise tabelisse nihkus *2038. aasta probleem* edasi 204 aastat.

Kriitika
--------

Ehkki ext4 sisaldab uusi ja parandatud võimalusi, on tegemist siiski vana tehnoloogiaga. Muudatustele vaatamata ei ole tegemist suure edasiminekuga. Loodetakse, et Btrfs on edumeelsem, kasutades paljusid tehnilise lahenduse ideesid, mida kasutab näiteks ZFS.

Viited
------

1. ↑  Torvalds, Linus (09.06.2006). "extents and 48bit ext3". Linux kernel mailing list.
2. ↑  Mathur, Avantika; Cao, MingMing; Bhattacharya, Suparna; Dilger, Andreas; Tomas, Alex; Vivier, Laurent (2007). "The new ext4 filesystem: current status and future plans" (PDF). *Proceedings of the Linux Symposium*. Ottawa, ON, CA: Red Hat. Originaali (PDF) arhiivikoopia seisuga 24. märts 2012. Vaadatud 25. augustil 2015.
3. ↑  Ts'o, Theodore (28.06.2006). "Proposal and plan for ext2/3 future development work".
4. ↑  Leemhuis, Thorsten (23.12.2008). "Higher and further: The innovations of Linux 2.6.28 (page 2)". Heise Online. Vaadatud 09.01.2010.
5. ↑  "ext4: Rename ext4dev to ext4". Linus' kernel tree. Originaali arhiivikoopia seisuga 29.05.2012. Vaadatud 20.10.2008.
6. ↑  Leemhuis, Thorsten (23.12.2008). "Higher and further: The innovations of Linux 2.6.28". Heise Online.
7. ↑  Paul, Ryan (15.01.2010). "Google upgrading to Ext4, hires former Linux Foundation CTO". Ars Technica.
8. ↑  "Android 2.3 Gingerbread to use Ext4 file system". *The H Open*. 14. detsember 2010.
9. ↑
10. ↑
11. ↑
12. ↑

Välislingid
-----------

* Ext4 Howto
* 
* EXT4 Bug

| * v
* r
Failisüsteemid |
| --- |
| Ketta | 

|  |
| --- |
| 
AdvFS  • Btrfs  • CrossDOS  • exFAT  • ext (ext2  • ext3  • ext3cow  • ext4)  • FAT (FAT12  • FAT16  • FAT16B  • FAT32)  • Files-11  • HFS Plus  • Minix  • Next3  • NILFS (NILFS2)  • NSS  • NTFS  • NWFS  • OneFS  • PFS  • QFS  • QNX4FS  • ReFS  • ReiserFS (Reiser4)  • Reliance  • Reliance Nitro  • SpadFS  • UBIFS  • Unix File System  • Veritas File System (VxFS)  • VFAT  • XFS  • Xsan  • ZFS |
| Optiline andmekandja | 
HSF  • ISO 9660  • ISO 13490  • UDF |
| Välkmälu / Pooljuhtketas | 
FAT  • exFAT  • CHFS  • TFAT  • FFS2  • F2FS  • JFFS  • JFFS2  • LogFS  • NVFS  • YAFFS  • UBIFS |
| Jagatud | 
Coda  • CXFS  • GFS2  • Google Failisüsteem  • OCFS2  • QFS  • Xsan |

 |
| Spetsialiseerunud | 

|  |
| --- |
| 
cramfs  • FUSE  • SquashFS  • UnionFS |
| Pseudo ja virtuaalsed | 
configfs  • devfs  • procfs  • specfs  • sysfs  • tmpfs  • WinFS |
| Krüpteeritud | 
EncFS  • EFS  • ZFS |

 |