ext4
ext4 | |
---|---|
Hersteller | Mingming Cao, Dave Kleikamp, Alex Tomas, Theodore Ts'o, andere |
Vollständige Bezeichnung | Fourth extended filesystem |
Erstveröffentlichung | 14. Oktober 2008 (Testversion seit: Linux 2.6.19,Final: Linux 2.6.28) |
Partitionskennung | 0x83 (MBR) EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT) |
Technische Umsetzung | |
Verzeichnisse | Tabelle, H-Baum |
Dateien | bitmap (free space), Tabelle (metadata) |
Defektblockliste | Table |
Maximalwerte | |
Größe einer Datei | Größe des Dateisystems |
Anzahl Unterverzeichnisse pro Verzeichnis | unbegrenzt[1] |
Länge des Dateinamens | 256 Bytes |
Größe des Dateisystems | 1 EiB = 1024 PiB (>16 TiB ab e2fsprogs Version 1.42) |
Erlaubte Zeichen im Dateinamen | Alle Bytes außer NULL und '/' |
Eigenschaften | |
Datumsangaben einer Datei | modification (mtime), attribute modification (ctime), access (atime), create (crtime) |
Datumsbereich | 14.12.1901 bis 25.04.2514 |
Forks | Ja |
Dateiattribute | extents, data=journal, data=ordered, data=writeback, commit=nrsec, orlov, oldalloc, user_xattr, nouser_xattr, acl, noacl, bsddf, minixdf, bh, nobh |
Dateirechte-Verwaltung | POSIX |
Transparente Komprimierung | nein |
Transparente Verschlüsselung | nein |
Unterstützende Betriebssysteme | Linux |
Das ext4 (fourth extended filesystem) ist ein Journaling-Dateisystem, das für den Linux-Kernel als Nachfolger von ext3 entwickelt wird. Es wurde am 10. Oktober 2006 von Andrew Morton vorgestellt. Seit der Version 2.6.19 war eine vorläufige Testversion offizieller Bestandteil des Linux-Kernels.[2] Mit dem Erscheinen von Linux 2.6.28 am 24. Dezember 2008 verließ ext4 das Hauptentwicklungsstadium.[3]
Technische Eigenschaften
ext4 benutzt 48 bit große Blocknummern (ext3 hatte 32 bit) und unterstützt so Partitionen oder Volumes, die bis zu 1 EiB groß sind (Volumes größer als 16 TiB erst ab e2fsprogs Version 1.42 vom 29. November 2011), im Gegensatz zu ext3, das nur 32 TiB zulässt (abhängig von der Größe einer Speicherseite in der jeweiligen Maschinenarchitektur, bei IA-32 zum Beispiel sind nur maximal 232 · 4 KiB = 16 TiB möglich). Auch kann die Adressierung von Dateien über Extents erfolgen, wobei Speichereinheiten zu einem zusammenhängenden Block zusammengefasst werden. Dies führt zu einer Reduzierung des Zusatzaufwands (RAM, E/A-Zugriffe und Transaktionen) und kann die Leistung im Betrieb steigern.
Seit Veröffentlichung im Kernel 2.6.19 sind folgende Verbesserungen implementiert worden:
- ab Kernel 2.6.23: mehr als 32.000 Unterverzeichnisse,
- ab Kernel 2.6.25: maximale Dateigröße so groß wie das gesamte Dateisystem
- ab Kernel 2.6.28: ext4 gilt als stabil
- ab Kernel 2.6.33: TRIM-Unterstützung
Als weitere Verbesserungen gegenüber ext3/ext2 sind unter anderem noch in Planung oder bereits implementiert:
- Extents
- Die wichtigste Neuerung in ext4. Andere Dateisysteme wie z. B: JFS oder XFS bieten dieses Feature schon lange. Es bringt Geschwindigkeitsvorteile bei der Verwaltung großer Dateien und beugt der Fragmentierung vor.[4][5][6]
- Featurespezifische mount-Optionen: extents[7] Ist nicht in den man-pages gelistet, da per default genutzt, wenn entsprechende ext4-Partition damit eingerichtet wurde oder eine bestehende ext3-Partition zu einer ext4-Partition mit tune2fs -O extents,... konvertiert wurde.
- Verbesserte Zeitstempel
- ext4 bietet Zeitstempel auf Nanosekunden-Basis.[8] Des Weiteren Unterstützung für Datei-Erzeugt-Datumsstempel.
- Online-Defragmentierung
- Defragmentierung, während die Partition eingehängt ist. Feature derzeit noch nicht fertig gestellt.[9]
- Journal mit Prüfsummenunterstützung
- Dieses Feature ist abwärtskompatibel zu älteren Kernelversionen und wird von diesen ignoriert.
- Featurespezifische mount-Optionen: journal_checksum [10]
- Mehrfache Preallokation von Dateiblöcken und Inodes
- Resultiert in besserer Schreibperformance.[11]
- Featurespezifische mount-Optionen: nomballoc, mballoc (beide nicht in man-pages gelistet)[12], oldalloc, orlov (default)
- Zeitverzögerte Allokation von Dateiblöcken und Inodes.
- Derzeit nur im „data=writeback“-Journaling-Modus, spätere Versionen sollen auch den „data=ordered“-Modus unterstützen. Resultiert in weniger CPU-Last und weniger Fragmentierung.[13]
- Featurespezifische mount-Optionen: nodelalloc, delalloc [10]
- TRIM-Unterstützung
Seit Kernel 2.6.33 kann über die Mountoption discard/nodiscard festgelegt werden, ob ext4 das Freiwerden von Speicherbereichen per TRIM-Kommando an das gemountete Gerät meldet; unterstützt wird dies von SSDs und dem Device Mapper (bei thin provisioning).[14]
Bei bestehenden ext3-Partitionen können einige der ext4-Features ohne Neuformatierung aktiviert werden.[15][16] ext2- und ext3-Partitionen können eingehängt werden, als wären sie ext4-Partitionen. Daraus ergeben sich durch Optimierung im ext4-Treiber bereits kleine Performancegewinne.
Nachteile
Die Blockgröße kann bei ext4 nicht weniger als 512 Bytes betragen. Das schränkt seine Verwendung bei Speicherknappheit und vielen kleinen Dateien ein.
Zeitverzögerte Allokation von Dateiblöcken und Inodes erhöht das Risiko von Datenverlust bei Abstürzen oder Stromausfall. In Kernel Version 2.6.30 wurde dieses Problem gegenüber früheren Versionen entschärft.
Weblinks
- The Performance Of EXT4 Then & Now (englisch)
- File-System Benchmarks With The Linux 2.6.34 Kernel (englisch) (Performance-Vergleich zu anderen Dateisystemen)
- pro-linux: Das Dateisystem ext4 - Eigenschaften und Benchmarks
- https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob_plain;f=Documentation/filesystems/ext4.txt;hb=HEAD Dokumentation] (englisch)
- Fortlaufende Performancevergleiche, insbesondere zu ext3 (englisch) (nicht aktualisiert seit 2009, hier aktueller)
- Ext4 im Kernel-Newbies-Wiki (englisch)
- heise open: Das Linux-Dateisystem Ext4
Einzelnachweise
- ↑ http://kernelnewbies.org/Ext4
- ↑ Linux-Dateisystem ext4 im Kernel 2.6.19 auf heise.de, 12. Oktober 2006
- ↑ Linux-Kernel 2.6.28 erschienen auf heise open, 25. Dezember 2008
- ↑ Ext4 Wiki: Extents
- ↑ Das Linux-Dateisystem Ext4
- ↑ Linux Kernel Newbies - ext4
- ↑ Kerneldoc zu ext4
- ↑ Linux Kernel Newbies - ext4
- ↑ Ext4 Wiki: Ext4 Howto – Online defragmentation
- ↑ a b man-page zu mount - ext4 mount options
- ↑ Proceedings of the Linux Symposium 2008 PDF Kapitel 2.3, 2.4
- ↑ Proceedings of the Linux Symposium 2008 PDF Kapitel 1
- ↑ Proceedings of the Linux Symposium 2008 PDF Kapitel 3, 4
- ↑ Ext4 in der Kerneldokumentation
- ↑ Thorsten Leemhuis: Drei Dateisysteme dazu auf heise open, 30. November 2006
- ↑ Linux Kernel Newbies Migrate existing Ext3 filesystems to Ext4