GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Grundlegendes Linux-Dateisystem-Tutorial – ext2, ext3, ext4, JFS und XFS

Das ursprüngliche Linux-System verwendete ein einfaches Dateisystem, das die Funktionalität des Unix-Dateisystems nachahmte. In diesem Tutorial werden wir das grundlegende Dateisystem besprechen, das in Linux verwendet wird.

Das ext-Dateisystem

Das ursprüngliche Dateisystem, das mit dem Linux-Betriebssystem eingeführt wurde, wird als erweitertes Dateisystem (oder kurz ext) bezeichnet. Es bietet ein grundlegendes Unix-ähnliches Dateisystem für Linux, das virtuelle Verzeichnisse verwendet, um physische Geräte zu handhaben, und Daten in Blöcken fester Länge auf den physischen Geräten speichert.

Das Ext-Dateisystem verwendet ein System namens Inodes, um Informationen über die im virtuellen Verzeichnis gespeicherten Dateien zu verfolgen. Das Inode-System erstellt auf jedem physischen Gerät eine separate Tabelle, die als Inode-Tabelle bezeichnet wird, um die Dateiinformationen zu speichern. Jede gespeicherte Datei im virtuellen Verzeichnis hat einen Eintrag in der Inode-Tabelle. Der erweiterte Teil des Namens stammt von den zusätzlichen Daten, die er in jeder Datei verfolgt, die aus Folgendem bestehen:

  • Der Dateiname
  • Die Dateigröße
  • Eigentümer der Datei
  • Die Gruppe, zu der die Datei gehört
  • Zugriffsberechtigungen für die Datei
  • Zeiger auf jeden Plattenblock, der Daten aus der Datei enthält

Linux referenziert jeden Inode in der Inode-Tabelle mit einer eindeutigen Nummer (als Inode-Nummer bezeichnet), die vom Dateisystem zugewiesen wird, wenn Datendateien erstellt werden. Das Dateisystem verwendet die Inode-Nummer, um die Datei zu identifizieren, anstatt den vollständigen Dateinamen und Pfad verwenden zu müssen.

Das ext2-Dateisystem

Das ursprüngliche Ext-Dateisystem hatte einige Einschränkungen, wie z. B. die Begrenzung von Dateien auf nur 2 GB Größe. Nicht allzu lange nach der Einführung von Linux wurde das ext-Dateisystem aktualisiert, um das zweite erweiterte Dateisystem namens ext2 zu erstellen. Wie Sie sich vorstellen können, ist das ext2-Dateisystem eine Erweiterung der grundlegenden Fähigkeiten des ext-Dateisystems, behält jedoch die gleiche Struktur bei. Das ext2-Dateisystem erweitert das Inode-Tabellenformat, um zusätzliche Informationen über jede Datei auf dem System zu verfolgen.

Die Inode-Tabelle ext2 fügt die Zeitwerte für die Erstellung, Änderung und den letzten Zugriff für Dateien hinzu, um Systemadministratoren dabei zu helfen, den Dateizugriff auf dem System zu verfolgen. Das ext2-Dateisystem erhöht auch die maximal zulässige Dateigröße auf 2 TB (in späteren Versionen von ext2 wurde diese dann auf 32 TB erhöht), um die Aufnahme großer Dateien zu erleichtern, die häufig auf Datenbankservern zu finden sind.

Neben der Erweiterung der Inode-Tabelle hat das ext2-Dateisystem auch die Art und Weise geändert, wie Dateien in den Datenblöcken gespeichert werden. Ein häufiges Problem mit dem ext-Dateisystem bestand darin, dass beim Schreiben einer Datei auf das physische Gerät die zum Speichern der Daten verwendeten Blöcke dazu neigen, über das gesamte Gerät verstreut zu sein (Fragmentierung genannt). Die Fragmentierung von Datenblöcken kann die Leistung des Dateisystems beeinträchtigen, da es länger dauert, das Speichergerät zu durchsuchen, um auf alle Blöcke einer bestimmten Datei zuzugreifen.

Das ext2-Dateisystem hilft, die Fragmentierung zu reduzieren, indem Plattenblöcke beim Speichern einer Datei in Gruppen zugewiesen werden. Durch die Gruppierung der Datenblöcke für eine Datei muss das Dateisystem nicht das gesamte physische Gerät nach den Datenblöcken durchsuchen, um die Datei zu lesen. Das ext2-Dateisystem war viele Jahre lang das Standarddateisystem, das in Linux-Distributionen verwendet wurde, aber auch es hatte seine Grenzen. Die Inode-Tabelle ist zwar ein nettes Feature, das es dem Dateisystem ermöglicht, zusätzliche Informationen über Dateien zu verfolgen, kann aber Probleme verursachen, die für das System fatal sein können. Jedes Mal, wenn das Dateisystem eine Datei speichert oder aktualisiert, muss es die Inode-Tabelle mit den neuen Informationen modifizieren. Das Problem ist, dass dies nicht immer eine fließende Aktion ist.

Wenn zwischen der Speicherung der Datei und der Aktualisierung der Inode-Tabelle etwas mit dem Computersystem passieren sollte, würden die beiden nicht mehr synchron sein. Das ext2-Dateisystem ist dafür bekannt, dass es aufgrund von Systemabstürzen und Stromausfällen leicht beschädigt werden kann. Selbst wenn die Dateidaten problemlos auf dem physischen Gerät gespeichert sind, würde das ext2-Dateisystem nicht einmal wissen, dass die Datei existiert, wenn der Eintrag in der Inode-Tabelle nicht vollständig wäre! Es dauerte nicht lange, bis Entwickler einen anderen Weg von Linux-Dateisystemen erkundeten.

Journaling-Dateisysteme

Journaling-Dateisysteme bieten dem Linux-System ein neues Maß an Sicherheit. Anstatt Daten direkt auf das Speichergerät zu schreiben und dann die Inode-Tabelle zu aktualisieren, schreiben Journaling-Dateisysteme Dateiänderungen zuerst in eine temporäre Datei (das so genannte Journal). Nachdem Daten erfolgreich auf das Speichergerät und die Inode-Tabelle geschrieben wurden, wird der Journaleintrag gelöscht.

Sollte das System abstürzen oder einen Stromausfall erleiden, bevor die Daten auf das Speichergerät geschrieben werden können, liest das Journaling-Dateisystem einfach die Journaldatei durch und verarbeitet alle verbleibenden nicht festgeschriebenen Daten. Es gibt drei verschiedene Journaling-Methoden, die häufig unter Linux verwendet werden, jede mit unterschiedlichen Schutzstufen. Diese sind unten in der Tabelle aufgeführt.

Methoden des Journaling-Dateisystems:

Methode Beschreibung
Datenmodus Sowohl Inode- als auch Dateidaten werden aufgezeichnet. Geringes Datenverlustrisiko, aber schlechte Leistung.
Bestellter Modus Nur Inode-Daten werden in das Journal geschrieben, aber nicht entfernt, bis Dateidaten erfolgreich geschrieben wurden. Guter Kompromiss zwischen Leistung und Sicherheit.
Writeback-Modus Nur Inode-Daten werden in das Journal geschrieben, keine Kontrolle darüber, wann die Dateidaten geschrieben werden. Höheres Risiko, Daten zu verlieren, aber immer noch besser, als kein Journaling zu verwenden.

Einschränkung

Die Datenmodus-Journaling-Methode ist bei weitem die sicherste zum Schutz von Daten, aber auch die langsamste. Alle auf ein Speichergerät geschriebenen Daten müssen zweimal geschrieben werden, einmal in das Journal und dann wieder auf das eigentliche Speichergerät. Dies kann zu schlechter Leistung führen, insbesondere bei Systemen, die viele Daten schreiben. Im Laufe der Jahre sind in Linux einige verschiedene Journaling-Dateisysteme aufgetaucht. Die folgenden Abschnitte beschreiben die gängigen Linux-Journaling-Dateisysteme, die verfügbar sind.

Die erweiterten Linux-Journaling-Dateisysteme

Dieselbe Gruppe, die die ext- und ext2-Dateisysteme als Teil des Linux-Projekts entwickelt hat, erstellte auch Journaling-Versionen der Dateisysteme. Diese Journaling-Dateisysteme sind mit dem ext2-Dateisystem kompatibel, und es ist einfach, zwischen ihnen hin und her zu konvertieren. Derzeit gibt es zwei getrennte Journaling-Dateisysteme, die auf dem ext2-Dateisystem basieren.

Th ext3-Dateisystem

Das ext3-Dateisystem wurde 2001 zum Linux-Kernel hinzugefügt und war bis vor kurzem das Standarddateisystem, das von fast allen Linux-Distributionen verwendet wurde. Es verwendet dieselbe Inode-Tabellenstruktur wie das ext2-Dateisystem, fügt jedoch jedem Speichergerät eine Journaldatei hinzu, um die auf das Speichergerät geschriebenen Daten zu protokollieren.

Standardmäßig verwendet das ext3-Dateisystem die Journaling-Methode im geordneten Modus, wobei die Inode-Informationen nur in die Journaldatei geschrieben, aber nicht entfernt werden, bis die Datenblöcke erfolgreich auf das Speichergerät geschrieben wurden. Sie können die im ext3-Dateisystem verwendete Journaling-Methode mit einer einfachen Befehlszeilenoption beim Erstellen des Dateisystems entweder in den Daten- oder den Rückschreibmodus ändern.

Während das ext3-Dateisystem dem Linux-Dateisystem grundlegendes Journaling hinzufügte, fehlten ihm noch einige Dinge. Beispielsweise bietet das ext3-Dateisystem keine Wiederherstellung nach versehentlichem Löschen von Dateien, es ist keine integrierte Datenkomprimierung verfügbar (obwohl es einen Patch gibt, der separat installiert werden kann, der diese Funktion bereitstellt), und das ext3-Dateisystem tut dies unterstützt keine Verschlüsselung von Dateien. Aus diesen Gründen entscheiden sich die Entwickler des Linux-Projekts dafür, weiter an der Verbesserung des ext3-Dateisystems zu arbeiten.

Das ext4-Dateisystem

Das Ergebnis der Erweiterung des ext3-Dateisystems war (wie Sie wahrscheinlich erraten haben) das ext4-Dateisystem. Das ext4-Dateisystem wurde 2008 offiziell im Linux-Kernel unterstützt und ist jetzt das Standarddateisystem, das in den meisten gängigen Linux-Distributionen wie Fedora und Ubuntu verwendet wird.

Darüber hinaus unterstützt das ext4-Dateisystem zur Unterstützung von Komprimierung und Verschlüsselung auch eine Funktion namens Extents. Extents weisen Speicherplatz auf einem Speichergerät in Blöcken zu und speichern nur die Position des Startblocks in der Inode-Tabelle. Dies hilft, Platz in der Inode-Tabelle zu sparen, da nicht alle Datenblöcke aufgelistet werden müssen, die zum Speichern von Daten aus der Datei verwendet werden.

Das ext4-Dateisystem enthält auch eine Blockvorbelegung. Wenn Sie Speicherplatz auf einem Speichergerät für eine Datei reservieren möchten, von der Sie wissen, dass sie größer wird, ist es mit dem ext4-Dateisystem möglich, alle erwarteten Blöcke für die Datei zuzuweisen, nicht nur die Blöcke, die physisch vorhanden sind. Das ext4-Dateisystem füllt die reservierten Datenblöcke mit Nullen und weiß, dass es sie keiner anderen Datei zuordnen soll.

Das Reiser-Dateisystem

Im Jahr 2001 erstellte Hans Reiser das erste Journaling-Dateisystem für Linux namens ReiserFS. Das ReiserFS-Dateisystem unterstützt nur den Writeback-Journaling-Modus, wobei nur die Inode-Tabellendaten in die Journaldatei geschrieben werden. Da es nur die Inode-Tabellendaten in das Journal schreibt, ist das ReiserFS-Dateisystem eines der schnellsten Journaling-Dateisysteme in Linux.

Zwei interessante Funktionen, die in das ReiserFS-Dateisystem integriert sind, sind, dass Sie die Größe eines vorhandenen Dateisystems ändern können, während es noch aktiv ist, und dass es eine Technik namens Tailpacking verwendet, die Daten aus einer Datei in einen leeren Bereich in einem Datenblock einer anderen Datei stopft. Die Funktion zur Größenänderung des aktiven Dateisystems ist großartig, wenn Sie ein bereits erstelltes Dateisystem erweitern müssen, um mehr Daten aufzunehmen.

Das Journaled File System (JFS)

Möglicherweise eines der ältesten Journaling-Dateisysteme, das Journaled File System (JFS), wurde 1990 von IBM für seine AIX-Variante von Unix entwickelt. Allerdings wurde es erst in seiner zweiten Version in die Linux-Umgebung portiert.

Hinweis – Der offizielle IBM-Name der zweiten Version des JFS-Dateisystems ist JFS2, aber die meisten Linux-Systeme bezeichnen es nur als JFS.

Das JFS-Dateisystem verwendet die geordnete Journaling-Methode, speichert nur die Inode-Tabellendaten im Journal, entfernt sie jedoch nicht, bis die eigentlichen Dateidaten auf das Speichergerät geschrieben wurden. Diese Methode ist ein Kompromiss zwischen der Geschwindigkeit des ReiserFS und der Integrität der Datenmodus-Journaling-Methode.

Das JFS-Dateisystem verwendet eine Extent-basierte Dateizuordnung und weist jeder Datei, die auf das Speichergerät geschrieben wird, eine Gruppe von Blöcken zu. Diese Methode sorgt für weniger Fragmentierung auf dem Speichergerät. Außerhalb der IBM Linux-Angebote wird das JFS-Dateisystem nicht häufig verwendet, aber Sie können auf Ihrer Linux-Reise darauf stoßen.

Das xfs-Dateisystem

Das XFS-Journaling-Dateisystem ist ein weiteres Dateisystem, das ursprünglich für ein kommerzielles Unix-System entwickelt wurde und seinen Weg in die Linux-Welt gefunden hat. Silicon Graphics Incorporated (SGI) hat XFS ursprünglich 1994 für sein kommerzielles Unix-System IRIX entwickelt. Es wurde 2002 für die allgemeine Verwendung in der Linux-Umgebung veröffentlicht.

Das XFS-Dateisystem verwendet den Writeback-Modus des Journaling, der eine hohe Leistung bietet, aber ein gewisses Risiko mit sich bringt, da die eigentlichen Daten nicht in der Journaldatei gespeichert werden. Das XFS-Dateisystem ermöglicht auch eine Online-Größenänderung des Dateisystems, ähnlich wie das ReiserFS-Dateisystem, außer dass XFS-Dateisysteme nur erweitert und nicht verkleinert werden können.


Linux
  1. So ändern Sie die Namen der Linux-Partitionsbezeichnungen auf EXT4 / EXT3 / EXT2 und Swap

  2. So migrieren Sie Ext2/Ext3-Dateisysteme auf Ext4 unter Linux

  3. Linux-Dateisysteme:Ext2 vs. Ext3 vs. Ext4

  4. 5 Methoden zur Identifizierung Ihres Linux-Dateisystemtyps (Ext2 oder Ext3 oder Ext4)

  5. Was sind Softlinks und Hardlinks im Linux-Dateisystem?

So erstellen Sie ein neues Ext4-Dateisystem (Partition) unter Linux

Erstellen und erweitern Sie das XFS-Dateisystem basierend auf LVM

So sichern Sie Ext2-, Ext3- oder Ext4-Dateisysteme unter Linux

So überprüfen und reparieren Sie ein Dateisystem in RHEL Linux

Tripwire-Tutorial:Hostbasiertes Linux-Angriffserkennungssystem

Grundlegende Dateiberechtigungen und Eigentumsrechte in Linux verstehen