Ext2

Der ext2 oder zweit hat sich ausgestreckt filesystem ist ein Dateisystem für den Kern von Linux. Es wurde durch die Rémy Karte als ein Ersatz für das verlängerte Dateisystem (App.) am Anfang entworfen.

Die kanonische Durchführung von ext2 ist der ext2fs filesystem Fahrer im Kern von Linux. Andere Durchführungen (der unterschiedlichen Qualität und Vollständigkeit) bestehen im GNU Hurd, MINIX 3, Mac OS X (Dritt-), Darwin (dasselbe Dritt-als Mac OS X, aber ungeprüft), einige BSD Kerne, in Atari MiNT, und als Drittwindows-Fahrer von Microsoft.

ext2 war der Verzug filesystem in mehrerem Vertrieb von Linux, einschließlich Debian und Red Hat Linux, bis verdrängt, mehr kürzlich durch ext3, der fast mit ext2 völlig vereinbar ist und ein journaling Dateisystem ist. ext2 ist noch der filesystem der Wahl für Blitz-basierte Speichermedien (wie SD-Karten und USB-Blitz-Laufwerke), da sein Mangel an einer Zeitschrift die Zahl dessen minimiert, schreibt, und Blitz-Geräte haben eine begrenzte Zahl von Schreibzyklen. Neue Kerne unterstützen jedoch eine Zeitschriftenwenigerweise von ext4, der denselben Vorteil zusammen mit mehreren ext4-spezifischen Vorteilen anbieten würde.

Geschichte

Die frühe Entwicklung des Kerns von Linux wurde als eine Quer-Entwicklung unter Minix Betriebssystem gemacht. Natürlich war es offensichtlich, dass das MINIX Dateisystem als das erste Dateisystem von Linux verwendet würde. Das Minix Dateisystem war größtenteils frei von Programmfehlern, aber hat 16-Bit-Ausgleiche innerlich verwendet und hatte so eine maximale Größe-Grenze von nur 64 Megabytes. Es gab auch eine Dateinamenlänge-Grenze von 14 Charakteren. Wegen dieser Beschränkungen hat Arbeit auf einem Ersatzeingeborener-Dateisystem für Linux begonnen.

Um die Hinzufügung neuer Dateisysteme zu erleichtern und eine allgemeine Datei-API zur Verfügung zu stellen, wurde VFS, eine virtuelle Dateisystemschicht, zum Kern von Linux hinzugefügt. Das verlängerte Dateisystem (App.), wurde im April 1992 als das erste Dateisystem mit der VFS API veröffentlicht und wurde in die Version 0.96c von Linux eingeschlossen. Das App.-Dateisystem hat die zwei Hauptprobleme im Dateisystem von Minix (maximale Teilungsgröße und Dateinamenlänge-Beschränkung zu 14 Charakteren) behoben, und hat 2 Gigabytes von Daten und Dateinamen von bis zu 255 Charakteren erlaubt. Aber es hatte noch Probleme: Es gab keine Unterstützung von getrennten Zeitstempeln für den Dateizugang, inode Modifizierung und Datenmodifizierung.

Als eine Lösung für diese Probleme wurden zwei neue filesystems im Januar 1993 entwickelt: Xiafs und das zweite verlängerte Dateisystem (ext2), der eine Überholung des verlängerten Dateisystems war, das viele Ideen vom Berkeley Schnelles Dateisystem vereinigt. ext2 wurde auch mit der Dehnbarkeit im Sinn mit dem Raum entworfen, der in vielen seiner Datenstrukturen auf der Platte für den Gebrauch durch zukünftige Versionen verlassen ist.

Seitdem ist ext2 ein Prüfstand für viele der neuen Erweiterungen auf die VFS API gewesen. Eigenschaften wie POSIX ACLs und erweiterte Attribute wurden allgemein zuerst auf ext2 durchgeführt, weil es relativ einfach war sich auszustrecken und seine internals gut verstanden wurden.

Auf Linux Kernen vor 2.6.17 bedeuten Beschränkungen im Block-Fahrer, dass ext2 filesystems eine maximale Dateigröße 2TB haben.

ext2 wird noch über journaling Dateisysteme auf urladefähigen USB-Blitz-Laufwerken und anderen Halbleiterlaufwerken empfohlen. ext2 leistet weniger schreiben als ext3, da es der Zeitschrift nicht zu schreiben braucht. Da der Hauptaltersfaktor eines Blitz-Spans die Zahl dessen ist, löschen Zyklen, und weil diejenigen oft darauf geschehen, schreibt, weniger zu haben, schreibt Zunahmen die Lebensdauer des Halbleitergeräts. Eine andere gute Praxis für filesystems auf Blitz-Geräten ist der Gebrauch der Noatime-Gestell-Auswahl aus demselben Grund.

Ext2-Datenstrukturen

Der Raum in ext2 wird in Blöcke aufgeteilt. Diese Blöcke werden in Block-Gruppen gruppiert, zu Zylindergruppen im Unix Dateisystem analog. Es gibt normalerweise Tausende von Blöcken auf einem großen Dateisystem. Daten für jede gegebene Datei werden normalerweise innerhalb einer einzelnen Block-Gruppe wo möglich enthalten. Das wird getan, um die Zahl-Platte zu reduzieren und zu minimieren, sucht, wenn man großen Betrag von Konsekutivdaten liest.

Jede Block-Gruppe enthält eine Kopie des Superblocks und Block-Gruppendeskriptor-Tabelle, und alle Block-Gruppen enthalten einen Block bitmap, ein inode bitmap, ein inode Tisch und schließlich die wirklichen Datenblöcke.

Der Superblock enthält wichtige Information, die für das Starten des Betriebssystems entscheidend ist. So werden Aushilfskopien in vielfachen Block-Gruppen im Dateisystem gemacht. Jedoch wird normalerweise nur die erste Kopie davon, die am ersten Block des Dateisystems gefunden wird, im Starten verwendet.

Der Gruppendeskriptor versorgt die Position des Blocks bitmap, inode bitmap und des Anfangs des inode Tisches für jede Block-Gruppe. Diese werden abwechselnd in einem Gruppendeskriptor-Tisch versorgt.

Inodes

Jede Datei oder Verzeichnis werden durch einen inode vertreten. Der Ursprung des Begriffes "inode" ist unbekannt, aber es könnte aus dem "Index-Knoten gekommen sein." Der inode schließt Daten über die Größe, die Erlaubnis, das Eigentumsrecht und die Position auf der Platte der Datei oder des Verzeichnisses ein.

Beispiel von ext2 inode Struktur:

Zitat aus der linux Kerndokumentation für ext2:

"Es gibt Zeigestöcke zu den ersten 12 Blöcken, die die Daten der Datei im inode enthalten. Es gibt einen Zeigestock zu einem indirekten Block (der Zeigestöcke zum folgenden Satz von Blöcken enthält), ein Zeigestock zu einem doppelt indirekten Block und ein Zeigestock zu einem dreifach indirekten Block.

Also, es gibt eine Struktur in ext2, der 15 Zeigestöcke hat. Zeigestöcke 1 bis 12 Punkt zu direkten Blöcken, Zeigestock 13 Punkte zu einem indirekten Block, Zeigestock 14 Punkte zu einem doppelt indirekten Block und Zeigestock 15 Punkte zu einem dreifach indirekten Block.

Verzeichnisse

Jedes Verzeichnis ist eine Liste von Verzeichniseinträgen. Jeder Verzeichniszugang vereinigt einen Dateinamen mit einer inode Zahl, und besteht aus der inode Zahl, der Länge des Dateinamens und dem wirklichen Text des Dateinamens. Um eine Datei zu finden, wird das Verzeichnis verkehrt herum nach dem verbundenen Dateinamen gesucht. Für angemessene Verzeichnisgrößen ist das fein. Aber für riesige große Verzeichnisse ist das ineffizient, und ext3 bietet eine zweite Weise an, Verzeichnisse zu versorgen, der effizienter ist als gerade eine Liste von Dateinamen.

Das Wurzelverzeichnis wird immer in der inode Nummer zwei versorgt, so dass der Dateisystemcode es in der Gestell-Zeit finden kann. Unterverzeichnisse werden durch die Speicherung des Namens des Unterverzeichnisses im Namenfeld und der inode Zahl des Unterverzeichnisses im inode Feld durchgeführt. Harte Verbindungen werden durch die Speicherung derselben inode Zahl mit mehr als einem Dateinamen durchgeführt. Das Zugreifen auf die Datei durch jeden Namen läuft auf dieselbe inode Zahl, und deshalb dieselben Daten hinaus.

Die speziellen Verzeichnisse "." (aktuelles Verzeichnis) und ".." (Elternteilverzeichnis) werden durch die Speicherung der Namen "." durchgeführt und ".." im Verzeichnis und der inode Zahl der aktuellen und Elternteilverzeichnisse im inode Feld. Die einzige spezielle Behandlung, die diese zwei Einträge erhalten, besteht darin, dass sie automatisch geschaffen werden, wenn jedes neue Verzeichnis gemacht wird, und sie nicht gelöscht werden können.

Das Zuteilen von Daten

Wenn eine neue Datei oder Verzeichnis geschaffen werden, muss ext2 entscheiden, wo man die Daten versorgt. Wenn die Platte größtenteils leer ist, dann können Daten fast überall versorgt werden. Jedoch wird das Sammeln der Daten mit zusammenhängenden Daten Positionierungszeiten minimieren und Leistung maximieren.

ext2 versucht, jedes neue Verzeichnis in der Gruppe zuzuteilen, die sein Elternteilverzeichnis auf der Theorie enthält, dass Zugänge zum Elternteil und den Kinderverzeichnissen wahrscheinlich nah verbunden sein werden. ext2 versucht auch, Dateien in dieselbe Gruppe wie ihre Verzeichniseinträge zu legen, weil Verzeichniszugänge häufig zu Dateizugängen führen. Jedoch, wenn die Gruppe voll ist, dann werden die neue Datei oder das neue Verzeichnis in eine andere nichtvolle Gruppe gelegt.

Die Datenblöcke mussten Verzeichnisse versorgen, und Dateien können durch das Schauen in der Datenzuteilung bitmap gefunden werden. Jeder erforderliche Raum im inode Tisch kann durch das Schauen in der inode Zuteilung bitmap gefunden werden.

Dateisystemgrenzen

Der Grund für einige Grenzen von ext2 ist das Dateiformat der Daten und des Kerns des Betriebssystems. Größtenteils werden diese Faktoren einmal bestimmt, wenn das Dateisystem gebaut wird. Sie hängen von der Block-Größe und dem Verhältnis der Zahl von Blöcken und inodes ab.

In Linux wird die Block-Größe durch die Architektur-Seitengröße beschränkt.

Es gibt auch einige userspace Programme, die Dateien nicht behandeln können, die größer sind als 2 GB.

Die maximale Dateigröße wird auf die Minute (((b/4) + (b/4) +b/4+12) *b, 2*b), wegen des i_block (eine Reihe von EXT2_N_BLOCKS) und i_blocks (32-Bit-Wert der ganzen Zahl) das Darstellen der Zahl des B-Bytes "Blöcke" in der Datei beschränkt.

Die max Zahl von Subniveau-Verzeichnissen ist 31998, wegen der Verbindungsgrenze der Zählung. Das Verzeichnisindexieren ist in ext2 nicht verfügbar, also gibt es Leistungsprobleme für Verzeichnisse mit einer Vielzahl von Dateien (10,000 +). Die theoretische Grenze auf der Zahl von Dateien in einem Verzeichnis ist 1.3 × 10, obwohl das für praktische Situationen nicht wichtig ist.

Zeichen: In Linux 2.4 und früher wurden Block-Geräte auf 2 TB beschränkt, die maximale Größe einer Teilung unabhängig von der Block-Größe beschränkend.

Kompressionserweiterung

e2compr ist eine Modifizierung zum ext2 Fahrer im Kern von Linux, um Kompression und Dekompression von Dateien durch das Dateisystem ohne jede Unterstützung durch Benutzeranwendungen zu unterstützen. e2compr ist ein kleiner Fleck gegen ext2.

E2compr-Kompressen nur regelmäßige Dateien; die Verwaltungsdaten (Superblock, inodes, Verzeichnisdateien usw.) werden (hauptsächlich aus Sicherheitsgründen) nicht zusammengepresst. Für den Zugang zu komprimierten Blöcken wird gelesen gesorgt, und schreiben Sie Operationen. Der Kompressionsalgorithmus und die Traube-Größe werden auf einer Basis pro Datei angegeben. Verzeichnisse können auch für die Kompression gekennzeichnet werden, in welchem Fall jede kürzlich geschaffene Datei im Verzeichnis mit derselben Traube-Größe und demselben Algorithmus automatisch zusammengepresst wird, der für das Verzeichnis angegeben wurde.

e2compr ist nicht ein neues Dateisystem. Es ist nur ein Fleck zu ext2, der gemacht ist die EXT2_COMPR_FL Fahne unterstützen. Es verlangt nicht, dass Sie eine neue Teilung machen und wird fortsetzen, vorhandene ext2 Dateisysteme zu lesen oder zu schreiben. Man kann es als einfach ein Weg für das gelesene denken und Routinen schreiben, um auf Dateien zuzugreifen, die durch ein einfaches Dienstprogramm geschaffen worden sein könnten, das gzip oder Kompresse ähnlich ist. Zusammengepresste und unkomprimierte Dateien koexistieren nett auf ext2 Teilungen.

Der letzte E2compr-Zweig ist für aktuelle Ausgaben von Linux 2.4, 2.6, und 3.0 verfügbar. Der letzte Fleck für Linux 3.0 wurde im August 2011 veröffentlicht und stellt mulitcore und Himem-Unterstützung zur Verfügung. Es gibt auch Zweige für Linux 2.0 und 2.2.

Siehe auch

  • e2fsprogs
  • App.: Vorfahr von ext2
  • ext3: verlängerte Version von ext2
  • ext4: das vierte verlängerte Dateisystem
  • StegFS: Ein steganographic Dateisystem, das auf ext2 gestützt ist
  • cloop
  • SquashFS
  • Liste von Dateisystemen
  • Vergleich von Dateisystemen
  • Filesystem in Userspace (SICHERUNG)
Referenzen

Weiterführende Literatur

Links


Source is a modification of the Wikipedia article Ext2, licensed under CC-BY-SA. Full list of contributors here.
Freizeit-Klage Larry / Ext3
Impressum & Datenschutz