Ext2-Dateisystem unter Linux. So greifen Sie auf Ext2-, Ext3- und Ext4-Dateisysteme im Ext2-Dateisystem einer Windows-Umgebung zu

So ermöglichen Sie den Zugriff auf eine Festplattenpartition oder ein Wechselmedium mit Dateisystemen in einer Windows-Umgebung Ext2/3/4 ? Wenn zum Beispiel auch ein zweites System auf dem Computer vorhanden ist Linux. Und Sie müssen mit den Daten aus der Umgebung arbeiten Windows. Oder ein anderes Beispiel – wenn virtuelle Festplatten in Windows mit installierten Systemen gemountet werden virtuelle Maschinen Systeme Linux oder Android. Mit Ext2/3/ 4 Windows kann nicht nativ arbeiten, es benötigt hierfür Tools von Drittanbietern. Was sind das für Mittel? Schauen wir uns diese unten an.

***
Die ersten drei Tools ermöglichen das ausschließliche Auslesen von Informationsgeräten Ext2/3/4. Mit der neuesten Lösung können Sie Daten sowohl lesen als auch schreiben. Alle unten besprochenen Tools sind kostenlos.

1. DiskInternals Linux Reader

Ein einfaches Programm ist ein einfacher Dateimanager, der wie ein Standard-Windows-Explorer aufgebaut ist und Dateisysteme unterstützt Durchwahl 2/3/4 , Reiser4 , HFS , UFS2. Im Programmfenster sehen wir Partitionen und Geräte mit Linux oder Android.

Zum Kopieren müssen Sie einen Ordner oder eine Datei auswählen und die Taste drücken "Speichern".

Geben Sie dann den Kopierpfad an.

2. Plugin für Total Commander DiskInternals Reader

Fans des beliebten können Daten extrahieren Linux oder Android in Windows mit diesem Dateimanager. Installieren Sie aber zunächst ein spezielles Plugin darin. Eines dieser Plugins ist , es kann formatierte Informationsgeräte verbinden und lesen Ext2/3/4 , Fett/exFAT , HFS/HFS+ , ReiserFS. Laden Sie das Plugin herunter und entpacken Sie das darin enthaltene Archiv , bestätigen Sie die Installation.

Lasst uns starten (wichtig) im Namen des Administrators. Gehen wir zum Abschnitt. Klicken.

Hier, zusammen mit anderen Festplattenpartitionen und Medien, die mit Ext2/3/4 .

Daten werden traditionell kopiert Weg - durch Drücken von F5 im zweiten Panel.

3. Plugin für Total Commander ext4tc

Eine vereinfachte Alternative zur vorherigen Lösung - ext4tc, ein weiteres Plugin für . Es kann eine Verbindung zu Lesegeräten herstellen, die nur in formatiert sind Ext2/3/4. Laden Sie das Plugin herunter, entpacken Sie sein Archiv im Dateimanager und starten Sie die Installation.

Lasst uns starten (wichtig) im Namen des Administrators. Klicken. Lass uns gehen.

Wenn Sie Daten kopieren müssen, verwenden Sie die übliche Methode mit der Taste F5.

4. Ext2Fsd-Unterstützungstreiber

Programm Ext2Fsd– Das ist der Fahrer Ext2/3/4 implementiert es die Unterstützung für diese Dateisysteme auf Betriebssystemebene. Sie können mit Festplattenpartitionen und Laufwerken, die mit diesen Dateisystemen formatiert sind, wie mit normalen von Windows unterstützten Mediengeräten in einem Explorer-Fenster oder arbeiten Programme von Drittanbietern. Mit dem Treiber können Sie Daten sowohl lesen als auch schreiben.

Laden Sie die neueste aktuelle Version herunter Ext2Fsd.

Während der Installation aktivieren wir (wenn für Langzeitarbeit) drei vorgeschlagene Kontrollkästchen:

1 — Treiber-Autorun mit Windows;
2 - Aufnahmeunterstützung für Ext2;
3 - Formatierungsunterstützung für Ext3.

In der Vorbereitungsphase aktivieren wir die Option zum Öffnen des Treibermanagerfensters – zusammen mit der Zuweisung von Informationen zu Geräten von Ext2/3/4 Laufwerksbuchstaben.

Im sich öffnenden Fenster Wir sehen die Medien mit dem bereits zugewiesenen Buchstaben. In unserem Fall zum Beispiel ein Träger mit Ext4 der erste Gratisbrief wird vergeben F.

Jetzt können wir mit der Festplatte arbeiten F im Explorer-Fenster.

Weisen Sie neu angeschlossenen Geräten einen Buchstaben zu Ext2/3/4 Dies kann über das Kontextmenü erfolgen, das für jede der im Fenster angezeigten Elemente aufgerufen wird Geräte. Aber allein durch die Zuweisung eines Laufwerksbuchstabens wird ein solches Gerät danach nicht mehr angezeigt Starten Sie Windows neu, diese Lösung gilt nur für eine Computersitzung. Um ein neues Gerät zu erstellen Ext2/3/4 Damit es in der Windows-Umgebung dauerhaft sichtbar ist, müssen Sie darauf doppelklicken, um das Konfigurationsfenster zu öffnen und dauerhafte Verbindungsparameter festzulegen. In der zweiten Spalte benötigen Sie:

Aktivieren Sie für Wechselmedien das Kontrollkästchen Nummer 1 im Screenshot und geben Sie den Laufwerksbuchstaben an.
Aktivieren Sie für interne Festplatten und Partitionen das im Screenshot unten angezeigte Kontrollkästchen mit der Nummer 2 und geben Sie außerdem den Laufwerksbuchstaben an.

14 Jun

Dateisysteme ext2, ext3, XFS, ReiserFS, NTFS

Dateisystem- Dies ist die Reihenfolge, die die Art und Weise der Organisation, Speicherung und Benennung von Daten auf elektronischen Speichermedien in Computern bestimmt.

Die Vielfalt der Dateisysteme erklärt sich aus der Tatsache, dass jedes für seine eigenen spezifischen Aufgaben erfunden wurde. Manche schreiben sehr schnell kleine Dateien (z. B. bis zu 1 GB), interagieren aber gleichzeitig schlecht mit großen Dateien oder arbeiten überhaupt nicht mit ihnen. Einige sind aus Sicherheitsgründen gut, andere aus Sicht der Lese-/Schreibgeschwindigkeit. Jedes Dateisystem hat seine eigenen Vor- und Nachteile, Schwachstellen und besonderen Fähigkeiten.

IN Linux Die am häufigsten verwendeten Dateisystemtypen sind:

  1. ext2- steht für Zweites erweitertes Dateisystem(zweites erweitertes Dateisystem). 1993 von Remy Card als Dateisystem für den Linux-Kernel entwickelt, war es von 1993 bis 2001 das Hauptdateisystem Linux.
    Der Vorteil ist eine hohe Lese-/Schreibgeschwindigkeit.
    Der Hauptnachteil des Systems ext2 ist, dass es nicht protokolliert wird, aber gerade deshalb eine großartige Leistung aufweist ( Protokollierung ist ein Journaling-Prozess, der eine Liste von Änderungen speichert, die dazu beitragen, die Integrität des Dateisystems bei verschiedenen Systemausfällen aufrechtzuerhalten.
  2. ext3- steht für Drittes erweitertes Dateisystem(dritte Version des erweiterten Dateisystems). 2001 von Stephen Tweedy entwickelt, wird noch heute in Distributionen verwendet Linux. Wurde als verbesserte geboren ext2.
    Der Vorteil dieses Systems besteht darin, dass es protokolliert wird, das heißt, seine Zuverlässigkeit erhöht sich im Vergleich zu deutlich ext2.
    Der Nachteil ist eine etwas geringere Leistung und Lese-/Schreibgeschwindigkeit.
  3. XFS— Vom Unternehmen entwickelt Siliziumgrafiken im Jahr 1993 wurde der Kern hinzugefügt Linux als Dateisystem im Jahr 2002 für die gesamte Distributionsfamilie eingeführt Linux, wird derzeit als „native“ in der Distribution verwendet roter Hut.
    Der Vorteil ist das Vorhandensein einer Metadatenprotokollierung, eine hohe Betriebsstabilität, die Unterstützung der Verteilung von Ein-/Ausgabeströmen in Gruppen, hohe Lese-/Schreibgeschwindigkeiten, die Möglichkeit der Defragmentierung auch bei gemounteter Partition und die Möglichkeit, die Größe zu erhöhen das Dateisystem. Funktioniert am effektivsten mit großen Dateien.
    Der Nachteil besteht darin, dass die Partitionsgröße nicht reduziert werden kann, die Metadatenverarbeitung nicht so schnell ist und bei kleinen Dateien deutlich langsamer arbeitet als bei anderen Dateisystemtypen.
  4. ReiserFS- vom Unternehmen entwickelt Namesys unter der Leitung von Hans Reiser im Jahr 2001. Nur verwendet Betriebssysteme Linux. Es war das erste Journaled-File-System, das in den Kernel übernommen wurde.
    Der Vorteil dieses Dateisystems besteht darin, dass es mit kleinen Dateien sehr schnell arbeitet (die Lese-/Schreibgeschwindigkeit ist höher als die des ext4), unterstützt die Protokollierung.
    Der Nachteil ist, dass sich seine Entwicklung durch die Verhaftung seines Anführers Hans Reiser merklich verlangsamt hat und es keine Hintergrundverschlüsselung gibt.
  5. NTFS- steht für Dateisystem mit neuer Technologie(Dateisystem mit neuer Technologie). Im Juli 1993 vom Unternehmen entwickelt Microsoft. Weit verbreitet in verschiedenen Betriebssystemen sowie in verschiedenen Speichermedien.
    Der Vorteil liegt in der integrierten Möglichkeit, den Zugriff auf Daten für verschiedene Benutzer einzuschränken und Einschränkungen zuzuweisen maximale Lautstärke Speicherplatz, Verwendung eines Journaling-Systems, schnelles Lesen/Schreiben kleiner Dateien.
    Der Nachteil besteht darin, dass ein stabiler Betrieb viel PC-RAM erfordert, bei großen Dateien langsam arbeitet und die Länge des Pfads zu den Dateien begrenzt ist (32.767 Unicode-Zeichen).

Auf diese einfache Weise haben wir „Dateisysteme“ herausgefunden ext2, ext3, XFS, ReiserFS, NTFS«!

Dateisystem(englisches Dateisystem) – eine Ordnung, die die Art und Weise der Organisation, Speicherung und Benennung von Daten auf Informationsspeichermedien von IT-Geräten festlegt (unter Verwendung tragbarer Flash-Speicherkarten zur wiederholten Aufzeichnung und Speicherung von Informationen in tragbaren Geräten). elektronische Geräte: Digitalkameras, Mobiltelefone usw.) und Computerausrüstung. Es definiert das Format des Inhalts und der physischen Speicherung von Informationen, die normalerweise in Form von Dateien gruppiert sind. Ein bestimmtes Dateisystem bestimmt die Größe des Dateinamens (Ordners), die maximal mögliche Datei- und Partitionsgröße sowie eine Reihe von Dateiattributen. Einige Dateisysteme bieten Dienstfunktionen wie Zugriffskontrolle oder Dateiverschlüsselung.

Dateisystemaufgaben

Die Hauptfunktionen eines jeden Dateisystems zielen auf die Lösung folgender Aufgaben ab:

Dateibenennung;

Softwareschnittstelle zum Arbeiten mit Dateien für Anwendungen;

Abbildung des logischen Modells des Dateisystems auf die physische Organisation der Datenspeicherung;
Organisation der Widerstandsfähigkeit des Dateisystems gegenüber Stromausfällen, Hardware- und Softwarefehlern;

In Mehrbenutzersystemen stellt sich eine weitere Aufgabe: die Dateien eines Benutzers vor unbefugtem Zugriff eines anderen Benutzers zu schützen sowie die Zusammenarbeit mit Dateien sicherzustellen, wenn beispielsweise einer der Benutzer eine Datei öffnet, wird für andere dieselbe Datei angezeigt vorübergehend im schreibgeschützten Modus verfügbar. .

Ein Dateisystem ist die Grundstruktur, die ein Computer zum Organisieren von Informationen auf seiner Festplatte verwendet. Bei der Installation eines neuen Festplatte Es muss für ein bestimmtes Dateisystem partitioniert und formatiert werden, woraufhin Daten und Programme darauf gespeichert werden können. In Windows gibt es drei mögliche Dateisystemoptionen: NTFS, FAT32 und das selten verwendete alte FAT-System (auch bekannt als FAT16).

NTFS ist das bevorzugte Dateisystem für diese Windows-Version. Es hat viele Vorteile gegenüber dem älteren FAT32-System; Einige davon sind unten aufgeführt.

Die Möglichkeit zur automatischen Wiederherstellung nach einigen Festplattenfehlern (FAT32 verfügt nicht über diese Funktion).
Verbesserte Unterstützung für große Festplatten.
Höheres Maß an Sicherheit. Mithilfe von Berechtigungen und Verschlüsselung können Sie Benutzern den Zugriff auf bestimmte Dateien verweigern.

Bisher wurden das FAT32-Dateisystem und das selten verwendete FAT-System verwendet Windows-Versionen, einschließlich Windows 95, Windows 98 und Windows Millenium Edition. Das FAT32-Dateisystem bietet nicht die Sicherheitsstufe von NTFS. Wenn Ihr Computer also über eine Partition oder ein Volume verfügt, die als FAT32 formatiert ist, sind die Dateien auf dieser Partition für jeden sichtbar, der Zugriff auf den Computer hat. Auch das FAT32-Dateisystem unterliegt Dateigrößenbeschränkungen. In dieser Windows-Version ist es nicht möglich, eine FAT32-Partition mit mehr als 32 GB zu erstellen. Darüber hinaus darf eine FAT32-Partition keine Datei enthalten, die größer als 4 GB ist.

Der Hauptgrund für die Verwendung eines FAT32-Systems besteht darin, dass auf dem Computer entweder Windows 95, Windows 98 oder Windows Millennium Edition oder diese Windows-Version (Konfiguration mit mehreren Betriebssystemen) ausgeführt werden kann. Um eine solche Konfiguration zu erstellen, müssen Sie die vorherige Version des Betriebssystems auf einer als FAT32 oder FAT formatierten Partition installieren und diese zur primären Partition machen (die primäre Partition kann das Betriebssystem enthalten). Andere Abschnitte, auf die zugegriffen werden kann vorherige Versionen Windows muss außerdem als FAT32 formatiert sein. Frühere Windows-Versionen können nur auf vernetzte NTFS-Partitionen oder -Volumes zugreifen. Auf NTFS-Partitionen auf dem lokalen Computer kann nicht zugegriffen werden.

FAT – Vorteile:

Es erfordert etwas RAM, um effektiv zu arbeiten.
Schnelle Arbeit mit kleinen und mittelgroßen Katalogen.
Die Festplatte macht im Durchschnitt weniger Kopfbewegungen (im Vergleich zu NTFS).
Effektive Arbeit auf langsamen Festplatten.

FAT – Nachteile:

Katastrophaler Leistungsverlust mit zunehmender Fragmentierung, insbesondere bei großen Festplatten (nur FAT32).
Schwierigkeiten beim Direktzugriff auf große Dateien (z. B. 10 % oder mehr der Festplattengröße).
Sehr langsames Arbeiten mit Verzeichnissen, die eine große Anzahl von Dateien enthalten.

NTFS - Vorteile:

Die Dateifragmentierung hat praktisch keine Auswirkungen auf das Dateisystem selbst – die Leistung eines fragmentierten Systems wird nur im Hinblick auf den Zugriff auf die Dateidaten selbst beeinträchtigt.
Auch die Komplexität der Verzeichnisstruktur und die Anzahl der Dateien in einem Verzeichnis stellen keine besonderen Leistungshindernisse dar.
Schneller Zugriff auf ein beliebiges Fragment einer Datei (z. B. Bearbeiten großer WAV-Dateien).
Sehr schneller Zugriff auf kleine Dateien (einige hundert Bytes) – die gesamte Datei befindet sich am selben Ort wie die Systemdaten (MFT-Datensatz).

NTFS – Nachteile:

Erheblicher Systemspeicherbedarf (64 MB sind das absolute Minimum, mehr ist besser).
Langsame Festplatten und Controller ohne Bus-Mastering verringern die Leistung von NTFS erheblich.
Die Arbeit mit mittelgroßen Verzeichnissen ist schwierig, da diese fast immer fragmentiert sind.
Eine Festplatte, die über einen längeren Zeitraum mit 80–90 % Auslastung betrieben wird, weist eine extrem niedrige Leistung auf.

Die folgenden Dateisysteme gelten als „nativ“ für Linux (also diejenigen, auf denen es installiert und von denen aus es gestartet werden kann): ext2fs, ext3fs, ext4fs, ReiserFS, XFS, JFS. Sie werden normalerweise bei der Installation der allermeisten Distributionen als Auswahl angeboten. Natürlich gibt es Möglichkeiten Linux-Installationen zu FAT/VFAT/FAT32-Dateisystemen, aber das ist nur für die Damen und Herren, die sich mit Perversionen auskennen, und ich werde nicht darüber sprechen.

Die Hauptkriterien bei der Auswahl eines Dateisystems sind in der Regel Zuverlässigkeit und Leistung. In manchen Fällen müssen Sie auch den Kompatibilitätsfaktor berücksichtigen – in diesem Fall ist damit die Fähigkeit anderer Betriebssysteme gemeint, auf ein bestimmtes Dateisystem zuzugreifen.
Ich beginne die Rezension mit ReiserFS – denn der Grund für das Verfassen dieser Notiz war die Frage: Was sind kleine Dateien? Schließlich ist bekannt, dass die Effizienz beim Arbeiten mit kleinen Dateien die Stärke dieses Dateisystems ist.

Mit kleinen Dateien sind also Dateien gemeint, die kleiner sind als ein logischer Block des Dateisystems, der in Linux in den meisten Fällen vier Kilobyte entspricht, obwohl er bei der Formatierung innerhalb bestimmter Grenzen (abhängig vom jeweiligen FS) angegeben werden kann. In jedem Unix-ähnlichen Betriebssystem gibt es unzählige solcher kleinen Dateien. Ein typisches Beispiel sind die Dateien, die den Baum der FreeBSD-Ports, Gentoo-Portagen und ähnlicher portähnlicher Systeme bilden.
In den meisten Dateisystemen verfügen solche Minidateien sowohl über einen eigenen Inode (einen Informationsknoten, der Metainformationen über die Datei enthält) als auch über einen Datenblock, was sowohl zu einem Speicherplatzverbrauch als auch zu einer Leistungseinbuße bei Dateivorgängen führt. Dies ist insbesondere der Grund für die katastrophale Rücksichtnahme des FreeBSD-Dateisystems (sowohl des alten UFS als auch des neuen UFS2) bei der Arbeit mit seinem eigenen Portsystem.

Im ReiserFS-Dateisystem werden in solchen Fällen keine separaten Blöcke für Daten zugewiesen – es schafft es, die Dateidaten direkt in den Inode-Bereich zu verschieben. Dadurch wird Speicherplatz gespart und die Leistung gesteigert – buchstäblich um ein Vielfaches im Vergleich zu allen anderen FS.
Dieser Umgang mit kleinen ReiserFS-Dateien hat zu der Legende über deren Unzuverlässigkeit geführt. Tatsächlich verschwinden beim Zusammenbruch des Dateisystems (also der Zerstörung von Servicebereichen) auch die Daten, die sich zusammen mit seinen Inodes befinden, mit ihnen – und zwar unwiderruflich. Während in Dateisystemen, in denen Inodes und Datenblöcke immer räumlich getrennt sind, letztere theoretisch wiederhergestellt werden können. Für ext2/ext3 gibt es also sogar Tools, mit denen Sie dies tun können.

Allerdings erweckt diese, wie jede Legende, nur den Eindruck von Authentizität. Erstens betrifft ein dauerhafter Datenverlust nur sehr kleine Dateien. Unter den Benutzerversionen gibt es praktisch keine solchen, und alle anderen können problemlos aus dem Distributionskit wiederhergestellt werden.
Zweitens war es kein Zufall, dass ich das Wort „theoretisch“ verwendet habe, als ich über die Möglichkeit sprach, Daten aus Blöcken wiederherzustellen, die ihre Verbindung zu ihren Inodes verloren haben. Denn in der Praxis ist diese Tätigkeit äußerst arbeitsintensiv und liefert kein garantiertes Ergebnis. Jeder, der dies schon einmal tun musste, wird zustimmen, dass man sich dem nur aus völliger Verzweiflung hingeben kann. Und das gilt für alle Dateisysteme Linux. Daher kann dieser Aspekt bei der Auswahl eines Dateisystems vernachlässigt werden.

In Bezug auf die Gesamtleistung ist ReiserFS definitiv schneller als alle anderen Journal-FS und in mancher Hinsicht ext2 überlegen. Einen Geschwindigkeitsvergleich einiger gängiger Dateivorgänge finden Sie hier.
Bei ReiserFS ist die Kompatibilitätssituation jedoch etwas schlechter. Der Zugriff darauf ist von Windows-Betriebssystemen aus meines Wissens nach nicht möglich. Einige Betriebssysteme der BSD-Familie (DragonFlyBSD, FreeBSD) unterstützen dieses Dateisystem, allerdings im schreibgeschützten Modus. Selbst die Wahrscheinlichkeit, dass eine beliebige Linux-LiveCD aus früheren Jahren keine ReiserFS-Unterstützung hat, ist nicht Null.

Und hier ist es an der Zeit, sich an ext3fs zu erinnern. Sein Vorteil liegt keineswegs in einer höheren Zuverlässigkeit – dies ist die gleiche Legende wie die Instabilität von ReiserFS. Ich habe von ext3fs-Abstürzen nicht weniger gehört als von ähnlichen Vorfällen mit ReiserFS. Ich selbst konnte weder das eine noch das andere zerstören. Außer, dass es mit ext2 funktionierte – aber selbst dann schon vor sehr langer Zeit, zur Zeit von Kernel 2.2 (oder sogar 2.0).

Nein, der Hauptvorteil von ext3fs ist seine Kompatibilität – es wird garantiert von jedem Linux-System gelesen. Zum Beispiel, als ich eine alte Live-CD wiederherstellte – eine Situation, die praktisch nicht so unglaublich ist, musste ich mich darauf einlassen. Auch hier können die meisten BSD-Systeme ext3fs problemlos verstehen (allerdings ohne Protokollierung). Für Windows gibt es meines Wissens auch alle möglichen Treiber und Plug-Ins für gängige Dateimanager(Typ Totaler Kommandant), der den Zugriff auf Partitionen mit ext2fs/ext3fs ermöglicht.

Leistungstechnisch hinterlässt ext3fs einen gemischten Eindruck. Erstens hängt seine Leistung stark vom Protokollierungsmodus ab, von dem es drei gibt: mit vollständiger Datenprotokollierung, teilweiser Protokollierung und Protokollierung nur von Metadaten. In jedem Modus zeigt es eine unterschiedliche Leistung bei verschiedenen Arten von Dateivorgängen. Allerdings ist die Leistung in keinem Fall rekordverdächtig.

Wenn jedoch der Leistungsanspruch an erster Stelle steht, dann ist ext2fs konkurrenzlos – allerdings muss man sich in diesem Fall überhaupt mit der fehlenden Protokollierung zufrieden geben. Und damit einhergehend mit langwierigen Überprüfungen des Dateisystems im Falle eines fehlerhaften Herunterfahrens – und das kann bei der Größe moderner Festplatten sehr lange dauern …

Folgendes kann über XFS gesagt werden. In puncto Kompatibilität gilt für ReiserFS alles, was für ReiserFS geschrieben wurde – zudem wurde es bis vor einiger Zeit nicht vom Standard-Linux-Kernel unterstützt. Auch leistungstechnisch kann XFS nicht glänzen und liegt insgesamt in etwa auf dem gleichen Niveau wie ext3fs. Und der Vorgang des Löschens von Dateien ist im Allgemeinen deprimierend langsam.
Nach meinen Beobachtungen lohnt sich der Einsatz von

Lassen Sie mich auf die Frage der Zuverlässigkeit zurückkommen. Eine banale Stromabschaltung während der normalen Arbeit des Benutzers wird in der Regel von allen Journaled-File-Systemen problemlos toleriert (und keines von ihnen gewährleistet die Sicherheit von Benutzervorgängen, die nicht auf die Festplatte geschrieben werden – die Rettung ertrinkender Menschen bleibt die Arbeit der ertrinkenden Menschen selbst). Zwar ist es für jedes Dateisystem möglich, eine Situation zu simulieren, in der das Ausschalten des Stroms zu mehr oder weniger schwerwiegenden Schäden führt. Im wirklichen Leben ist es jedoch unwahrscheinlich, dass solche Situationen auftreten. Und Sie können sie durch den Kauf einer unterbrechungsfreien Stromversorgung vollständig beseitigen – sie gibt mehr Vertrauen in die Sicherheit der Daten als die Art des Dateisystems. Nun ja, die einzige Garantie für die Wiederherstellung beschädigter Daten können in jedem Fall regelmäßige Backups sein...

Ich denke, dass die oben dargestellten Informationen für eine fundierte Entscheidung ausreichen. Meine persönliche Wahl war in den letzten Jahren ReiserFS. Gelegentlich ist es auf Systemen, auf denen es gerechtfertigt ist, alles Mögliche außerhalb der Root-Partition zu verschieben, sinnvoll, ext3fs für das Root-Dateisystem und ReiserFS für alle anderen zu verwenden.

Wenn eine separate Partition für das /boot-Verzeichnis bereitgestellt wird (und dies wird bei Verwendung empfohlen). GRUB-Bootloader von seinen Entwicklern) - dafür ist kein anderes Dateisystem als ext2fs gerechtfertigt, jegliche Protokollierung macht hier keinen Sinn. Wenn Sie schließlich eine separate Partition für alle Arten von Multimedia-Materialien erstellen, können Sie über XFS nachdenken.

Wenn wir die Erklärung methodischer angehen

ext – in den frühen Tagen von Linux war ext2 (erweitertes Dateisystem Version 2) vorherrschend. Seit 2002 wurde es durch das ext3-System ersetzt, das weitgehend kompatibel zu ext2 ist, aber auch Protokollierungsfunktionen und ab Kernel-Version 2.6 auch ACLs unterstützt. Die maximale Dateigröße beträgt 2 TB, die maximale Dateisystemgröße beträgt 8 TB. Ende 2008 wurde offiziell die Veröffentlichung von ext4 angekündigt, das abwärtskompatibel zu ext3 ist, jedoch viele Funktionen effizienter als zuvor implementiert. Darüber hinaus beträgt die maximale Dateisystemgröße 1 EB (1.048.576 TB), und Sie können davon ausgehen, dass dies für einige Zeit ausreicht. Über reiser – das System wurde nach seinem Gründer Hans Reiser benannt und war das erste System mit Protokollierungsfunktionen, das für Daten auf den Linux-Kernel zugreift. Die SUSE-Version von Zp galt zeitweise sogar als Standard. Die Hauptvorteile von reiser im Vergleich zu ext3 sind eine höhere Geschwindigkeit und Platzierungseffizienz beim Arbeiten mit kleinen Dateien (und in einem Dateisystem sind die meisten Dateien in der Regel klein). Mit der Zeit kam die Entwicklung der Reisefer jedoch zum Stillstand. Die Veröffentlichung der Version 4 ist schon lange angekündigt, die noch nicht fertig ist, und der Support für Version 3 wurde eingestellt. Über xfs – das xfs-Dateisystem wurde ursprünglich für SGI-Workstations entwickelt, die unter dem Betriebssystem IRIX laufen. Xfs eignet sich besonders gut für die Arbeit mit großen Dateien und ist besonders ideal für die Arbeit mit Streaming-Videos. Das System unterstützt Kontingente und erweiterte Attribute (ACLs).
jfs

jfs - a66peBHaTypaJFS steht für „Journaled File System“. Es wurde ursprünglich für IBM entwickelt und dann für Linux angepasst. JFS genoss unter Linux nie große Anerkennung und fristet derzeit ein erbärmliches Dasein, da es anderen Dateisystemen unterlegen ist.
brtfs

brtfs – Wenn es der Wille der führenden Kernel-Entwickler ist, hat das brtfs-Dateisystem in Linux eine glänzende Zukunft. Dieses System wurde von Grund auf bei Oracle entwickelt. Es umfasst Unterstützung für Device-Mapper und RAID. Brtfs ist dem von Sun entwickelten ZFS-System am ähnlichsten. Zu den interessantesten Funktionen gehören die sofortige Überprüfung des Dateisystems sowie die Unterstützung von SSDs (Solid-State-Laufwerke sind Festplatten mit Flash-Speicher). Leider werden die Arbeiten an BRTFS in absehbarer Zeit nicht abgeschlossen sein. Fedora bietet ab Version 11 die Möglichkeit, brtfs zu installieren, ich empfehle die Verwendung jedoch nur Dateisystementwicklern!
Es gibt kein „schnellstes“ oder „bestes“ Dateisystem – die Beurteilung hängt davon ab, wofür Sie das System verwenden möchten. Linux-Anfängern, die auf einem lokalen Computer arbeiten, wird empfohlen, mit ext3 und Serveradministratoren mit ext4 zu arbeiten. Natürlich ist die Betriebsgeschwindigkeit bei ext4 höher als bei ext3, aber gleichzeitig ist die Situation mit der Datenzuverlässigkeit im ext4-System viel schlechter – Sie können durchaus Informationen verlieren, wenn das System plötzlich abschaltet.

Wenn Sie ein zweites UNIX-ähnliches Betriebssystem auf Ihrem Computer installiert haben, dann werden Ihnen die folgenden Dateisysteme beim Datenaustausch (von einem Betriebssystem zum anderen) nützlich sein.

sysv – wird in SCO, Xenix und Coherent OS verwendet.

ufs – wird in FreeBSD, NetBSD, NextStep und SunOS verwendet. Linux kann Informationen aus solchen Dateisystemen nur lesen, aber keine Änderungen an den Daten vornehmen. Um von BSD aus auf Segmente zugreifen zu können, benötigen Sie zusätzlich die BSD-Disklabel-Erweiterung. Eine ähnliche Erweiterung gibt es für SunOS-Partitionstabellen.

ZFS ist ein relativ neues System, das von Sun für Solaris entwickelt wurde. Da ZFS-Code nicht GPL-kompatibel ist, kann er nicht in den Linux-Kernel integriert werden. Aus diesem Grund unterstützt Linux dieses Dateisystem nur indirekt über FUSE.
Windows, Mac OS X

Die folgenden Dateisysteme sind beim Informationsaustausch mit MS DOS, Windows, OS/2 und Macintosh nützlich.

vfat – wird in Windows 9x/ME verwendet. Linux kann Informationen aus solchen Partitionen lesen und Änderungen daran vornehmen. Mit den vfat-Systemtreibern können Sie mit älteren MS-DOS-Dateisystemen (8 + 3 Zeichen) arbeiten.

ntfs – das System wird in allen modernen Windows-Versionen verwendet: otNT und höher. Linux kann seine Dateien lesen und ändern.

hfs und hfsplus – diese Dateisysteme werden in verwendet Apple-Computer. Linux kann seine Dateien lesen und ändern.

Daten-CDs und -DVDs verwenden normalerweise ihre eigenen Dateisysteme.

iso9660 – Das Dateisystem für CD-ROMs ist im ISO-9660-Standard beschrieben, der nur kurze Dateinamen zulässt. Lange Namen werden auf verschiedenen Betriebssystemen unterschiedlich unterstützt und verwenden eine Vielzahl von Erweiterungen, die untereinander inkompatibel sind. Linux kann sowohl die unter UNIX übliche Rockridge-Erweiterung als auch die von Microsoft entwickelte Joliet-Erweiterung ausführen.

udf – dieses Format (Universal Disk Format) erschien und entwickelte sich als Nachfolger von ISO 9660.

Netzwerkdateisysteme

Dateisysteme müssen sich nicht unbedingt auf der lokalen Festplatte befinden – sie
kann eine Verbindung zu einem Computer und über ein Netzwerk herstellen. Der Linux-Kernel unterstützt verschiedene Netzwerkdateisysteme, von denen die folgenden am häufigsten verwendet werden.

smbfs/cifs – hilft dabei, Windows- oder Samba-Netzwerkverzeichnisse mit einem Verzeichnisbaum zu verbinden.

NFS ist das wichtigste Netzwerkdateisystem unter UNIX.

Coda – dieses System ist NFS sehr ähnlich. Es verfügt über viele zusätzliche Funktionen, ist jedoch nicht sehr verbreitet.

ncpfs – läuft auf dem NetWare-Kernel-Protokoll; oH wird von Novell Netware verwendet.

Virtuelle Dateisysteme

Linux verfügt über mehrere Dateisysteme, die nicht darauf ausgelegt sind, Daten auf der Festplatte (oder anderen Speichermedien) zu speichern, sondern nur darauf, Informationen zwischen Kernel und Benutzerprogrammen auszutauschen.
devpts – Dieses Dateisystem ermöglicht den Zugriff auf Pseudoterminals (abgekürzt als PTY) über /dev/pts/* gemäß der UNIX-98-Spezifikation. (Pseudoterminals emulieren eine serielle Schnittstelle. Auf UNIX/Linux-Systemen werden solche Schnittstellen von Terminalemulatoren wie xterm verwendet. Typischerweise werden Geräte wie /dev/ttypn verwendet. Im Gegensatz dazu definiert die UNIX-98-Spezifikation neue Geräte. Weitere Detailinformationen werden im Textterminal H0WT0 gemeldet.)
proc und sysfs – das proc-Dateisystem wird verwendet, um Dienstinformationen im Zusammenhang mit der Kernel- und Prozessverwaltung anzuzeigen. Darüber hinaus baut das sysfs-Dateisystem Beziehungen zwischen dem Kernel und der Hardware auf. Beide Dateisysteme werden unter /proc und /sys gemountet.
tmpfs – Dieses System basiert auf Shared Memory nach System V. Es wird normalerweise an der Position /dev/shm gemountet und ermöglicht einen effizienten Informationsaustausch zwischen zwei Programmen. Bei einigen Distributionen (z. B. Ubuntu) werden die Verzeichnisse /var/run und /var/lock auch mit dem tmpfs-Dateisystem erstellt. Die Dateien in diesen Verzeichnissen werden von einigen Netzwerk-Daemons zum Speichern von Prozessidentifikationsnummern sowie Dateizugriffsinformationen verwendet. Dank tmpfs werden diese Daten nun im RAM angezeigt. Die Methode garantiert eine hohe Geschwindigkeit und auch, dass nach dem Ausschalten des Computers keine Dateien mehr in den Verzeichnissen /var/run oder /var/lock verbleiben.

usbfs – das usbfs-Dateisystem, beginnend mit Kernel-Version 2.6 und höher, liefert Informationen über angeschlossene USB-Geräte. Es ist normalerweise in das proc-Dateisystem integriert. Informationen zur USB-Geräteunterstützung unter Linux.

Andere Dateisysteme

auto – tatsächlich gibt es kein Dateisystem unter diesem Namen. Das Wort auto kann jedoch in /etc/fstab oder mit dem Mount-Befehl verwendet werden, um das Dateisystem anzugeben. In diesem Fall wird Linux versuchen, das Dateisystem selbstständig zu erkennen. Diese Methode funktioniert mit den meisten gängigen Dateisystemen.
autofs, autofs4

autofs, autofs4 sind ebenfalls keine Dateisysteme, sondern Kernel-Erweiterungen, die automatisch ausgeführt werden mount-Befehl für ausgewählte Dateisysteme. Wenn ein Dateisystem längere Zeit nicht verwendet wird, wird der Befehl umount automatisch darauf ausgeführt. Diese Methode bietet sich vor allem dann an, wenn von vielen NFS-Verzeichnissen nur wenige gleichzeitig aktiv genutzt werden.

Um solche Vorgänge auszuführen, führt das Skript /etc/init.d/autofs beim Systemstart automatisch das Automount-Programm aus. Die Konfiguration erfolgt über die Datei /etc/auto.master. Die entsprechenden Programme werden beispielsweise bei Red Hat und Fedora automatisch installiert. In jedem Fall wird autofs erst nach der Konfiguration von /etc/auto.master oder /etc/auto.misc aktiviert.
Cramfs und Squashfs

cramfs und squashfs – Cram- und Squash-Dateisysteme sind schreibgeschützt. Sie dienen dazu, möglichst viele gezippte Dateien in den Flash-Speicher oder ROM (Nur-Lese-Speicher) zu „packen“.

Sicherung – FUSE steht für Filesystem in Userspace und ermöglicht die Entwicklung und Verwendung von Dateisystemtreibern außerhalb des Kernels. Daher wird FUSE immer mit einem externen Dateisystemtreiber verwendet. FUSE funktioniert insbesondere mit dem NTFS-Treiber ntfs-3g.

gfs und ocfs – Global File System und Cluster File System von Oracle (Oracle Cluster File System) ermöglichen den Aufbau riesiger Netzwerkdateisysteme, auf die viele Computer gleichzeitig parallel zugreifen können.

jffs und yaffs – Journaling Flash File System und Yet Another Flash File System sind speziell für die Arbeit mit Solid-State-Laufwerken und Flash-Medien optimiert. Mithilfe spezieller Algorithmen versuchen sie, alle Speicherzellen gleichmäßig zu nutzen (Wear-Leveling-Technologie), um einen vorzeitigen Systemausfall zu vermeiden.
Schleife

Schleife – wird für die Arbeit mit Pseudogeräten verwendet. Ein Loopback-Gerät ist ein Adapter, der als Blockgerät auf eine reguläre Datei zugreifen kann. Dank dessen können Sie jedes Dateisystem in jeder Datei platzieren und es dann mit mount mit dem Verzeichnisbaum verbinden. Die dafür verantwortliche Kernelfunktion – Pseudo-Device-Support – ist im Loop-Modul implementiert.

Es gibt eine Vielzahl von Verwendungsmöglichkeiten für Pseudogeräte. Sie können insbesondere beim Erstellen von Initial RAM Disks für GRUB oder LILO, bei der Implementierung verschlüsselter Dateisysteme oder beim Testen von ISO-Images für CDs verwendet werden.

Dateisysteme für Speichermedien

Dateisysteme
ISO 9660
Joliet ISO 9660-Dateisystemerweiterung.
Rock Ridge (RRIP, IEEE P1282) – eine ISO 9660-Dateisystemerweiterung zum Speichern von Dateiattributen, die in POSIX-Betriebssystemen verwendet werden
Amiga Rock Ridge-Erweiterungen
El Torito
Apple ISO9660-Erweiterungen
HFS, HFS+
Universal Festplattenformat Spezifikation eines vom Betriebssystem unabhängigen Dateisystemformats zur Speicherung von Dateien auf optischen Medien. UDF ist eine Implementierung des ISO/IEC 13346-Standards
Mount Rainier

Datei Linux-System- Dies ist am häufigsten ext4. Es wird protokolliert und ermöglicht es Ihnen, bei der Lösung der meisten Probleme bequem mit Daten zu arbeiten. Es gibt jedoch noch andere. Im Rahmen dieses Materials werden die wichtigsten Arten von Dateisystemen und die Prinzipien der Arbeit mit ihnen besprochen.

Arten von Linux-Dateisystemen und ihre Funktionen

Besondere Merkmale sind die Geschwindigkeit der Arbeit mit Dateien, Sicherheit und Parameter (z. B. Blockgröße), die standardmäßig vorhanden sind und beim Erstellen des FS festgelegt werden. Das vielleicht wichtigste Merkmal ist das Vorhandensein einer Zeitschrift. Das Systemprotokoll zeichnet Daten auf bzw Metadaten(nur Header), aus denen im Fehlerfall Informationen wiederhergestellt werden können.

Ein Dateisystem kann auf jedem Gerät erstellt werden: auf einer Festplatte oder einer Systempartition.

EXT2-Dateisystem

EXT2 ist derzeit ein veraltetes Dateisystem, das in modernen Installationen praktisch nicht verwendet wird. Der Hauptnachteil ist die fehlende Protokollierung, die eine Wiederherstellung der Daten im Fehlerfall dementsprechend unmöglich macht. Wird immer noch auf tragbaren Speichermedien wie USB verwendet. Ein Magazin ist für sie nicht erforderlich, da es einen gewissen Platz einnimmt.

Es garantiert außerdem maximale Arbeitsgeschwindigkeit.

  • für EXT2 maximale Dateigröße -2 TB

EXT3-Dateisystem

Ersetzt EXT2, das Hauptmerkmal ist das Erscheinungsbild des Magazins und ist vollständig abwärtskompatibel mit EXT2 (EXT2 kann frei in EXT3 konvertiert werden). Heutzutage ist es auch selten; EXT4 wird fast immer verwendet.

Journal – ein spezieller Bereich im Speicher, in dem Informationen über alle Änderungen aufgezeichnet werden

  • für EXT3 maximale Dateigröße -2 TB
  • Die maximale Größe aller Dateien beträgt 32 TB
  • Jedes Verzeichnis kann bis zu 32.000 Unterverzeichnisse haben

Beim Journaling gibt es drei Möglichkeiten (beim Erstellen des Dateisystems angegeben):

  • Journal – Metadaten sowie die Informationen selbst in das Journal
  • geordnet – Standardoption, nur Metadaten werden gespeichert, auch nach dem Schreiben auf die Festplatte
  • Rückschreiben – Es werden auch nur Metadaten gespeichert. Sie können wählen, ob Sie sie vor oder nach dem Schreiben auf die Festplatte speichern möchten

EXT4-Dateisystem

Die moderne Version des erweiterten Dateisystems wird am häufigsten verwendet

  • maximale Dateigröße -2 TB 16 TB
  • Die maximale Größe aller Dateien beträgt 1 EB (Exabyte). 1 EB = 1024 PB (Petabyte). 1 PB = 1024 TB (Terabyte).
  • Jedes Verzeichnis kann bis zu 64.000 Unterverzeichnisse haben

In EXT4 kann die Protokollierung durch Setzen der Option ausgeschaltet werden Daten im eingebauten Zustand aus

EXT als wichtigstes Linux-Dateisystem und Betriebspraxis

Das Dateisystem wird mit dem Befehl mk2fs erstellt

Die erforderliche Protokollierungsoption wird beim Mounten angegeben, zum Beispiel:

mount /dev/vdc /mnt/1 -t ext3 -o data=journal

Konvertierung von EXT2 E nach XT3

ReiserFS

ReiserFS (und die moderne Implementierung von Reiser4 mit SELinux-Unterstützung) bietet eine gute Leistung und ist sehr produktiv – insbesondere bei der Arbeit mit einer großen Anzahl kleiner Dateien. ReiserFS weist nicht jeder kleinen Datei Inodes zu, sondern verarbeitet sie gemeinsam, und ReiserFS verwendet auch ein Journal mit mehreren verfügbaren Optionen. Derzeit wird das Dateisystem von Entwicklern aus Russland unterstützt.

Mit dem Befehl können Sie einen FS für ein Gerät erstellen

XFS

XFS ist ein Journaling-Dateisystem. Verwendet RAM zum Speichern von Informationen, daher ist ein Datenverlust möglich – beispielsweise bei einem Stromausfall.

Um XFS unter Ubuntu verwenden zu können, müssen Sie Pakete installieren xfsprogs Und xfsdump

vfett

Das Linux-Dateisystem existiert auch in der Windows-Umgebung. Es wird verwendet, wenn Sie den gemeinsamen Zugriff auf bestimmte Festplatten und Partitionen von Clients mit unterschiedlichen Betriebssystemen organisieren müssen. In anderen Fällen wird die Verwendung nicht empfohlen, da es beim Arbeiten unter Linux zu Schwierigkeiten kommen kann.

(Zweites erweitertes Dateisystem).

· Geschichte der Entwicklung von Linux-Dateisystemen

· Festplattenpartitionsstruktur in ext2fs

·

· Kataloge

· Gerätedateien

·

·

· EXT2fs-Bibliothek

· EXT2fs-Systemtools

· Leistungsberechnung

Fakultät für Mathematik

Software

2. Jahr 5. Gr.

Tschitschirow Andrej

Falsches System EXT2fs (Zweites erweitertes Dateisystem).

Geschichte der Entwicklung von Linux-Dateisystemen

Die ersten Linux-Versionen wurden auf Basis des Minix-Betriebssystems entwickelt. Da es einfacher wäre, die Festplatten zwischen den beiden Systemen zu teilen, als ein neues Dateisystem zu entwickeln, beschloss Linus Torvalds, Linux-Unterstützung für das Minix-Dateisystem einzuführen. Zu dieser Zeit war dieses Dateisystem ein recht effizientes Softwareprodukt mit relativ wenigen Fehlern.

Die mit der Struktur des Minix-Dateisystems verbundenen Einschränkungen waren jedoch recht hoch, sodass man über die Entwicklung eines neuen Dateisystems für Linux nachdachte.

Um die Implementierung des neuen Dateisystems in den Linux-Kernel zu vereinfachen, wurde ein virtuelles Dateisystem (VFS) entwickelt. VFS wurde ursprünglich von Chris Provenzano geschrieben und dann von Linus Torvalds umgeschrieben, bevor es in den Kernel integriert wurde.

Nach der Installation von VFS im Kernel wurde im April 1992 ein neues Dateisystem, EXTfs (Extended File System), entwickelt und zur Linux-Version 0.96c hinzugefügt. Im neuen Dateisystem wurden zwei wesentliche Einschränkungen des Minix-Systems entfernt: Seine maximale Größe konnte 2 Gigabyte erreichen und die maximale Länge des Dateinamens konnte 255 Zeichen betragen. Dies stellte eine Verbesserung gegenüber dem Minix-Dateisystem dar, obwohl einige Probleme weiterhin vorhanden waren. Es gab keine Unterstützung für den gemeinsamen Zugriff, die Änderung des Indexdeskriptors und die Änderung der Zeitzellen für Dateiänderungen. Dieses Dateisystem verwendete verknüpfte Listen, um freie Blöcke und Inodes zu bearbeiten, was sich stark auf die Systemleistung auswirkte: Mit der Zeit wurden die Listen ungeordnet und unsortiert, was zu einer Fragmentierung des Dateisystems führte.

Die Lösung dieser Probleme war die Veröffentlichung von Alpha-Versionen zweier neuer Dateisysteme im Januar 1993: Xia und EXT2fs (Second Extended File System). Das Xia-Dateisystem basierte größtenteils auf Minix, wobei einige neue Funktionen hinzugefügt wurden. Dies lag vor allem an der Möglichkeit, mit langen Dateinamen zu arbeiten, der Unterstützung größerer Festplattenpartitionen und der Unterstützung von drei Zeitzellen für Dateiänderungen. Andererseits basierte EXT2fs auf EXTfs mit vielen Verbesserungen und Ergänzungen. Es bot auch Möglichkeiten für die zukünftige Entwicklung.

Als diese beiden Dateisysteme veröffentlicht wurden, waren sie funktional ungefähr gleich. Das Xia-System war durch die Minimierung zuverlässiger als das EXT2fs. Mit zunehmender Verbreitung wurden Fehler im EXT2fs-System entdeckt und zahlreiche neue Funktionen und Verbesserungen hinzugefügt. Das EXT2fs-Dateisystem ist mittlerweile sehr zuverlässig und hat sich zum De-facto-Linux-Dateisystemstandard entwickelt.

Die folgende Tabelle enthält allgemeine Informationen über die Funktionalität verschiedener Dateisysteme.

Minix FS

Ext FS

Ext2FS

Xia FS

Maximale Dateisystemgröße

Maximale Dateilänge

Maximale Länge des Dateinamens

Unterstützung für drei Zeitzellen für Dateiänderungen

Erweiterbarkeit

Anpassbare Blockgröße

Informationsschutz

Bei Bedarf die Länge des Dateinamens in Durchwahl 2 kann auf 1012 erhöht werden.

EXT2fs reserviert eine bestimmte Anzahl Blöcke für den Root-Benutzer. In der Regel sind dies 5 % der Gesamtmenge, sodass der Systemadministrator vermeiden kann, dass der Festplattenspeicher knapp wird, wenn er mit Prozessen anderer Benutzer belegt ist.

Festplattenpartitionsstruktur in ext2fs

Festplattenhersteller liefern ihre Produkte in der Regel niedrig formatiert aus. Soweit ich weiß, bedeutet dies, dass der gesamte Speicherplatz mithilfe spezieller Labels in „Sektoren“ von 512 Byte Größe unterteilt wird. Eine solche Festplatte (oder Festplattenpartition) muss für die Verwendung auf einem bestimmten Betriebssystem vorbereitet werden. Unter MS-DOS oder Windows wird der Vorbereitungsvorgang als Formatierung bezeichnet und unter Linux als Erstellen eines Dateisystems. Erstellen eines Dateisystems ext2fs besteht darin, eine bestimmte logische Struktur in einer Festplattenpartition zu erstellen. Diese Struktur ist wie folgt aufgebaut. Zunächst wird ein Boot-Bereich auf der Festplatte zugewiesen. Der Bootbereich wird auf einem beliebigen Dateisystem erstellt. Auf der primären Partition befindet sich ein Boot-Record – ein Codestück, das den Ladevorgang des Betriebssystems beim Start einleitet. Dieser Bereich wird auf anderen Partitionen nicht verwendet. Der Rest des Speicherplatzes ist in Blöcke unterteilt. Ein Block kann 1, 2 oder 4 Kilobyte groß sein. Ein Block ist eine adressierbare Einheit des Speicherplatzes. Da Dateien in Blöcken zugewiesen werden, müssen bei der Auswahl der Blockgröße Kompromisse eingegangen werden. Grosse Grösse Der Block verringert in der Regel die Anzahl der Festplattenzugriffe beim Lesen oder Schreiben einer Datei, erhöht jedoch den Anteil des verschwendeten Speicherplatzes, insbesondere wenn viele kleine Dateien vorhanden sind.

Blöcke in ihrem Bereich werden zu Blockgruppen zusammengefasst. Blockgruppen in einem Dateisystem und Blöcke innerhalb einer Gruppe werden fortlaufend nummeriert, beginnend mit 1. Der erste Block auf einer Festplatte hat die Nummer 1 und gehört zur Gruppennummer 1. Die Gesamtzahl der Blöcke auf einer Festplatte (in einer Festplattenpartition) ist ein Teiler der Kapazität der Festplatte, ausgedrückt in Sektoren. Und die Anzahl der Blockgruppen muss nicht durch die Anzahl der Blöcke geteilt werden, da die letzte Blockgruppe möglicherweise nicht vollständig ist. Der Anfang jeder Blockgruppe hat eine Adresse, die als ((Gruppennummer - 1)* (Anzahl der Blöcke in der Gruppe)) erhalten werden kann.

Jede Blockgruppe hat die gleiche Struktur. Seine Struktur ist in der folgenden Tabelle dargestellt.

Die Struktur einer Festplattenpartitionsgruppe von Blöcken in ext2fs

Das erste Element dieser Struktur (Superblock) ist für alle Gruppen gleich, alle anderen sind für jede Gruppe individuell. Der Superblock wird im ersten Block jeder Blockgruppe gespeichert (mit Ausnahme von Gruppe 1, die im ersten Block einen Boot-Record hat). Superblock ist der Ausgangspunkt des Dateisystems. Es ist 1024 Byte groß und Stets befindet sich am Offset 1024 Byte vom Anfang des Dateisystems. Das Vorhandensein mehrerer Kopien eines Superblocks erklärt sich aus der extremen Bedeutung dieses Elements des Dateisystems. Superblock-Duplikate werden bei der Wiederherstellung eines Dateisystems nach Fehlern verwendet.

Die im Superblock gespeicherten Informationen werden verwendet, um den Zugriff auf die restlichen Daten auf der Festplatte zu organisieren. Der Superblock bestimmt die Größe des Dateisystems, die maximale Anzahl von Dateien in der Partition, die Menge an freiem Speicherplatz und enthält Informationen darüber, wo nach nicht zugewiesenen Bereichen gesucht werden soll. Wenn das Betriebssystem startet, wird der Superblock in den Speicher eingelesen und alle Änderungen am Dateisystem werden zunächst in einer Kopie des Superblocks im Betriebssystem widergespiegelt und nur in regelmäßigen Abständen auf die Festplatte geschrieben. Dies verbessert die Systemleistung, da viele Benutzer und Prozesse ständig Dateien aktualisieren. Andererseits muss beim Ausschalten des Systems der Superblock auf die Festplatte geschrieben werden, was ein Ausschalten des Computers nicht zulässt einfaches Herunterfahren Ernährung. Andernfalls stimmen die im Superblock aufgezeichneten Informationen beim nächsten Booten nicht mit dem tatsächlichen Zustand des Dateisystems überein.

Der Superblock hat die folgende Struktur

Feldname

Typ

Ein Kommentar

s_inodes_count

ULONG

Anzahl der Inodes im Dateisystem

s_blocks_count

ULONG

Anzahl der Blöcke im Dateisystem

s_r_blocks_count

ULONG

Anzahl der für den Superuser reservierten Blöcke

s_free_blocks_count

ULONG

Kostenloser Blockzähler

s_free_inodes_count

ULONG

Kostenloser Inode-Zähler

s_first_data_block

ULONG

Der erste Block, der Daten enthält. Abhängig von der Blockgröße kann dieses Feld 0 oder 1 sein.

s_log_block_size

ULONG

Anzeige der logischen Blockgröße: 0 = 1 KB; 1 = 2 KB; 2 = 4 KB.

s_log_frag_size

LANG

Fragmentgrößenindikator (anscheinend wird das Fragmentkonzept derzeit nicht verwendet)

s_blocks_per_group

ULONG

Anzahl der Blöcke in jeder Blockgruppe

s_frags_per_group

ULONG

Anzahl der Fragmente in jeder Blockgruppe

s_inodes_per_group

ULONG

Anzahl der Inodes in jeder Blockgruppe

s_mtime

ULONG

Der Zeitpunkt, zu dem das Dateisystem zuletzt gemountet wurde.

s_wtime

ULONG

Zeitpunkt, zu dem das letzte Mal in das Dateisystem geschrieben wurde

s_mnt_count

USKURZ

Zähler für die Anzahl der Dateisystem-Mounts. Erreicht dieser Zähler den im nächsten Feld (s_max_mnt_count) angegebenen Wert, muss das Dateisystem überprüft werden (dies erfolgt beim Neustart) und der Zähler wird auf Null zurückgesetzt.

s_max_mnt_count

KURZ

Eine Zahl, die bestimmt, wie oft das Dateisystem gemountet werden kann

s_magisch

USKURZ

„Magische Zahl“ (0xEF53), die angibt, dass das Dateisystem vom Typ ex2fs ist

s_state

USKURZ

Flags, die den aktuellen Status des Dateisystems anzeigen (ist es sauber usw.)

s_errors

USKURZ

Flags, die Verfahren zur Verarbeitung von Fehlermeldungen angeben (was zu tun ist, wenn Fehler gefunden werden).

s_pad

USKURZ

Füllung

s_lastcheck

ULONG

Zeitpunkt der letzten Dateisystemprüfung

s_checkinterval

ULONG

Maximaler Zeitraum zwischen Dateisystemprüfungen

s_creator_os

ULONG

Ein Hinweis auf den Typ des Betriebssystems, in dem das Dateisystem erstellt wurde

s_rev_level

ULONG

Version (Revisionsstand) des Dateisystems.

s_reserved

ULONG

Auffüllung bis zu 1024 Bytes

Dem Superblock folgt eine Beschreibung der Blockgruppe (Gruppendeskriptoren). Bei dieser Beschreibung handelt es sich um ein Array mit der folgenden Struktur.

Feldname

Typ

Zweck

bg_block_bitmap

ULONG

Adresse des Blocks, der die Blockbitmap dieser Gruppe enthält

bg_inode_bitmap

ULONG

Adresse des Blocks, der die Inode-Bitmap dieser Gruppe enthält

bg_inode_table

ULONG

Adresse des Blocks, der die Inode-Tabelle dieser Gruppe enthält

bg_free_blocks_count

USKURZ

Zähler der Anzahl freier Blöcke in dieser Gruppe

bg_free_inodes_count

USKURZ

Anzahl der freien Inodes in dieser Gruppe

bg_used_dirs_count

USKURZ

Die Anzahl der Inodes in einer bestimmten Gruppe, bei denen es sich um Verzeichnisse handelt

bg_pad

USKURZ

Füllung

bg_reserved

ULONG

Füllung

Die Größe der Blockgruppenbeschreibung kann wie folgt berechnet werden: (block_group_size_in_ext2 * number_of_groups) / block_size(bei Bedarf runden).

Die in der Gruppenbeschreibung gespeicherten Informationen werden zum Auffinden der Block- und Inode-Bitmaps sowie der Inode-Tabelle verwendet. Vergessen Sie nicht, dass Blöcke und Blockgruppen beginnend mit 1 nummeriert sind.

Eine Block-Bitmap ist eine Struktur, in der jedes Bit angibt, ob der entsprechende Block einer Datei zugeordnet ist. Wenn das Bit 1 ist, ist der Block beschäftigt. Diese Karte wird verwendet, um nach freien Blöcken zu suchen, wenn Platz für eine Datei reserviert werden muss. Die Block-Bitmap belegt eine Anzahl von Blöcken gleich (number_of_blocks_in_group / 8) / block_size(bei Bedarf runden).

Die Inode-Bitmap erfüllt eine ähnliche Funktion wie die Inode-Tabelle: Sie zeigt an, welche Inodes verwendet werden.

Der nächste Bereich in der Blockgruppenstruktur wird zum Speichern der Datei-Inode-Tabelle verwendet. Die Struktur des Inodes selbst wird im nächsten Unterabschnitt ausführlicher besprochen.

Nun, und schließlich wird der gesamte verbleibende Speicherplatz in der Blockgruppe für die Speicherung der eigentlichen Dateien reserviert.

Dateisystem Ext 2 ist gekennzeichnet durch:

  • hierarchische Struktur,
  • koordinierte Verarbeitung von Datensätzen,
  • dynamische Dateierweiterung,
  • Schutz von Informationen in Dateien,
  • Peripheriegeräte (z. B. Terminals und Bandgeräte) als Dateien behandeln.

Interne Dateidarstellung

Jede Datei im Ext 2-System verfügt über einen eindeutigen Index. Der Index enthält die Informationen, die jeder Prozess benötigt, um auf die Datei zuzugreifen. Verarbeitet Zugriffsdateien mithilfe eines klar definierten Satzes von Systemaufrufen und identifiziert die Datei mit einer Zeichenfolge, die als qualifizierter Dateiname fungiert. Jeder zusammengesetzte Name identifiziert eine Datei eindeutig, sodass der Systemkern diesen Namen in einen Dateiindex umwandelt. Der Index enthält eine Tabelle mit Adressen, an denen sich Dateiinformationen auf der Festplatte befinden. Da jeder Block auf einer Festplatte über eine eigene Nummer adressiert wird, speichert diese Tabelle eine Sammlung von Festplattenblocknummern. Um die Flexibilität zu erhöhen, hängt der Kernel eine Datei blockweise an, sodass die Informationen der Datei im gesamten Dateisystem verteilt werden können. Dieses Layout erschwert jedoch die Suche nach Daten. Die Adresstabelle enthält eine Liste von Blocknummern mit Informationen zu einer Datei. Einfache Berechnungen zeigen jedoch, dass eine lineare Liste von Dateiblöcken in einem Index schwierig zu verwalten ist. Damit eine kleine Indexstruktur das Arbeiten mit großen Dateien ermöglicht, wird die Tabelle der Festplattenblockadressen an die in Abbildung 1 dargestellte Struktur angepasst

Die meisten Dateien in einem Ext 2-System sind nicht größer als 10 KB oder sogar 1 KB! Da sich 10 KB einer Datei in Blöcken mit direkter Adressierung befinden, kann auf die meisten in Dateien gespeicherten Daten mit einem einzigen Festplattenzugriff zugegriffen werden. Daher ist die Arbeit mit Dateien in Standardgröße im Gegensatz zum Zugriff auf große Dateien schnell.

Datei-Inodes

Jede Datei auf der Festplatte ist genau einem Datei-Inode zugeordnet, der durch seine fortlaufende Nummer – den Dateiindex – identifiziert wird. Dies bedeutet, dass die Anzahl der Dateien, die in einem Dateisystem erstellt werden können, durch die Anzahl der Inodes begrenzt ist, die entweder explizit beim Erstellen des Dateisystems angegeben oder auf der Grundlage der physischen Größe der Festplattenpartition berechnet wird. Inodes sind in statischer Form auf der Festplatte vorhanden und der Kernel liest sie in den Speicher, bevor er mit ihnen arbeitet.

Der Datei-Inode hat die folgende Struktur:

Feldname

Typ

Beschreibung

I_mode

USKURZ

Der Typ und die Zugriffsrechte für diese Datei.

I_uid

USKURZ

Kennung des Dateieigentümers (Owner Uid).

I_size

ULONG

Dateigröße in Bytes.

Ich_zeit

ULONG

Zeitpunkt des letzten Zugriffs auf die Datei (Zugriffszeit).

I_ctime

ULONG

Dateierstellungszeit.

Es ist Zeit

ULONG

Zeitpunkt der letzten Änderung der Datei.

I_dtime

ULONG

Zeit zum Löschen der Datei.

Ich_gid

USKURZ

Gruppen-ID (GID).

I_links_count

USKURZ

Links zählen.

I_blocks

ULONG

Die Anzahl der von der Datei belegten Blöcke.

I_flags

ULONG

Dateiflags (Dateiflags)

I_reserved1

ULONG

Reserviert für das Betriebssystem

Ich blockiere

ULONG

Zeiger auf Blöcke, in die Dateidaten geschrieben werden (ein Beispiel für direkte und indirekte Adressierung in Abb. 1)

I_version

ULONG

Dateiversion (für NFS)

I_file_acl

ULONG

ACL-Datei

I_dir_acl

ULONG

Verzeichnis-ACL

I_faddr

ULONG

Fragmentadresse

I_frag

UCHAR

Fragmentnummer

I_fsize

UCHAR

Fragmentgröße

I_pad1

USKURZ

Füllung

I_reserved2

ULONG

Reserviert

Das Dateityp- und Zugriffsrechtefeld ist ein Zwei-Byte-Wort, dessen jedes Bit als Flag dient, das die Beziehung der Datei zu einem bestimmten Typ oder die Einstellung eines bestimmten Dateirechts angibt.

Kennung

Bedeutung

Zweck der Flagge (Feld)

S_IFMT

F000

Dateitypmaske

S_IFSOCK

A000

Domänen-Socket

S_IFLNK

C000

S_IFREG

8000

Normale Datei

S_IFBLK

6000

Blockorientiertes Gerät

S_IFDIR

4000

Katalog

S_IFCHR

2000

Byteorientiertes (Zeichen-)Gerät

S_IFIFO

1000

Benannte Pipe (Fifo)

S_ISUID

0800

SUID – Besitzerbit ändern

S_ISGID

0400

SGID – Gruppenänderungsbit

S_ISVTX

0200

Aufgabenspeicherbit (Sticky-Bit)

S_IRWXU

01C0

Maske mit den Rechten des Dateieigentümers

S_IRUSR

0100

Recht zu lesen

S_IWUSR

0080

Schreibe richtig

S_IXUSR

0040

Recht zur Ausführung

S_IRWXG

0038

Gruppenrechtemaske

S_IRGRP

0020

Recht zu lesen

S_IWGRP

0010

Schreibe richtig

S_IXGRP

0008

Recht zur Ausführung

S_IRWXO

0007

Maske der Rechte anderer Benutzer

S_IROTH

0004

Recht zu lesen

S_IWOTH

0002

Schreibe richtig

S_IXOTH

0001

Recht zur Ausführung

Unter den Inodes gibt es mehrere Inodes, die für spezielle Zwecke reserviert sind und eine besondere Rolle im Dateisystem spielen. Dies sind die folgenden Deskriptoren

Kennung

Bedeutung

Beschreibung

EXT2_BAD_INO

Ein Inode, der die Adressen fehlerhafter Blöcke auf der Festplatte auflistet (Bad Blocks Inode)

EXT2_ROOT_INO

Inode des Dateisystem-Stammverzeichnisses (Root-Inode)

EXT2_ACL_IDX_INO

ACL-Inode

EXT2_ACL_DATA_INO

ACL-Inode

EXT2_BOOT_LOADER_INO

Bootloader-Inode

EXT2_UNDEL_DIR_INO

Verzeichnis-Inode wiederherstellen

EXT2_FIRST_INO

Erster nicht reservierter Inode

Das wichtigste Handle in dieser Liste ist das Root-Verzeichnis-Handle. Dieses Handle zeigt auf das Stammverzeichnis, das wie alle Verzeichnisse aus Einträgen mit folgender Struktur besteht:

Feldname

Typ

Beschreibung

Inode

ULONG

Datei-Inode-Nummer

rec_len

USKURZ

Länge dieses Eintrags

name_len

USKURZ

Länge des Dateinamens

Name

VERKOHLEN

Dateiname

Ein einzelner Verzeichniseintrag darf eine Blockgrenze nicht überschreiten (d. h. er muss vollständig innerhalb eines einzelnen Blocks liegen). Wenn also der nächste Datensatz nicht vollständig in einen bestimmten Block passt, wird er in den nächsten Block übertragen und der vorherige Datensatz wird fortgesetzt, sodass er den Block bis zum Ende ausfüllt.

Abbildung 1 Direkte und indirekte Adressierungsblöcke im Index

Abbildung 2 Dateigröße in Bytes bei einer Blockgröße von 1 KB

Abbildung 3. Beispiel eines Festplattenindexes

Abbildung 3 zeigt den Festplattenindex einer bestimmten Datei. Dieser Index gehört zu einer regulären Datei, deren Eigentümer „mjb“ ist und deren Größe 6030 Byte beträgt. Das System ermöglicht dem Benutzer „mjb“, die Datei zu lesen, zu schreiben und auszuführen; Mitglieder der Gruppe „OS“ und alle anderen Benutzer dürfen die Datei nur lesen oder ausführen, aber keine Daten darauf schreiben. Die Akte wurde zuletzt am 23. Oktober 1984 um 13:45 Uhr gelesen und zuletzt am 22. Oktober 1984 um 10:30 Uhr geschrieben. Der Index wurde zuletzt am 23. Oktober 1984 um 13:30 Uhr geändert, obwohl zu diesem Zeitpunkt noch keine Informationen in die Datei geschrieben wurden. Der Kernel kodiert alle oben genannten Daten in einem Index. Beachten Sie den Unterschied beim Schreiben des Indexinhalts und des Dateiinhalts auf die Festplatte. Der Inhalt einer Datei ändert sich nur, wenn in die Datei geschrieben wird. Der Inhalt des Index ändert sich sowohl, wenn sich der Inhalt der Datei ändert, als auch wenn sich der Dateieigentümer, die Zugriffsrechte und der Zeigersatz ändern. Das Ändern des Inhalts einer Datei führt automatisch zu einer Anpassung des Index. Das Anpassen des Index bedeutet jedoch nicht, dass der Inhalt der Datei geändert wird.

Kataloge

Verzeichnisse sind die Dateien, aus denen die hierarchische Struktur des Dateisystems aufgebaut ist; Sie spielen eine wichtige Rolle bei der Umwandlung des Dateinamens in eine Indexnummer. Ein Verzeichnis ist eine Datei, deren Inhalt aus einer Reihe von Einträgen besteht, die aus der Indexnummer und dem Dateinamen bestehen, die im Verzeichnis enthalten sind. Ein qualifizierter Name ist eine Zeichenfolge, die durch das Nullzeichen abgeschlossen und durch einen Schrägstrich („/“) in mehrere Komponenten getrennt wird. Jede Komponente außer der letzten muss der Name eines Verzeichnisses sein, aber die letzte Komponente kann der Name einer Datei sein, die kein Verzeichnis ist. In UNIX Version V ist die Länge jeder Komponente auf 14 Zeichen begrenzt; Zusammen mit den 2 Bytes, die für die Indexnummer reserviert sind, beträgt die Größe des Verzeichniseintrags also 16 Bytes.

Byte-Offset
im Verzeichnis

Indexnummer
(2 Bytes)

NameDatei

1798

drin

1276

fsck

clri

1268

motd

1799

montieren

mknod

2114

Passwort

1717

umount

1851

Checkliste

fsdbld

config

1432

getty

Absturz

mkfs

Abbildung 4 /etc-Verzeichnisformat

Abbildung 4 zeigt das Format des Verzeichnisses „etc“. Jedes Verzeichnis enthält Dateien, deren Namen durch einen Punkt und zwei Punkte („.“ und „..“) gekennzeichnet sind und deren Indexnummern mit den Indexnummern des jeweiligen Verzeichnisses bzw. des übergeordneten Verzeichnisses übereinstimmen. Indexnummer für Datei „.“ im Verzeichnis „/etc“ hat eine Adresse bei Offset 0 und einen Wert von 83. Die Inode-Nummer für die Datei „..“ hat eine Adresse bei Offset 16 vom Anfang des Verzeichnisses und einen Wert von 2. Einträge in der Das Verzeichnis kann leer sein, aber die Inode-Nummer ist 0. Beispielsweise ist der Eintrag an Adresse 224 im Verzeichnis „/etc“ leer, obwohl es einmal einen Einstiegspunkt für eine Datei namens „crash“ enthielt. Das Programm mkfs initialisiert das Dateisystem so, dass die Inode-Nummern für Dateien „.“ sind. und „..“ im Stammverzeichnis stimmen mit der Stammindexnummer des Dateisystems überein.

Der Kernel speichert Daten in einem Verzeichnis genau wie in einem regulären Dateityp, indem er eine Indexstruktur und Blöcke mit direkten und indirekten Adressierungsebenen verwendet. Prozesse können Daten aus Verzeichnissen auf die gleiche Weise lesen, wie sie normale Dateien lesen. Der ausschließliche Schreibzugriff auf das Verzeichnis wird jedoch vom Kernel reserviert, um sicherzustellen, dass die Verzeichnisstruktur korrekt ist. Verzeichnisberechtigungen haben folgende Bedeutung: Die Leseberechtigung gibt Prozessen die Möglichkeit, Daten aus dem Verzeichnis zu lesen; Mit der Schreibberechtigung kann ein Prozess neue Einträge in einem Verzeichnis erstellen oder alte Einträge entfernen (mithilfe der Systemoperationen creat, mknod, link und unlink) und so den Inhalt des Verzeichnisses ändern. Das Ausführungsrecht erlaubt einem Prozess, ein Verzeichnis anhand des Dateinamens zu durchsuchen (da das „Ausführen“ eines Verzeichnisses sinnlos ist).

Wenn ein Prozess einen Dateipfad verwendet, sucht der Kernel in den Verzeichnissen nach der entsprechenden Inode-Nummer. Nachdem der Dateiname in eine Inode-Nummer umgewandelt wurde, wird der Inode im Speicher abgelegt und dann in nachfolgenden Anforderungen verwendet.

Das Konzept der Unix-Dateisysteme beinhaltet das Konzept eines Links. Ein einzelner Inode kann mehreren Dateinamen zugeordnet sein. Der Deskriptor enthält ein Feld, das die Nummer speichert, mit der die Datei verknüpft ist. Das Hinzufügen eines Links besteht darin, einen Verzeichniseintrag zu erstellen, dessen Inode-Nummer auf einen anderen Inode verweist, und den Linkzähler im Inode zu erhöhen. Wenn ein Link entfernt wird, verringert der Kernel den Linkzähler und entfernt das Handle, wenn der Zähler Null wird.

Solche Links werden Hardlinks genannt und können nur innerhalb eines Dateisystems verwendet werden (Sie können keinen Link für eine Datei aus einem anderen Dateisystem erstellen). Darüber hinaus kann ein fester Link nur auf eine Datei verweisen (ein fester Link zu einem Verzeichnis kann eine Schleife im Dateisystem verursachen).

Auf den meisten Unix-Systemen gibt es eine andere Art von Verknüpfung. Diese Links, die nur den Dateinamen enthalten, werden symbolisch genannt. Wenn der Kernel solche Links verarbeitet und den Dateipfad in einen Inode umwandelt, ersetzt der Kernel den Linknamen durch den Inhalt des Inodes (d. h. den Zieldateinamen) und interpretiert den Dateipfad neu. Da ein symbolischer Link nicht auf einen Inode verweist, ist es möglich, Links zu Dateien zu erstellen, die sich in einem anderen Dateisystem befinden. Diese Links können auf jede Art von Datei verweisen, auch auf nicht vorhandene. Symbolische Links werden häufig verwendet, da sie nicht denselben Einschränkungen unterliegen wie harte Links. Allerdings nehmen sie etwas Platz auf der Festplatte ein, auf der sich die Inode- und Datenblöcke befinden. Ihre Verwendung kann zu Verzögerungen bei der Konvertierung des Dateipfads in einen Inode führen, da der Kernel den Dateipfad bei der Verarbeitung eines Symlinks neu interpretieren muss.

Gerätedateien

In Unix-ähnlichen Betriebssystemen erfolgt der Zugriff auf Geräte über spezielle Dateien. Eine solche Datei nimmt keinen Platz im Dateisystem ein. Es handelt sich lediglich um einen Zugangspunkt zum Gerätetreiber.

Es gibt zwei Arten von Gerätedateien: Zeichen- und Blockdateien. Bei Verwendung eines Zeichentyps ist ein Datenaustausch mit dem Gerät nur in möglich Zeichenmodus, während Gerätedateien vom Blocktyp nur den Austausch von Blöcken über einen Puffer ermöglichen. Wenn eine E/A-Anfrage an eine Gerätedatei gestellt wird, wird die Anfrage an den entsprechenden Gerätetreiber weitergeleitet. Jede dieser Dateien hat eine Hauptnummer, die den Gerätetyp identifiziert, und eine Nebennummer, die das Gerät selbst identifiziert.

Zusätzliche Funktionen von EXT2fs

Zusätzlich zu den Standard-Unix-Funktionen bietet EXT2fs einige zusätzliche Funktionen, die normalerweise von Unix-Dateisystemen nicht unterstützt werden.

Mit Dateiattributen können Sie ändern, wie der Kernel reagiert, wenn er mit Dateigruppen arbeitet. Sie können Attribute für eine Datei oder ein Verzeichnis festlegen. Im zweiten Fall erben in diesem Verzeichnis erstellte Dateien diese Attribute.

Während der Systemmontage können einige Funktionen im Zusammenhang mit Dateiattributen festgelegt werden. Mit der Mount-Option kann der Administrator auswählen, wie Dateien erstellt werden. In einem BSD-spezifischen Dateisystem werden Dateien mit derselben Gruppen-ID wie das übergeordnete Verzeichnis erstellt. Die Funktionen von System V sind etwas komplexer. Wenn für ein Verzeichnis das setgid-Bit gesetzt ist, dann generierte Dateien erben die Gruppen-ID dieses Verzeichnisses und Unterverzeichnisse erben die Gruppen-ID und das Setgid-Bit. Andernfalls werden Dateien und Verzeichnisse mit der primären Gruppen-ID des aufrufenden Prozesses erstellt.

Das EXT2fs-System kann eine synchrone Datenänderung ähnlich wie verwenden BSD-System. Mit der Mount-Option kann der Administrator festlegen, dass alle Daten (Inodes, Bitblöcke, indirekte Blöcke und Verzeichnisblöcke) synchron auf die Festplatte geschrieben werden, wenn sie geändert werden. Dadurch kann zwar eine hohe Datenaufzeichnungskapazität erreicht werden, führt aber auch zu einer schlechten Performance. In der Realität wird diese Funktion normalerweise nicht genutzt, da sie neben Leistungseinbußen auch zum Verlust von Benutzerdaten führen kann, die bei der Überprüfung des Dateisystems nicht erkannt werden.

Mit EXT2fs können Sie beim Erstellen eines Dateisystems die logische Blockgröße auswählen. Es kann 1024, 2048 oder 4096 Byte groß sein. Die Verwendung größerer Blöcke führt zu schnelleren E/A-Vorgängen (da weniger Festplattenanforderungen gestellt werden) und daher zu weniger Kopfbewegungen. Andererseits führt die Verwendung großer Blöcke zu einer Verschwendung von Speicherplatz. Normalerweise wird der letzte Block einer Datei nicht vollständig zum Speichern von Informationen genutzt, sodass mit zunehmender Blockgröße auch mehr Speicherplatz verschwendet wird.

Mit EXT2fs können Sie beschleunigte symbolische Links verwenden. Bei der Verwendung solcher Links werden keine Datenblöcke des Dateisystems verwendet. Der Zieldateiname wird nicht im Datenblock, sondern im Inode selbst gespeichert. Durch diese Struktur können Sie Speicherplatz sparen und die Verarbeitung symbolischer Links beschleunigen. Natürlich ist der für ein Handle reservierte Platz begrenzt, sodass nicht jeder Link als beschleunigter Link dargestellt werden kann. Die maximale Länge eines Dateinamens in einem beschleunigten Link beträgt 60 Zeichen. In naher Zukunft ist geplant, dieses Schema auf kleine Dateien auszuweiten.

EXT2fs überwacht den Zustand des Dateisystems. Der Kernel verwendet ein separates Feld im Superblock, um den Status des Dateisystems anzuzeigen. Wenn das Dateisystem im Lese-/Schreibmodus gemountet ist, wird sein Status auf „Nicht sauber“ gesetzt. Wenn es im schreibgeschützten Modus demontiert oder erneut gemountet wird, wird sein Status auf „Clean“ gesetzt. Bei Systemstart- und Dateisystemstatusprüfungen werden diese Informationen verwendet, um festzustellen, ob eine Dateisystemprüfung erforderlich ist. Der Kernel platziert auch einige Fehler in diesem Feld. Wenn der Kernel eine Nichtübereinstimmung erkennt, wird das Dateisystem als „Fehlerhaft“ markiert. Der Dateisystemprüfer testet diese Informationen, um das System zu überprüfen, auch wenn sein Status tatsächlich „Clean“ ist.

Das Ignorieren von Dateisystemtests über einen längeren Zeitraum kann manchmal zu Schwierigkeiten führen. Daher bietet EXT2fs zwei Methoden zur regelmäßigen Überprüfung des Systems. Der Superblock enthält den System-Mount-Zähler. Dieser Zähler wird jedes Mal erhöht, wenn das System im Lese-/Schreibmodus gemountet wird. Wenn sein Wert das Maximum erreicht (er wird auch im Superblock gespeichert), beginnt das Dateisystem-Testprogramm mit der Überprüfung, auch wenn sein Status „Clean“ ist. Der Zeitpunkt der letzten Überprüfung und das maximale Intervall zwischen den Überprüfungen werden ebenfalls im Superblock gespeichert. Wenn das maximale Intervall zwischen den Scans erreicht ist, wird der Status des Dateisystems ignoriert und der Scan gestartet.

Das EXT2fs-System enthält Tools zu seiner Konfiguration. Mit dem Programm tune2fs können Sie Folgendes ändern:

  • Aktionen, wenn ein Fehler erkannt wird. Wenn der Kernel eine Diskrepanz erkennt, wird das Dateisystem als „Fehlerhaft“ markiert und eine der folgenden drei Aktionen kann ausgeführt werden: Ausführung fortsetzen, das Dateisystem erneut im schreibgeschützten Modus bereitstellen, um Schäden zu vermeiden, oder das System neu starten, um das zu überprüfen Dateisystem.
  • Maximaler Mount-Wert.
  • maximales Intervall zwischen den Überprüfungen.
  • Anzahl der logischen Blöcke, die für den Root-Benutzer reserviert sind.

Beim Mounten angegebene Optionen können auch verwendet werden, um zu ändern, was der Kernel tut, wenn er einen Fehler erkennt.

Mithilfe von Attributen können Benutzer vertrauliche Dateien löschen. Wenn eine solche Datei gelöscht wird, werden zufällige Informationen in die Blöcke geschrieben, die zuvor zum Platzieren dieser Datei verwendet wurden. Dies verhindert, dass Außenstehende mit einem Festplatteneditor Zugriff auf den vorherigen Inhalt dieser Datei erhalten.

Kürzlich wurden dem EXT2fs-System neue Dateitypen hinzugefügt, die aus dem BSD-Dateisystem 4.4 übernommen wurden. Dateien des ersten Typs können nur zum Lesen verwendet werden: Niemand hat das Recht, sie zu ändern oder zu löschen. Damit können wichtige Konfigurationsdateien geschützt werden. Ein anderer Dateityp ist eine Datei, die im Schreibmodus geöffnet werden kann und an deren Ende Daten nur angehängt werden können. Dateien dieses Typs können auch nicht gelöscht oder umbenannt werden. Sie können als Protokolldateien verwendet werden, deren Größe nur zunehmen kann.

Leistungsoptimierung

Das EXT2fs-System enthält viele Funktionen, die seine Leistung optimieren, was zu einer erhöhten Geschwindigkeit des Informationsaustauschs beim Lesen und Schreiben von Dateien führt.

EXT2fs nutzt aktiv den Festplattenpuffer. Wenn ein Block gelesen werden muss, sendet der Kernel eine E/A-Operationsanforderung an mehrere benachbarte Blöcke. Somit versucht der Kernel sicherzustellen, dass der nächste zu lesende Block bereits in den Festplattenpuffer geladen wurde. Solche Vorgänge werden normalerweise beim sequentiellen Lesen von Dateien ausgeführt.

Das EXT2fs-System enthält außerdem zahlreiche Optimierungen zur Informationsplatzierung. Blockgruppen werden verwendet, um entsprechende Inodes und Datenblöcke zusammenzufassen. Der Kernel versucht immer, die Datenblöcke einer Datei sowie deren Deskriptor in derselben Gruppe zu platzieren. Dadurch soll die Bewegung der Laufwerksköpfe beim Lesen des Deskriptors und der entsprechenden Datenblöcke reduziert werden.

Beim Schreiben von Daten in eine Datei weist EXT2fs beim Zuweisen eines neuen Blocks bis zu 8 zusammenhängende Blöcke vorab zu. Mit dieser Methode können Sie bei hoher Systemlast eine hohe Leistung erzielen. Dadurch können Dateien auch in zusammenhängenden Blöcken platziert werden, was das spätere Lesen beschleunigt.

EXT2fs-Bibliothek

Um die Nutzung von EXT2fs-Ressourcen und den Betrieb von Kontrollstrukturen dieses Dateisystems zu vereinfachen, wurde die Bibliothek libext2fs entwickelt. Diese Bibliothek enthält Funktionen, mit denen EXT2-Dateisystemdaten durch direkten Zugriff auf das physische Gerät definiert und geändert werden können.

Die meisten EXT2fs-Dienstprogramme (mke2fs, e2fsck, tune2fs, dumpe2fs, debugfs usw.) verwenden diese Bibliothek. Dies vereinfacht die Änderung dieser Dienstprogramme erheblich, da alle Änderungen zur Einführung zusätzlicher Funktionen in das EXT2fs-Dateisystem nur in der EXT2fs-Bibliothek vorgenommen werden müssen.

Da die Schnittstelle der EXT2fs-Bibliothek recht breit gefächert und abstrakt ist, können mit ihrer Hilfe problemlos Programme geschrieben werden, die direkten Zugriff auf das Dateisystem benötigen. Beispielsweise wurde die EXT2fs-Bibliothek während der Übertragung des 4.4 BSD-Dumps und der Wiederherstellung einiger Dienstprogramme verwendet. Zur Anpassung dieser Tools an Linux waren nur sehr wenige Änderungen erforderlich (wir mussten mehrere mit dem Dateisystem interagierende Funktionen durch Aufrufe der EXT2fs-Bibliothek ersetzen).

Die EXT2fs-Bibliothek bietet Zugriff auf die Operationen mehrerer Klassen. Die erste Klasse sind Vorgänge im Zusammenhang mit dem Dateisystem. Jedes Programm kann ein Dateisystem öffnen oder schließen, einen Bitblock lesen oder schreiben oder ein neues Dateisystem auf der Festplatte erstellen. Es gibt auch Funktionen zum Bearbeiten einer Liste fehlerhafter Blöcke im Dateisystem.

Die zweite Klasse von Operationen arbeitet mit Verzeichnissen. Ein Programm, das die EXT2fs-Bibliothek verwendet, kann ein Verzeichnis erstellen oder erweitern sowie Einträge in einem Verzeichnis hinzufügen oder löschen. Es gibt Funktionen sowohl zum Bestimmen des Pfads zu einer Datei mithilfe eines Inodes als auch zum Bestimmen des Pfads zu einer Datei mithilfe eines angegebenen Deskriptors.

Die letzte Operationsklasse arbeitet mit Indexhandles. Es ist möglich, die Deskriptortabelle zu lesen, einen Deskriptor zu lesen oder zu schreiben und alle Blöcke des angegebenen Deskriptors anzuzeigen. Es ist möglich, Funktionen zum Platzieren und Freigeben von Blöcken und Deskriptoren zu verwenden.

EXT2fs-Systemtools

Für das EXT2fs-System wurden leistungsstarke Steuerungen entwickelt. Diese Tools werden zum Erstellen, Ändern und Korrigieren von Inkonsistenzen in EXT2fs-Dateisystemen verwendet. Das Programm mke2fs wird zum Mounten einer Festplattenpartition verwendet, die ein leeres EXT2fs-Dateisystem enthält.

Mit dem Programm tune2fs können Dateisystemparameter konfiguriert werden. Mit seiner Hilfe können Sie die Reaktion auf Fehler, die maximale Anzahl von System-Mounts, das maximale Intervall zwischen Systemprüfungen und die Anzahl der für den Root-Benutzer reservierten logischen Blöcke ändern.

Das vielleicht interessanteste Tool ist der Dateisystem-Checker. E2fsck soll Inkonsistenzen im Dateisystem nach einem ungenauen Herunterfahren des gesamten Systems beseitigen. Die erste Version des e2fsck-Programms basiert auf dem Linus Torvald fsck-Programm für das Minix-Dateisystem. Die aktuelle Version des Programms wird jedoch mithilfe der EXT2fs-Bibliothek neu geschrieben und ist im Vergleich zur Originalversion schneller und kann bei der Überprüfung mehr Fehler im System korrigieren.

Das Programm e2fsck wurde für die Ausführung mit maximaler Geschwindigkeit entwickelt. Da Dateisystem-Prüfprogramme zu einer Festplattenbelastung führen, sollten die e2fsck-Algorithmen so optimiert werden, dass deutlich seltener auf Dateisystemstrukturen zugegriffen wird. Darüber hinaus würde die Reihenfolge der Überprüfung von Inodes und Verzeichnissen nach Blocknummer erfolgen, um die Zeit zu verkürzen, die zum Bewegen der Laufwerksköpfe benötigt wird.

Im ersten Durchgang durchläuft e2fsck alle Inodes im Dateisystem und untersucht jeden Inode als separates Systemelement. Daher werden andere Dateisystemobjekte bei diesem Test nicht überprüft. Einer der Zwecke solcher Prüfungen besteht darin, die Existenz des zu prüfenden Dateityps sowie die Übereinstimmung aller Blöcke im Deskriptor mit Blöcken mit vorhandenen Nummern zu überprüfen. Im ersten Durchgang werden die Bitmaps überprüft, die die Verwendung von Blöcken und Deskriptoren angeben.

Wenn e2fsck Datenblöcke findet, deren Nummern in mehr als einem Deskriptor enthalten sind, werden die Durchgänge 1B bis 1D ausgeführt, um die Diskrepanz aufzulösen, indem entweder die Anzahl der gemeinsam zu nutzenden Blöcke erhöht oder ein oder mehrere Deskriptoren entfernt werden.

Der erste Durchgang nimmt die meiste Zeit in Anspruch, da alle Inodes in den Speicher eingelesen und überprüft werden müssen. Um die Zeit von E/A-Vorgängen in nachfolgenden Durchgängen zu verkürzen, verbleiben alle erforderlichen Informationen im Puffer. Ein charakteristisches Merkmal dieses Schemas ist die Suche nach allen Verzeichnisblöcken des Dateisystems. Um diese Informationen zu erhalten, werden im zweiten Durchgang die Deskriptorstrukturen aller Verzeichnisse im Dateisystem erneut gelesen.

Im zweiten Durchgang werden Verzeichnisse als separate Elemente des Dateisystems überprüft. Jeder Verzeichnisblock wird separat geprüft, ohne Bezug auf andere Verzeichnisblöcke. Dadurch kann e2fsck alle Verzeichnisblöcke nach Blocknummer sortieren und in aufsteigender Reihenfolge prüfen, wodurch die Zugriffszeit auf die Festplatte verkürzt wird. Verzeichnisblöcke werden getestet, um sicherzustellen, dass ihre Einträge gültig sind und Verweise auf Handles mit vorhandenen Nummern enthalten (wie im ersten Durchgang ermittelt).

Für den ersten Verzeichnisblock in jedem Verzeichnisdeskriptor wird das Vorhandensein von „.“-Einträgen überprüft. und „..“ und dass die Deskriptornummer für den Eintrag „.“ entspricht dem aktuellen Verzeichnis. (Die Deskriptornummer für den Eintrag „..“ wird erst im dritten Durchgang getestet.)

Beim zweiten Durchlauf werden die dem übergeordneten Verzeichnis entsprechenden Informationen in einem Puffer gespeichert.

Es ist zu beachten, dass am Ende des zweiten Durchgangs fast alle E/A-Vorgänge auf der Festplatte abgeschlossen sind. Alle für den dritten, vierten und fünften Durchlauf erforderlichen Informationen sind im Speicher enthalten. Die verbleibenden Durchgänge belasten jedoch den Prozessor und beanspruchen weniger als 5–10 % der gesamten e2fsck-Ausführungszeit.

Im dritten Durchgang werden Verzeichnisverbindungen überprüft. E2fsck überprüft die Pfade jedes Verzeichnisses zum Stammverzeichnis anhand der im zweiten Durchgang erhaltenen Informationen. Hier wird der Eintrag „..“ für jedes Verzeichnis überprüft. Alle nach der Prüfung identifizierten Verzeichnisse, die keine Verbindung zum Stammverzeichnis haben, werden im Verzeichnis /lost+found abgelegt.

Im Laufe der Zeit erreicht der E2FSCK die Referenzen für jeden Index-Desktop, indem er alle Tabellen und die Interpretation von Referenzen (diese Information erfolgt am Nachmittag) mit den inländischen Zählern anwendet, deren Werte im weiteren Verlauf berechnet wurden der zweite und der zweite Zug. Alle wiederhergestellten Dateien mit einem Referenzzähler von Null werden ebenfalls im Verzeichnis /lost+found abgelegt.

Schließlich prüft e2fsck im fünften Durchgang, ob alle Dateisysteminformationen übereinstimmen. Hierbei werden die Bitmaps von Blöcken und Deskriptoren, die in vorherigen Durchgängen gewonnen wurden, mit den tatsächlichen Werten verglichen und gegebenenfalls die Informationen auf der Festplatte entsprechend angepasst.

Ein weiteres nützliches Tool ist der Dateisystem-Debugger. Debugfs ist ein leistungsstarkes Programm, mit dem Sie den Status eines Dateisystems ermitteln und festlegen können. Im Wesentlichen handelt es sich um eine interaktive Schnittstelle zur EXT2fs-Bibliothek, das heißt, sie übersetzt typisierte Befehle in Aufrufe von Bibliotheksfunktionen.

Debugfs können verwendet werden, um die interne Struktur eines Dateisystems zu bestimmen, ein beschädigtes System manuell zu reparieren oder bedingte Tests für e2fsck zu erstellen. Leider kann dieses Programm das Dateisystem beschädigen, wenn Sie nicht wissen, wie man es verwendet. Mit diesem Tool können Sie das Dateisystem einfach zerstören. Daher öffnet debugfs das Dateisystem standardmäßig im schreibgeschützten Modus. Für den Zugriff im Lese-/Schreibmodus geben Sie die Option -w an.

Leistungsberechnung

Die Ergebnisse des Bonnie-Tests können der folgenden Tabelle entnommen werden:

Zeichenweise Aufzeichnung (Kb/s)

Blockaufzeichnung (Kb/s)

Überspielen (KB/s)

Zeichenweises Lesen (Kb/s)

Blocklesen (Kb/s)

BSD Async

BSD-Synchronisierung

Ext2fs

1237

1033

Xia fs

Für Block-I/O sind die Ergebnisse recht gut: Das EXT2fs-System übertrifft andere Systeme in puncto Leistung. Dies ist auf die in den Platzierungsverfahren enthaltenen Optimierungen zurückzuführen. Auch die Aufnahme erfolgt recht schnell, da sie im Gruppenmodus erfolgt. Die hohe Lesegeschwindigkeit ist darauf zurückzuführen, dass die Blöcke der Datei zugewiesen wurden, sodass sich die Laufwerksköpfe zwischen zwei Lesevorgängen nicht bewegen und die Optimierung vor dem Lesen voll funktionsfähig ist.

Andererseits bietet das FreeBSD-System eine höhere Leistung für symbolische E/A. Dies kann daran liegen, dass FreeBSD und Linux unterschiedliche Vorgehensweisen für die entsprechenden C-Bibliotheken verwenden. Darüber hinaus verfügt FreeBSD höchstwahrscheinlich über eine optimiertere symbolische Lesebibliothek und daher ist die Leistung hier etwas besser.

Andrew-Testergebnisse

Andrews Testergebnisse sind aus der folgenden Tabelle ersichtlich:

Passage 1 Schöpfung

Pass 2 Kopie

Passage 3 Statusprüfung

Bestehen Sie 4 Byte-für-Byte-Prüfung

Zusammenstellung von Passage 5

2203

7391

6319

17466

75314

BSD-Synchronisierung

2330

7732

6317

17499

75681

Ext2fs

Die Ergebnisse der ersten beiden Durchgänge zeigen, dass Linux beim asynchronen Datenaustausch gewinnt. Beim Erstellen von Verzeichnissen und Dateien schreibt das BSD-System Verzeichnishandles und Verzeichniseinträge synchron. Es gibt Spekulationen, dass die asynchrone Unterstützung für FreeBSD noch nicht vollständig implementiert ist.

Im dritten Durchgang sind die Werte für Linux und BSD sehr ähnlich. Während BSD eine bessere Leistung erbringt, wird dieses Problem durch das Hinzufügen eines Dateinamenpuffers zum Linux VFS behoben.

Im vierten und fünften Durchgang ist Linux schneller als FreeBSD, was hauptsächlich auf die Verwendung einer einheitlichen Pufferverwaltung zurückzuführen ist. Die Puffergröße kann je nach Bedarf wachsen und mehr Speicher beanspruchen als FreeBSD, das eine feste Größe verwendet. Ein Vergleich der Ergebnisse der Systeme EXT2fs und Xia fs zeigt, dass die in EXT2fs enthaltenen Optimierungen tatsächlich genutzt werden: Der Unterschied in der Leistung dieser Systeme beträgt etwa 5-10 %.

Abschluss

Das EXT2-Dateisystem ist unter Linux-Benutzern das am weitesten verbreitete. Es bietet Standard-Unix-Funktionen und zusätzliche Funktionen. Darüber hinaus zeigt es dank der im Kernel enthaltenen Optimierung hervorragende Leistungsergebnisse.

Das EXT2fs-System umfasst Funktionen, mit denen Sie neue Funktionen hinzufügen können. Einige Leute arbeiten an der Entwicklung von Erweiterungen für das echte Dateisystem: Posix ACL, Wiederherstellung gelöschte Dateien und Dateikomprimierung in Echtzeit.

Zunächst wurde das EXT2fs-System in den Linux-Kernel integriert, nun wird es aktiv auf andere Betriebssysteme portiert. EXT2fs ist auch ein wichtiger Bestandteil des Masix-Betriebssystems, das derzeit von einem der Autoren entwickelt wird.


Spitze