Ext4
| ext4 | ||
|---|---|---|
| Entwickler | Mingming Cao, Dave Kleikamp, Alex Tomas, Andrew Morton und andere | |
| Vollständiger Name | Viertes erweitertes Dateisystem | |
| Unterstützte Betriebssysteme | Linux | |
| Einführung | 10. Oktober 2006 ( Linux 2.6.19) | |
| Partitionskennung |
0x83 ( MBR ) EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT) | |
| Strukturen | ||
| Inhalt des Verzeichnisses | Tisch, Baum | |
| Speicherort | Bitmap (freier Platz in Bitmap), Tabelle (Metadaten) | |
| schlechte Blöcke | Tisch | |
| Grenzen | ||
| Maximale Dateigröße | 16 TiB (unter Verwendung von 4k-Blöcken) | |
| Maximale Anzahl von Dateien | 4 Milliarden (4x10⁹) (angegeben zum Zeitpunkt der Erstellung des Dateisystems) | |
| Maximale Dateinamengröße | 256Byte | |
| Maximale Volumengröße | 1024 PiB = 1 EiB | |
| In Dateinamen erlaubte Zeichen | Alle Bytes außer NULL und '/' | |
| Charakteristisch | ||
| aufgezeichnete Daten | Ändern (mtime), Attribut ändern (ctime), Zugriff (atime), Löschen (dtime), Erstellen (crtime) | |
| Datumsbereich | 14. Dezember 1901 - 25. April 2514 | |
| Gabeln | Nö | |
| Attribute | Extents, noextents, mballoc, nomballoc, delalloc, nodelalloc, data=journal, data=ordered, data=writeback, commit=nrsec, orlov, oldalloc, user_xattr, nouser_xattr, acl, noacl, bsddf, minixdf, bh, nobh, journal_dev | |
| Dateizugriffsberechtigungen | Posix | |
| transparente Komprimierung | Nö | |
| transparente Verschlüsselung | Ja, seit Linux Kernel 4.1 (Juni 2015) | |
ext4 ( viertes erweitertes Dateisystem ) ist ein Journaling - Dateisystem , das am 10. Oktober 2006 von Andrew Morton als kompatible Erweiterung zu ext3 angekündigt wurde . Am 25. Dezember 2008 wurde der Linux -Kernel 2.6.28 veröffentlicht , der bereits das „experimental“-Tag aus dem ext4-Code entfernt.
Die wichtigsten Verbesserungen sind:
- Volumenunterstützung bis zu 1024 PiB .
- Extent -Unterstützung hinzugefügt .
- Niedrigere CPU Nutzung.
- Verbesserungen der Lese- und Schreibgeschwindigkeit.
Verbesserungen
Großes Dateisystem
Das ext4-Dateisystem kann sehr große Volumes von bis zu 1 Exbibyte [ 1 ] und Dateien mit einer Größe von bis zu 16 TiB verarbeiten .
Erweiterungen
Extents wurden eingeführt, um das traditionelle Blockschema zu ersetzen, das von ext2/3-Dateisystemen verwendet wird. Ein Extent ist eine Reihe zusammenhängender physischer Blöcke, die die Leistung beim Arbeiten mit großen Dateien verbessern und die Fragmentierung reduzieren . Ein einzelnes Extent in ext4 kann bis zu 128 MiB zusammenhängenden Speicherplatz mit einer Blockgröße von 4 KiB abbilden. [ 2 ]
Aufwärts- und Abwärtskompatibilität
Jedes vorhandene ext3 -System kann als ext4 gemountet werden, ohne dass das Festplattenformat geändert werden muss. Es ist auch möglich, ein ext3-Dateisystem zu aktualisieren, um die Vorteile von ext4 zu nutzen, indem Sie einige Befehle ausführen. Das bedeutet, dass Sie die Leistung, Speichergrenzen und Funktionen von ext3-Dateisystemen verbessern können, ohne das Betriebssystem neu formatieren und/oder neu installieren zu müssen . Wenn die Vorteile von ext4 auf einem Produktionssystem benötigt werden, kann das Dateisystem aktualisiert werden. Das Verfahren ist sicher und es besteht kein Risiko für die Daten (obwohl es immer empfohlen wird, eine Sicherungskopie kritischer Informationen zu erstellen). Ext4 verwendet die neue Datenstruktur nur für die neuen Informationen. Die alte Struktur bleibt unverändert erhalten und kann bei Bedarf gelesen und/oder geändert werden. Das heißt, wenn Sie ein Dateisystem in ext4 konvertieren, können Sie nicht wieder zu ext3 zurückkehren. [ 3 ]
Die Verwendung von Extents ist seit Kernel-Version 2.6.23 standardmäßig behoben. Bisher musste diese Option explizit aktiviert werden (z. B. mount /dev/sda1 /mnt/point -t ext4dev -o extents).
Dauerhafte Zuweisung von Speicherplatz
Das ext4-Dateisystem ermöglicht die Reservierung von Speicherplatz für eine Datei. Bisher bestand die Methodik darin, die Datei auf der Festplatte zum Zeitpunkt ihrer Erstellung mit Nullen zu füllen. Diese Technik ist mit ext4 nicht mehr erforderlich, da dem Linux-Kernel ein neuer Systemaufruf "preallocate()" hinzugefügt wurde, der von Dateisystemen verwendet werden kann, die diese Funktion zulassen. Der für diese Dateien reservierte Speicherplatz wird garantiert und ist höchstwahrscheinlich zusammenhängend. Diese Funktion verfügt über nützliche Streaming-Anwendungen und Datenbanken.
Verzögerte Zuweisung von Speicherplatz
Ext4 verwendet eine leistungssteigernde Technik namens Allocate-on-flush , auch bekannt als verzögerte Speicherzuordnung . Es besteht darin, die Reservierung von Speicherblöcken zu verzögern, bis die Informationen auf die Festplatte geschrieben werden, im Gegensatz zu anderen Dateisystemen, die die erforderlichen Blöcke vor diesem Schritt reservieren. Dies verbessert die Leistung und reduziert die Fragmentierung, indem Entscheidungen zur Speicherzuweisung basierend auf der tatsächlichen Dateigröße verbessert werden.
Limit von 32000 Unterverzeichnissen überschritten
In ext3 war die zulässige Tiefe der Unterverzeichnisse auf 32000 begrenzt. Diese Grenze wurde in ext4 auf 64000 erhöht, wodurch sogar eine Überschreitung dieser Grenze möglich ist (unter Verwendung von "dir_nlink"). Um angesichts der Möglichkeit viel größerer Verzeichnisse eine kontinuierliche Leistung zu ermöglichen, ist htree standardmäßig auf ext4 aktiviert. Diese Funktion ist seit Version 2.6.23 implementiert. htree ist auch in ext3 verfügbar, wenn die Funktion dir_index aktiviert ist.
Journal-Prüfsumme
Ext4 verwendet Protokollprüfsummen, um die Zuverlässigkeit zu verbessern, da das Journal eine der am häufigsten verwendeten Dateien auf der Festplatte ist. Diese Funktion hat einen vorteilhaften Nebeneffekt: Sie ermöglicht es Ihnen, ein Lesen/Schreiben auf der Festplatte während des Journaling-Prozesses sicher zu vermeiden, wodurch die Leistung leicht verbessert wird. Die Prüfsummentechnik des Journals ist inspiriert von der Forschung an der University of Wisconsin zu IRON-Dateisystemen (Abschnitt 6, unter dem Namen „Transaktionsprüfsummen“). [ 4 ]
Online-Defragmentierung
Selbst wenn verschiedene Techniken zur Vermeidung von Fragmentierung verwendet werden, neigt ein langlebiges System dazu, im Laufe der Zeit zu fragmentieren. Ext4 verfügt über ein Tool, mit dem Sie einzelne Dateien oder ganze Dateisysteme defragmentieren können, ohne die Festplatte aushängen zu müssen. [ 5 ]
Schnellere Überprüfung des Dateisystems
In ext4 werden nicht zugeordnete Blockgruppen und Inode-Tabellenabschnitte als solche gekennzeichnet. Dies ermöglicht es e2fsck , sie bei seinen Prüfungen vollständig zu überspringen, und reduziert die Zeit, die erforderlich ist, um ein Dateisystem der Größe zu prüfen, für die ext4 ausgelegt ist, erheblich. Diese Funktion ist seit Version 2.6.24 des Linux-Kernels implementiert.
Multiblock-Zuordner
Ext4 weist einer Datei mehrere Blöcke in einem einzigen Vorgang zu, wodurch die Fragmentierung reduziert wird, wenn versucht wird, zusammenhängende Blöcke auf der Festplatte auszuwählen. Der Multiblock-Zuordner ist aktiv, wenn 0_DIRECT verwendet wird oder wenn die verzögerte Zuweisung aktiv ist. Dadurch kann die Datei mehrere "schmutzige" Blöcke haben, die gleichzeitig zum Schreiben angefordert werden, im Gegensatz zum aktuellen Kernel-Anforderungsmechanismus, bei dem jeder Block separat zur Zuweisung an das Dateisystem gesendet wird.
Verbesserte Zeitstempel
Da Computer im Allgemeinen schneller werden und Linux in kritischen Anwendungen immer häufiger verwendet wird, wird die Granularität von Zeitstempeln auf der Grundlage von Sekunden unzureichend. Um dies zu beheben, verfügt ext4 über Zeitstempel , die in Nanosekunden gemessen werden. Diese Funktion ist derzeit in Kernel-Version 2.6.23 implementiert. Zusätzlich wurden 2 Bits des erweiterten Zeitstempels zu den höchstwertigen Bits des Sekundenfelds der Zeitstempel hinzugefügt, um das Jahr-2038-Problem um fast 500 Jahre zu verzögern .
Befestigungsmöglichkeiten
Standard
| Möglichkeit | Charakteristisch |
|---|---|
| Daten=bestellt | Alle Daten werden aus dem Hauptdateisystem gezwungen, bevor sie mit den Metadaten des Journals verknüpft werden |
| commit=nrsec | Sie können ext3 anweisen, alle Daten und Metadaten alle "nrsec" Sekunden zu synchronisieren. Der Standardwert ist 5 Sekunden. Das bedeutet, dass bei einem Stromausfall höchstens 5 Sekunden Arbeit verloren gehen (das Dateisystem wird dank Journaling nicht beschädigt). Dieser Standardwert (oder ein niedrigerer Wert) wirkt sich auf die Leistung aus, ist jedoch ausreichend, um Ihre Daten zu schützen. Je höher die Zahl, desto besser die Leistung des Systems. Wenn Sie ihn auf 0 setzen, hat dies denselben Effekt wie der Standardwert. |
| 1(*)> | Aktivieren/deaktivieren Sie die Verwendung von Barrieren im jbd-Code. Barrier= 0 deaktiviert es, Barrier = 1 aktiviert es. Es erfordert auch ein IO, das Barrieren unterstützt, und wenn der jbd einen Fehler beim Schreiben auf eine Barriere feststellt, wird er mit einer Warnung deaktiviert ... |
| orlov | Diese Option aktiviert das neue Orlov-Festplattenblockzuweisungssystem. |
| bsddf | Sorgt dafür, dass der Befehl "df" so funktioniert wie auf BSD-Systemen. |
| data_err=ignorieren | Es zeigt nur dann eine Fehlermeldung an, wenn in einem Dateipuffer im "geordneten" Modus ein Fehler aufgetreten ist. |
| nogrpid/sysvgroups | Weist Objekten dieselbe Gruppen-ID wie ihrem Ersteller zu. |
| bh/nobh | Ext3 bildet Pufferköpfe bereits auf Datenseiten ab
|
| delalloc | Verzögern Sie das Blockschreiben, bis die Schreibzeit erreicht ist. |
Nicht standardmäßig
| Möglichkeit | Charakteristisch |
|---|---|
| Fluss | Nur lesen zulassen |
| journal_checksum | Prüfsummen archivieren, um ihre Zuverlässigkeit zu verbessern. |
| journal_async_commit | Fügen Sie die Prüfsummen der Dateien asynchron hinzu. |
| Zeitschrift = aktualisieren | Aktualisieren Sie das ext3-Dateisystemjournal auf das aktuelle Format. |
| journal_dev=devnum | Wenn sich die Mindest- und/oder Höchstwerte des Journals des externen Geräts ändern, ermöglicht diese Option dem Benutzer, den neuen Journalspeicherort anzugeben. Das Gerät „journal“ wird durch seine neuen Minimum- und Maximumzahlen identifiziert, die in „devnum“ codiert sind. |
| keine Belastung | Lädt das Journal beim Mounten des Laufwerks nicht. |
| Daten=Journal | Alle Daten werden in das "Journal" eingetragen, bevor mit dem Schreiben in das Hauptdateisystem begonnen wird. |
| Daten = Rückschreiben | Die Reihenfolge der Daten wird nicht gespeichert, die Daten können in das Hauptdateisystem geschrieben werden, nachdem ihre Metadaten in das Journal eingegeben wurden. |
| altalloc | Diese Option deaktiviert das "Orlov"-Festplattenblockzuweisungssystem. |
| user_xattr | Aktivieren Sie "Erweiterte Benutzerattribute". Sie müssen auch die Option für erweiterte Kernel-Attribute aktiviert haben (CONFIG_EXT3_FS_XATTR). |
| nouser_xattr. | Deaktivieren Sie "Erweiterte Benutzerattribute". |
| akl | Aktiviert die POSIX-Unterstützung für "Access Control List". Außerdem muss die ACL-Unterstützung im Kernel aktiviert sein (CONFIG_EXT3_FS_POSIX_ACL). |
| noacl | Deaktiviert die POSIX "Access Control List"-Unterstützung. |
| Reservierung | Inode-Reservierung |
| Reservierung | Keine Reservierung von Inodes |
| minixdf | Lässt „df“ so agieren, wie es auf Minix-Systemen der Fall ist. |
| Debuggen | Informationen über Debugging-Programme werden an das Systemprotokoll (syslog) gesendet. |
| error=remount-ro | Wenn ein Fehler auftritt, stellt der Computer das System als schreibgeschützt bereit. |
| Fehler = weiter | Wenn ein Fehler gefunden wird, arbeitet der Computer weiter. |
| Fehler = Panik | Wenn ein Fehler gefunden wird, geht der Computer in einen "Panik"-Zustand und hält das System an. |
| data_err=abbrechen | Bricht das Journal ab, wenn in einem Dateipuffer im sortierten Modus ein Fehler auftritt. |
| grpid/bsdgroups | Weist Objekten dieselbe Gruppen-ID wie ihrem Ersteller zu. |
| resgid=n | Die Gruppen-ID, die reservierte Blöcke verwenden sollen. |
| Lebenslauf=n | Die ID des Benutzers, den die reservierten Blöcke verwenden sollen. |
| sb=n | Verwenden Sie alternative Superblöcke in der "n"-Position. |
| Quote | |
| kein Kontingent | |
| grquota | |
| usrquote | |
| Streifen=n | Anzahl der Dateisystemblöcke, die der mballoc (Multi-Block-Allocator) versucht, für die Dimensionierung und Ausrichtung zu verwenden. Bei RAID 5- oder 6-Systemen sollte dies die Anzahl der Datenträger sein. |
| max_batch_time=usec | |
| min_batch_time=usec | |
| journal_ioprio=prio | Die E/A-Priorität (von 0 bis 7, wobei 0 die höchste Priorität ist), die von den Eingabe- und Ausgabevorgängen verwendet wird, die von „kjournald2“ während eines Upload-Vorgangs bereitgestellt werden. Standardmäßig ist es 3. |
Referenzen
- ^ "Migration zu Ext4" . Archiviert vom Original am 1. Dezember 2008 . Abgerufen am 14. Dezember 2008 .
- ^ „Ext4-Übersicht“ . Abgerufen am 15. Januar 2008 . ( defekter Link verfügbar im Internetarchiv ; siehe Historie , erste und letzte Version ).
- ↑ Ext4-Howto
- ↑ Vijayan Prabhakaran, et al . IRON-Dateisysteme (PDF) . CS-Abteilung, Universität von Wisconsin.
- ↑ http://kernelnewbies.org/Ext4#head-38e6ac2b5f58f10989d72386e6f9cc2ef7217fb0