close

Ext4

Zur Navigation gehen Zur Suche gehen
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
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
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 ]

Image
Vergleich zwischen ext3 und ext4.

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
  • Cache-Mapping-Informationen.
  • Link zu Seiten in Transaktionen, um Ordnung zu gewährleisten.
    • Die Option "bh" zwingt das System, Pufferköpfe zu verwenden.
    • Die Option „nobh“ versucht, das Binden von Pufferköpfen zu vermeiden (nur für den „Writeback“-Modus verfügbar).
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

  1. ^ "Migration zu Ext4" . Archiviert vom Original am 1. Dezember 2008 . Abgerufen am 14. Dezember 2008 . 
  2. ^ „Ext4-Übersicht“ . Abgerufen am 15. Januar 2008 .   ( defekter Link verfügbar im Internetarchiv ; siehe Historie , erste und letzte Version ).
  3. Ext4-Howto
  4. Vijayan Prabhakaran, et al . IRON-Dateisysteme (PDF) . CS-Abteilung, Universität von Wisconsin. 
  5. http://kernelnewbies.org/Ext4#head-38e6ac2b5f58f10989d72386e6f9cc2ef7217fb0

Siehe auch