Dateisystem - File system

In der Computerbranche ist das Dateisystem oder Dateisystem (oft mit fs abgekürzt ) eine Methode und Datenstruktur, die das Betriebssystem verwendet, um zu steuern, wie Daten gespeichert und abgerufen werden. Ohne ein Dateisystem wären die auf einem Speichermedium abgelegten Daten eine große Datenmenge, ohne dass man sagen kann, wo ein Datenteil aufhört und das nächste beginnt. Durch das Aufteilen der Daten in Teile und die Benennung jedes Teils können die Daten leicht isoliert und identifiziert werden. In Anlehnung an die Bezeichnung des papierbasierten Datenverwaltungssystems wird jede Datengruppe als „ Datei “ bezeichnet. Die zur Verwaltung der Datengruppen und ihrer Namen verwendeten Struktur- und Logikregeln werden als "Dateisystem" bezeichnet.

Es gibt viele verschiedene Arten von Dateisystemen. Jeder hat eine andere Struktur und Logik, Eigenschaften von Geschwindigkeit, Flexibilität, Sicherheit, Größe und mehr. Einige Dateisysteme wurden entwickelt, um für bestimmte Anwendungen verwendet zu werden. Das Dateisystem ISO 9660 wurde beispielsweise speziell für optische Datenträger entwickelt .

Dateisysteme können auf zahlreichen verschiedenen Arten von Speichergeräten verwendet werden , die verschiedene Arten von Medien verwenden. Ab 2019 waren Festplatten wichtige Speichergeräte und werden es voraussichtlich auf absehbare Zeit bleiben. Andere Arten von Medien, die verwendet werden, sind SSDs , Magnetbänder und optische Discs. In einigen Fällen, wie beispielsweise bei tmpfs , wird der Hauptspeicher des Computers ( Random Access Memory , RAM) verwendet, um ein temporäres Dateisystem für den kurzfristigen Gebrauch zu erstellen.

Einige Dateisysteme werden auf lokalen Datenspeichergeräten verwendet ; andere bieten Dateizugriff über ein Netzwerkprotokoll (z. B. NFS- , SMB- oder 9P- Clients). Einige Dateisysteme sind "virtuell", was bedeutet, dass die gelieferten "Dateien" (als virtuelle Dateien bezeichnet ) auf Anfrage berechnet werden (wie procfs und sysfs ) oder lediglich eine Abbildung in ein anderes Dateisystem sind, das als Sicherungsspeicher verwendet wird. Das Dateisystem verwaltet den Zugriff sowohl auf den Inhalt von Dateien als auch auf die Metadaten zu diesen Dateien. Es ist für die Anordnung des Speicherplatzes verantwortlich; Zuverlässigkeit, Effizienz und Abstimmung in Bezug auf das physische Speichermedium sind wichtige Designüberlegungen.

Herkunft des Begriffs

Vor dem Aufkommen von Computern wurde der Begriff Dateisystem verwendet, um eine Methode zum Speichern und Abrufen von Papierdokumenten zu beschreiben. 1961 wurde der Begriff neben der ursprünglichen Bedeutung für die computergestützte Einreichung verwendet. Bis 1964 war es im allgemeinen Gebrauch.

Die Architektur

Ein Dateisystem besteht aus zwei oder drei Schichten. Manchmal werden die Ebenen explizit getrennt und manchmal werden die Funktionen kombiniert.

Das logische Dateisystem ist für die Interaktion mit der Benutzeranwendung verantwortlich. Es stellt die Anwendungsprogrammschnittstelle (API) für Dateioperationen bereitOPEN, CLOSE, READusw. und übergibt die angeforderte Operation zur Verarbeitung an die darunter liegende Schicht. Das logische Dateisystem "verwaltet offene Dateitabelleneinträge und Dateideskriptoren pro Prozess". Diese Schicht bietet "Dateizugriff, Verzeichnisoperationen, [und] Sicherheit und Schutz".

Die zweite optionale Schicht ist das virtuelle Dateisystem . "Diese Schnittstelle ermöglicht die Unterstützung mehrerer gleichzeitiger Instanzen von physischen Dateisystemen, von denen jede als Dateisystemimplementierung bezeichnet wird".

Die dritte Schicht ist das physische Dateisystem . Diese Schicht befasst sich mit dem physischen Betrieb des Speichergeräts (zB Festplatte). Es verarbeitet physische Blöcke , die gelesen oder geschrieben werden. Es übernimmt die Pufferung und Speicherverwaltung und ist für die physische Platzierung von Blöcken an bestimmten Orten auf dem Speichermedium verantwortlich. Das physische Dateisystem interagiert mit den Gerätetreibern oder mit dem Kanal , um das Speichergerät anzusteuern.

Aspekte von Dateisystemen

Raum-Management

Hinweis: Dies gilt nur für Dateisysteme, die in Speichergeräten verwendet werden.

Ein Beispiel für Leerraum, demonstriert mit 4.096- Byte- NTFS-Clustern: 100.000 Dateien, jede fünf Byte pro Datei, was 500.000 Byte tatsächlichen Daten entspricht, aber zum Speichern 409.600.000 Byte Festplattenspeicher benötigt

Dateisysteme weisen Speicherplatz granular zu, normalerweise mehrere physikalische Einheiten auf dem Gerät. Das Dateisystem ist dafür verantwortlich, Dateien und Verzeichnisse zu organisieren und zu verfolgen, welche Bereiche des Mediums zu welcher Datei gehören und welche nicht verwendet werden. In Apple DOS der frühen 1980er Jahre verwendeten beispielsweise 256-Byte-Sektoren auf einer 140-Kilobyte-Diskette eine Spur/Sektor-Zuordnung .

Dies führt zu ungenutztem Speicherplatz, wenn eine Datei kein genaues Vielfaches der Zuordnungseinheit ist, manchmal auch als Leerraum bezeichnet . Bei einer Zuweisung von 512 Byte beträgt der durchschnittliche ungenutzte Speicherplatz 256 Byte. Bei 64-KB-Clustern beträgt der durchschnittliche ungenutzte Speicherplatz 32 KB. Die Größe der Zuordnungseinheit wird beim Anlegen des Dateisystems gewählt. Die Auswahl der Zuordnungsgröße basierend auf der durchschnittlichen Größe der Dateien, die im Dateisystem erwartet werden, kann die Menge an nicht verwendbarem Speicherplatz minimieren. Häufig kann die Standardzuweisung eine angemessene Nutzung ermöglichen. Eine zu kleine Auswahl der Zuordnungsgröße führt zu einem übermäßigen Overhead, wenn das Dateisystem überwiegend sehr große Dateien enthält.

Dateisysteme können fragmentiert werden

Dateisystemfragmentierung tritt auf, wenn ungenutzter Speicherplatz oder einzelne Dateien nicht zusammenhängend sind. Da ein Dateisystem verwendet wird, werden Dateien erstellt, geändert und gelöscht. Wenn eine Datei erstellt wird, weist das Dateisystem Speicherplatz für die Daten zu. Einige Dateisysteme erlauben oder erfordern die Angabe einer anfänglichen Speicherplatzzuweisung und nachfolgender inkrementeller Zuweisungen, wenn die Datei wächst. Wenn Dateien gelöscht werden, wird der ihnen zugewiesene Speicherplatz schließlich als für die Verwendung durch andere Dateien verfügbar betrachtet. Dadurch entstehen abwechselnd genutzte und ungenutzte Flächen unterschiedlicher Größe. Dies ist die Fragmentierung des freien Speicherplatzes. Wenn eine Datei erstellt wird und für ihre anfängliche Zuordnung kein zusammenhängender Speicherplatz verfügbar ist, muss der Speicherplatz in Fragmenten zugewiesen werden. Wenn eine Datei so geändert wird, dass sie größer wird, kann sie den ursprünglich zugewiesenen Speicherplatz überschreiten, eine andere Zuweisung muss an anderer Stelle zugewiesen werden und die Datei wird fragmentiert.

In einigen Betriebssystemen kann ein Systemadministrator Festplattenkontingente verwenden , um die Zuweisung von Festplattenspeicherplatz zu begrenzen.

Dateinamen

Ein Dateiname (oder Dateiname ) wird verwendet, um einen Speicherort im Dateisystem zu identifizieren. Die meisten Dateisysteme haben Beschränkungen bezüglich der Länge von Dateinamen. In einigen Dateisystemen muss bei Dateinamen die Groß-/Kleinschreibung nicht beachtet werden (dh die Namen MYFILEund myfilebeziehen sich auf dieselbe Datei in einem Verzeichnis); in anderen wird bei Dateinamen die Groß-/Kleinschreibung beachtet (dh die Namen MYFILE, MyFile, und myfilebeziehen sich auf drei separate Dateien, die sich im selben Verzeichnis befinden).

Bei den meisten modernen Dateisystemen können Dateinamen eine Vielzahl von Zeichen aus dem Unicode- Zeichensatz enthalten. Sie können jedoch Einschränkungen hinsichtlich der Verwendung bestimmter Sonderzeichen haben, die sie in Dateinamen nicht zulassen. diese Zeichen können verwendet werden, um ein Gerät, einen Gerätetyp, ein Verzeichnispräfix, ein Dateipfadtrennzeichen oder einen Dateityp anzugeben.

Verzeichnisse

Dateisysteme haben normalerweise Verzeichnisse (auch Ordner genannt ), die es dem Benutzer ermöglichen, Dateien in separate Sammlungen zu gruppieren. Dies kann implementiert werden, indem der Dateiname mit einem Index in einem Inhaltsverzeichnis oder einem Inode in einem Unix-ähnlichen Dateisystem verknüpft wird. Verzeichnisstrukturen können flach (dh linear) sein oder Hierarchien zulassen, wobei Verzeichnisse Unterverzeichnisse enthalten können. Das erste Dateisystem, das beliebige Verzeichnishierarchien unterstützte, wurde im Betriebssystem Multics verwendet. Die nativen Dateisysteme von Unix-ähnlichen Systemen auch beliebige Verzeichnishierarchien unterstützen, wie auch zum Beispiel von Apple ‚s Hierarchical File System , und seine Nachfolger HFS + in klassischem Mac OS , das FAT - Dateisystem in MS-DOS 2.0 und späteren Versionen von MS-DOS und in Microsoft Windows , das NTFS- Dateisystem der Windows NT- Betriebssystemfamilie und ODS-2 (On-Disk Structure-2) und höhere Ebenen des Files-11- Dateisystems in OpenVMS .

Metadaten

Andere Buchhaltungsinformationen sind typischerweise mit jeder Datei innerhalb eines Dateisystems verbunden. Die Länge der in einer Datei enthaltenen Daten kann als Anzahl der der Datei zugewiesenen Blöcke oder als Byte- Zählung gespeichert werden . Die Zeit , zu der die Datei zuletzt geändert wurde, kann als Zeitstempel der Datei gespeichert werden. Dateisysteme können den Zeitpunkt der Dateierstellung, den Zeitpunkt des letzten Zugriffs, den Zeitpunkt der Änderung der Metadaten der Datei oder den Zeitpunkt der letzten Sicherung der Datei speichern. Andere Informationen können den Gerätetyp der Datei (z. B. Block , Zeichen , Socket , Unterverzeichnis usw.), ihre Besitzer- Benutzer-ID und Gruppen-ID , ihre Zugriffsberechtigungen und andere Dateiattribute (z. B. ob die Datei schreibgeschützt, ausführbar usw .).

Ein Dateisystem speichert alle mit der Datei verknüpften Metadaten – einschließlich des Dateinamens, der Länge des Inhalts einer Datei und der Position der Datei in der Ordnerhierarchie – getrennt vom Inhalt der Datei.

Die meisten Dateisysteme speichern die Namen aller Dateien in einem Verzeichnis an einem Ort – der Verzeichnistabelle für dieses Verzeichnis – die oft wie jede andere Datei gespeichert wird. Viele Dateisysteme legen nur einen Teil der Metadaten für eine Datei in der Verzeichnistabelle ab und den Rest der Metadaten für diese Datei in einer völlig separaten Struktur, z. B. in der inode .

Die meisten Dateisysteme speichern auch Metadaten, die keiner bestimmten Datei zugeordnet sind. Zu diesen Metadaten gehören Informationen über ungenutzte Regionen – Bitmap des freien Speicherplatzes , Blockverfügbarkeitskarte – und Informationen über fehlerhafte Sektoren . Häufig werden solche Informationen über eine Zuordnungsgruppe innerhalb der Zuordnungsgruppe selbst gespeichert.

Zusätzliche Attribute können mit Dateisystemen wie NTFS , XFS , ext2 , ext3 , einigen Versionen von UFS und HFS+ mit erweiterten Dateiattributen verknüpft werden . Einige Dateisysteme bieten benutzerdefinierte Attribute wie den Autor des Dokuments, die Zeichenkodierung eines Dokuments oder die Größe eines Bildes.

Einige Dateisysteme ermöglichen die Zuordnung verschiedener Datensammlungen zu einem Dateinamen. Diese getrennten Sammlungen können als Streams oder Forks bezeichnet werden . Apple verwendet seit langem ein gegabeltes Dateisystem auf dem Macintosh, und Microsoft unterstützt Streams in NTFS. Einige Dateisysteme verwalten mehrere frühere Revisionen einer Datei unter einem einzigen Dateinamen; der Dateiname selbst ruft die neueste Version ab, während auf eine frühere gespeicherte Version zugegriffen werden kann, indem eine spezielle Namenskonvention wie "Dateiname;4" oder "Dateiname(-4)" verwendet wird, um auf die Version vor vier Speicherungen zuzugreifen.

Siehe Vergleich von Dateisystemen#Metadaten für Details darüber, welche Dateisysteme welche Arten von Metadaten unterstützen.

Dateisystem als abstrakte Benutzeroberfläche

In einigen Fällen verwendet ein Dateisystem möglicherweise kein Speichergerät, kann jedoch verwendet werden, um den Zugriff auf alle Daten zu organisieren und darzustellen, unabhängig davon, ob sie gespeichert oder dynamisch generiert werden (zB procfs ).

Dienstprogramme

Dateisysteme umfassen Dienstprogramme zum Initialisieren, Ändern von Parametern und Entfernen einer Instanz des Dateisystems. Einige beinhalten die Möglichkeit, den dem Dateisystem zugewiesenen Speicherplatz zu erweitern oder zu kürzen.

Verzeichnisdienstprogramme können verwendet werden, um Verzeichniseinträge zu erstellen, umzubenennen und zu löschen , die auch als dentries (Singular: dentry ) bekannt sind, und um Metadaten zu ändern, die einem Verzeichnis zugeordnet sind. Verzeichnisdienstprogramme können auch Fähigkeiten zum Erstellen zusätzlicher Links zu einem Verzeichnis ( harte Links in Unix ), zum Umbenennen von übergeordneten Links (".." in Unix-ähnlichen Betriebssystemen) und zum Erstellen bidirektionaler Links zu Dateien umfassen.

Dateidienstprogramme erstellen, listen, kopieren, verschieben und löschen Dateien und ändern Metadaten. Sie sind möglicherweise in der Lage, Daten zu kürzen, Speicherplatzzuweisungen zu kürzen oder zu erweitern, Dateien direkt anzuhängen, zu verschieben und zu ändern. Abhängig von der zugrunde liegenden Struktur des Dateisystems können sie einen Mechanismus bereitstellen, um den Anfang einer Datei voranzustellen oder abzuschneiden, Einträge in die Mitte einer Datei einzufügen oder Einträge aus einer Datei zu löschen. Zu dieser Kategorie gehören auch Dienstprogramme, um Speicherplatz für gelöschte Dateien freizugeben, wenn das Dateisystem eine Wiederherstellungsfunktion bietet.

Einige Dateisysteme verschieben Operationen wie die Neuorganisation von freiem Speicherplatz, sicheres Löschen von freiem Speicherplatz und Neuaufbau hierarchischer Strukturen, indem Dienstprogramme bereitgestellt werden, um diese Funktionen zu Zeiten minimaler Aktivität auszuführen. Ein Beispiel sind die Dienstprogramme zur Defragmentierung von Dateisystemen .

Einige der wichtigsten Funktionen von Dateisystemdienstprogrammen sind Überwachungsaktivitäten, die das Umgehen des Eigentums oder den direkten Zugriff auf das zugrunde liegende Gerät beinhalten können. Dazu gehören hochperformantes Backup und Recovery, Datenreplikation und die Reorganisation verschiedener Datenstrukturen und Zuordnungstabellen innerhalb des Dateisystems.

Zugriff einschränken und zulassen

Es gibt mehrere Mechanismen, die von Dateisystemen verwendet werden, um den Zugriff auf Daten zu kontrollieren. Normalerweise besteht die Absicht darin, das Lesen oder Ändern von Dateien durch einen Benutzer oder eine Benutzergruppe zu verhindern. Ein weiterer Grund besteht darin, sicherzustellen, dass Daten auf kontrollierte Weise geändert werden, sodass der Zugriff auf ein bestimmtes Programm beschränkt werden kann. Beispiele sind Passwörter, die in den Metadaten der Datei oder anderswo gespeichert sind, und Dateiberechtigungen in Form von Berechtigungsbits, Zugriffskontrolllisten oder Funktionen . Da Dateisystem-Dienstprogramme auf Medienebene auf die Daten zugreifen können müssen, um die Strukturen zu reorganisieren und effiziente Backups bereitzustellen, sind diese normalerweise nur für höfliche Benutzer wirksam, aber nicht gegen Eindringlinge.

Verfahren zum Verschlüsseln von Dateidaten sind manchmal im Dateisystem enthalten. Dies ist sehr effektiv, da Dateisystem-Dienstprogramme den Verschlüsselungs-Seed nicht kennen müssen, um die Daten effektiv zu verwalten. Zu den Risiken des Vertrauens auf Verschlüsselung gehört die Tatsache, dass ein Angreifer die Daten kopieren und die Daten mithilfe von Brute-Force entschlüsseln kann. Darüber hinaus bedeutet der Verlust des Seeds den Verlust der Daten.

Integrität bewahren

Eine wesentliche Verantwortung eines Dateisystems besteht darin, sicherzustellen, dass die Dateisystemstrukturen im Sekundärspeicher unabhängig von den Aktionen von Programmen, die auf das Dateisystem zugreifen, konsistent bleiben. Dies schließt Aktionen ein, die ergriffen werden, wenn ein Programm, das das Dateisystem modifiziert, abnormal beendet wird oder es versäumt, das Dateisystem darüber zu informieren, dass es seine Aktivitäten abgeschlossen hat. Dies kann das Aktualisieren der Metadaten, des Verzeichniseintrags und das Behandeln von Daten umfassen, die gepuffert, aber noch nicht auf dem physischen Speichermedium aktualisiert wurden.

Andere Fehler, mit denen das Dateisystem umgehen muss, umfassen Medienfehler oder den Verlust der Verbindung zu entfernten Systemen.

Bei einem Ausfall des Betriebssystems oder einem "Soft"-Power-Ausfall müssen ähnlich wie beim Ausfall eines einzelnen Programms spezielle Routinen im Dateisystem aufgerufen werden.

Das Dateisystem muss auch in der Lage sein, beschädigte Strukturen zu korrigieren. Diese können als Folge eines Betriebssystemfehlers auftreten, für den das Betriebssystem das Dateisystem nicht benachrichtigen konnte, eines Stromausfalls oder eines Resets.

Das Dateisystem muss auch Ereignisse aufzeichnen, um systemische Probleme sowie Probleme mit bestimmten Dateien oder Verzeichnissen analysieren zu können.

Benutzerdaten

Der wichtigste Zweck eines Dateisystems ist die Verwaltung von Benutzerdaten. Dies umfasst das Speichern, Abrufen und Aktualisieren von Daten.

Einige Dateisysteme akzeptieren Daten zur Speicherung als einen Strom von Bytes, die gesammelt und in einer für die Medien effizienten Weise gespeichert werden. Wenn ein Programm die Daten abruft, gibt es die Größe eines Speicherpuffers an und das Dateisystem überträgt Daten vom Medium in den Puffer. Eine Laufzeitbibliotheksroutine kann es dem Benutzerprogramm manchmal ermöglichen, einen Datensatz basierend auf einem Bibliotheksaufruf zu definieren , der eine Länge angibt. Wenn das Benutzerprogramm die Daten liest, ruft die Bibliothek die Daten über das Dateisystem ab und gibt einen Datensatz zurück .

Einige Dateisysteme erlauben die Angabe einer festen Satzlänge, die für alle Schreib- und Lesevorgänge verwendet wird. Dies erleichtert das Auffinden des n- ten Datensatzes sowie das Aktualisieren von Datensätzen.

Eine Identifikation für jeden Datensatz, auch als Schlüssel bezeichnet, sorgt für ein ausgefeilteres Dateisystem. Das Anwenderprogramm kann Datensätze unabhängig von ihrem Standort lesen, schreiben und aktualisieren. Dies erfordert eine komplizierte Verwaltung von Medienblöcken, die normalerweise Schlüsselblöcke und Datenblöcke trennen. Mit Pyramidenstrukturen lassen sich sehr effiziente Algorithmen zum Auffinden von Datensätzen entwickeln.

Verwenden eines Dateisystems

Dienstprogramme, sprachspezifische Laufzeitbibliotheken und Benutzerprogramme verwenden Dateisystem-APIs , um Anforderungen an das Dateisystem zu stellen. Dazu gehören Datenübertragung, Positionierung, Aktualisierung von Metadaten, Verwaltung von Verzeichnissen, Verwaltung von Zugriffsspezifikationen und Entfernung.

Mehrere Dateisysteme in einem einzigen System

Häufig sind Einzelhandelssysteme mit einem einzigen Dateisystem konfiguriert, das das gesamte Speichergerät belegt .

Ein anderer Ansatz besteht darin , die Platte so zu partitionieren , dass mehrere Dateisysteme mit unterschiedlichen Attributen verwendet werden können. Ein Dateisystem zur Verwendung als Browser-Cache oder E-Mail-Speicher kann mit einer kleinen Zuordnungsgröße konfiguriert werden. Dadurch wird die Aktivität des Erstellens und Löschens von Dateien, die für Browseraktivitäten typisch sind, in einem engen Bereich der Festplatte gehalten, wo sie andere Dateizuordnungen nicht beeinträchtigt. Eine weitere Partition kann für die Speicherung von Audio- oder Videodateien mit einer relativ großen Blockgröße erstellt werden. Noch ein anderer kann normalerweise schreibgeschützt und nur periodisch beschreibbar eingestellt werden.

Ein dritter Ansatz, der vor allem in Cloud-Systemen verwendet wird, besteht darin, " Disk-Images " zu verwenden, um zusätzliche Dateisysteme mit denselben Attributen oder nicht in einem anderen (Host-)Dateisystem als Datei unterzubringen. Ein gängiges Beispiel ist die Virtualisierung: Ein Benutzer kann eine experimentelle Linux-Distribution (unter Verwendung des ext4- Dateisystems) in einer virtuellen Maschine unter seiner Windows-Produktionsumgebung (unter Verwendung von NTFS ) ausführen . Das ext4-Dateisystem befindet sich in einem Disk-Image, das im NTFS-Host-Dateisystem als Datei (oder mehrere Dateien, je nach Hypervisor und Einstellungen) behandelt wird.

Mehrere Dateisysteme auf einem einzigen System zu haben hat den zusätzlichen Vorteil, dass im Falle einer Beschädigung einer einzelnen Partition die verbleibenden Dateisysteme häufig noch intakt sind. Dazu gehören Virus Zerstörung der Systempartition oder sogar ein System , das nicht mehr startet. Dateisystem-Dienstprogramme, die einen dedizierten Zugriff erfordern, können stückchenweise effektiv abgeschlossen werden. Außerdem kann die Defragmentierung effektiver sein. Mehrere Dienstprogramme zur Systemwartung, wie Virenscans und Backups, können auch in Segmenten verarbeitet werden. Es ist beispielsweise nicht erforderlich, das Dateisystem mit den Videos zusammen mit allen anderen Dateien zu sichern, wenn seit der letzten Sicherung keine hinzugefügt wurden. Was die Bilddateien angeht, kann man leicht Differenzbilder "abdrehen", die nur "neue" Daten enthalten, die in das Master-(Original-)Bild geschrieben wurden. Differenzielle Images können für beide Sicherheitsbedenken verwendet werden (als "Wegwerf"-System - können bei Zerstörung oder Kontamination durch einen Virus schnell wiederhergestellt werden, da das alte Image entfernt und in Sekundenschnelle ein neues Image erstellt werden kann, auch ohne automatisierte Verfahren) und schnelle Bereitstellung virtueller Maschinen (da die differenziellen Images schnell mit einem Skript in Stapeln erzeugt werden können).

Designeinschränkungen

Alle Dateisysteme haben eine Funktionsgrenze, die die maximal speicherbare Datenkapazität innerhalb dieses Systems definiert . Diese funktionalen Grenzen sind eine Schätzung des Entwicklers, basierend darauf, wie groß die Speichersysteme derzeit sind und wie groß die Speichersysteme in Zukunft wahrscheinlich werden werden. Der Plattenspeicher hat sich nahezu exponentiell erhöht (siehe Mooresches Gesetz ), sodass Dateisysteme nach einigen Jahren immer wieder an Designgrenzen stoßen, die es Computerbenutzern erforderlich machen, wiederholt auf ein neueres System mit immer größerer Kapazität umzusteigen.

Die Komplexität des Dateisystems variiert typischerweise proportional mit der verfügbaren Speicherkapazität. Die Dateisysteme der Heimcomputer der frühen 1980er Jahre mit 50 KB bis 512 KB Speicher wären für moderne Speichersysteme mit Hunderten von Gigabyte Kapazität keine vernünftige Wahl. Ebenso wären moderne Dateisysteme für diese frühen Systeme keine vernünftige Wahl, da die Komplexität moderner Dateisystemstrukturen die sehr begrenzte Kapazität der frühen Speichersysteme schnell verbrauchen oder sogar überschreiten würde.

Arten von Dateisystemen

Dateisystemtypen können in Platten-/Banddateisysteme, Netzwerkdateisysteme und Spezialdateisysteme eingeteilt werden.

Disk-Dateisysteme

Ein Plattendateisystem nutzt die Vorteile der Fähigkeit von Plattenspeichermedien, Daten in kurzer Zeit zufällig zu adressieren. Zusätzliche Überlegungen umfassen die Geschwindigkeit des Zugriffs auf Daten, die auf die ursprünglich angeforderten Daten folgen, und die Erwartung, dass auch die folgenden Daten angefordert werden können. Dies ermöglicht mehreren Benutzern (oder Prozessen) den Zugriff auf verschiedene Daten auf der Platte ohne Rücksicht auf die sequentielle Position der Daten. Beispiele hierfür sind FAT ( FAT12 , FAT16 , FAT32 ), exFAT , NTFS , HFS und HFS + , HPFS , APFS , UFS , ext2 , ext3 , ext4 , XFS , Btrfs , Dateien-11 , Veritas File System , VMFS , ZFS , ReiserFS und ScoutFS . Einige Plattendateisysteme sind Journaling-Dateisysteme oder Versionsverwaltungsdateisysteme .

Optische Discs

ISO 9660 und Universal Disk Format (UDF) sind zwei gängige Formate, die auf Compact Discs , DVDs und Blu-ray- Discs abzielen . Mount Rainier ist eine Erweiterung von UDF, die seit der 2.6er Serie des Linux-Kernels und seit Windows Vista unterstützt wird und das Umschreiben auf DVDs erleichtert.

Flash-Dateisysteme

Ein Flash-Dateisystem berücksichtigt die besonderen Fähigkeiten, Leistung und Einschränkungen von Flash-Speichergeräten . Häufig kann ein Plattendateisystem ein Flash-Speichergerät als zugrunde liegendes Speichermedium verwenden, aber es ist viel besser, ein Dateisystem zu verwenden, das speziell für ein Flash-Gerät entwickelt wurde.

Banddateisysteme

Ein Banddateisystem ist ein Dateisystem und ein Bandformat zum Speichern von Dateien auf Band. Magnetbänder sind sequentielle Speichermedien mit deutlich längeren wahlfreien Datenzugriffszeiten als Platten, was die Erstellung und effiziente Verwaltung eines universellen Dateisystems vor Herausforderungen stellt.

In einem Plattendateisystem gibt es typischerweise ein Hauptdateiverzeichnis und eine Karte der verwendeten und freien Datenbereiche. Alle Dateien, die hinzugefügt, geändert oder entfernt werden, erfordern eine Aktualisierung des Verzeichnisses und der verwendeten/freien Karten. Der wahlfreie Zugriff auf Datenbereiche wird in Millisekunden gemessen, sodass dieses System gut für Festplatten funktioniert.

Das Band erfordert eine lineare Bewegung zum Auf- und Abwickeln von potenziell sehr langen Medienspulen. Diese Bandbewegung kann mehrere Sekunden bis mehrere Minuten dauern, um den Lese-/Schreibkopf von einem Ende des Bandes zum anderen zu bewegen.

Folglich können ein Hauptdateiverzeichnis und eine Verwendungszuordnung mit Band extrem langsam und ineffizient sein. Das Schreiben umfasst normalerweise das Lesen der Blocknutzungszuordnung, um freie Blöcke zum Schreiben zu finden, die Nutzungszuordnung und das Verzeichnis zu aktualisieren, um die Daten hinzuzufügen, und dann das Band vorzuschieben, um die Daten an der richtigen Stelle zu schreiben. Jeder zusätzliche Dateischreibvorgang erfordert das Aktualisieren der Map und des Verzeichnisses und das Schreiben der Daten, was für jede Datei mehrere Sekunden dauern kann.

Banddateisysteme ermöglichen stattdessen typischerweise, dass das Dateiverzeichnis mit den Daten vermischt über das Band verteilt wird, was als Streaming bezeichnet wird , so dass keine zeitaufwendigen und wiederholten Bandbewegungen erforderlich sind, um neue Daten zu schreiben.

Ein Nebeneffekt dieses Designs besteht jedoch darin, dass das Lesen des Dateiverzeichnisses eines Bandes normalerweise das Scannen des gesamten Bands erfordert, um alle verstreuten Verzeichniseinträge zu lesen. Die meisten Datenarchivierungsprogramme, die mit Bandspeichern arbeiten, speichern eine lokale Kopie des Bandkatalogs auf einem Plattendateisystem, sodass das Hinzufügen von Dateien zu einem Band schnell erfolgen kann, ohne dass das Bandmedium erneut gescannt werden muss. Die Kopie des lokalen Bandkatalogs wird normalerweise verworfen, wenn sie für einen bestimmten Zeitraum nicht verwendet wird. An diesem Punkt muss das Band erneut gescannt werden, wenn es in Zukunft verwendet werden soll.

IBM hat ein Dateisystem für Bänder namens Linear Tape File System entwickelt . Die IBM-Implementierung dieses Dateisystems wurde als Open-Source - Produkt IBM Linear Tape File System — Single Drive Edition (LTFS-SDE) veröffentlicht . Das Linear Tape File System verwendet eine separate Partition auf dem Band, um die Index-Metadaten aufzuzeichnen, wodurch die Probleme vermieden werden, die mit der Verstreuung von Verzeichniseinträgen über das gesamte Band verbunden sind.

Bandformatierung

Das Schreiben von Daten auf ein Band, das Löschen oder Formatieren eines Bandes ist oft ein erheblich zeitaufwändiger Vorgang und kann bei großen Bändern mehrere Stunden dauern. Bei vielen Datenbandtechnologien ist es nicht erforderlich, das Band vor dem Überschreiben neuer Daten auf das Band zu formatieren. Dies liegt an der inhärent destruktiven Natur des Überschreibens von Daten auf sequentiellen Medien.

Aufgrund der Zeit, die das Formatieren eines Bandes in Anspruch nehmen kann, werden Bänder normalerweise vorformatiert, so dass der Bandbenutzer keine Zeit damit verbringen muss, jedes neue Band für die Verwendung vorzubereiten. In der Regel ist es erforderlich, vor der Verwendung lediglich ein identifizierendes Medienetikett auf das Band zu schreiben, und selbst dieses kann bei der ersten Verwendung eines neuen Bandes automatisch per Software geschrieben werden.

Datenbankdateisysteme

Ein weiteres Konzept zur Dateiverwaltung ist die Idee eines datenbankbasierten Dateisystems. Anstelle oder zusätzlich zu einer hierarchisch strukturierten Verwaltung werden Dateien anhand ihrer Merkmale wie Dateityp, Thema, Autor oder ähnlicher reichhaltiger Metadaten identifiziert .

IBM DB2 for i (früher bekannt als DB2/400 und DB2 for i5/OS) ist ein Datenbankdateisystem als Teil des objektbasierten Betriebssystems IBM i (früher bekannt als OS/400 und i5/OS), das eine einzige Ebene enthält speichern und ausführen auf IBM Power Systems (früher bekannt als AS/400 und iSeries), entworfen von Frank G. Soltis IBMs ehemaligem Chefwissenschaftler für IBM i. Von 1978 bis 1988 haben Frank G. Soltis und sein Team bei IBM Rochester erfolgreich Technologien wie das Datenbank-Dateisystem entwickelt und angewendet, wo andere wie Microsoft später scheiterten. Diese Technologien sind informell als „Fortress Rochester“ bekannt und wurden in einigen grundlegenden Aspekten von frühen Mainframe-Technologien erweitert, aber in vielerlei Hinsicht aus technologischer Sicht fortschrittlicher.

Einige andere Projekte, die keine "reinen" Datenbankdateisysteme sind, aber einige Aspekte eines Datenbankdateisystems verwenden:

  • Viele Web-Content-Management-Systeme verwenden ein relationales DBMS zum Speichern und Abrufen von Dateien. Beispielsweise werden XHTML- Dateien als XML- oder Textfelder gespeichert , während Bilddateien als Blob-Felder gespeichert werden. SQL SELECT (mit optionalen XPath ) -Anweisungen rufen die Dateien ab und ermöglichen die Verwendung einer ausgeklügelten Logik und umfangreicherer Informationszuordnungen als "übliche Dateisysteme". Viele CMS haben auch die Möglichkeit, nur Metadaten in der Datenbank zu speichern, wobei das Standarddateisystem zum Speichern des Inhalts von Dateien verwendet wird.
  • Sehr große Dateisysteme, die von Anwendungen wie Apache Hadoop und Google File System verkörpert werden , verwenden einige Datenbank-Dateisystemkonzepte .

Transaktionale Dateisysteme

Einige Programme müssen entweder mehrere Dateisystemänderungen vornehmen oder, falls eine oder mehrere der Änderungen aus irgendeinem Grund fehlschlagen, keine der Änderungen vornehmen. Beispielsweise kann ein Programm, das Software installiert oder aktualisiert, ausführbare Dateien, Bibliotheken und/oder Konfigurationsdateien schreiben. Wenn einige Schreibvorgänge fehlschlagen und die Software teilweise installiert oder aktualisiert bleibt, ist die Software möglicherweise beschädigt oder unbrauchbar. Eine unvollständige Aktualisierung eines Schlüsselsystem - Utility, wie die Befehlsschal kann das gesamte System in einem unbrauchbaren Zustand verlassen.

Die Transaktionsverarbeitung führt die Atomizitätsgarantie ein , die sicherstellt, dass Operationen innerhalb einer Transaktion entweder alle festgeschrieben werden oder die Transaktion abgebrochen werden kann und das System alle ihre Teilergebnisse verwirft. Dies bedeutet, dass bei einem Absturz oder Stromausfall nach der Wiederherstellung der gespeicherte Zustand konsistent ist. Entweder wird die Software vollständig installiert oder die fehlgeschlagene Installation wird vollständig zurückgesetzt, aber eine unbrauchbare Teilinstallation wird nicht auf dem System verbleiben. Transaktionen bieten auch die Isolationsgarantie , was bedeutet, dass Operationen innerhalb einer Transaktion vor anderen Threads auf dem System verborgen sind, bis die Transaktion festgeschrieben wird, und dass störende Operationen auf dem System ordnungsgemäß mit der Transaktion serialisiert werden.

Windows, beginnend mit Vista, fügte NTFS Transaktionsunterstützung hinzu , in einer Funktion namens Transactional NTFS , aber von deren Verwendung wird jetzt abgeraten. Es gibt eine Reihe von Forschungsprototypen von transaktionalen Dateisystemen für UNIX-Systeme, darunter das Valor-Dateisystem, Amino, LFS und ein transaktionales ext3- Dateisystem auf dem TxOS-Kernel sowie transaktionale Dateisysteme, die auf eingebettete Systeme wie TFFS abzielen.

Das Sicherstellen der Konsistenz über mehrere Dateisystemoperationen hinweg ist ohne Dateisystemtransaktionen schwierig, wenn nicht unmöglich. Dateisperren können als Parallelitätskontrollmechanismus für einzelne Dateien verwendet werden, schützen jedoch normalerweise nicht die Verzeichnisstruktur oder die Dateimetadaten. Dateisperren können beispielsweise keine TOCTTOU- Race-Conditions für symbolische Links verhindern. Die Dateisperre kann auch einen fehlgeschlagenen Vorgang, wie z. B. ein Software-Upgrade, nicht automatisch rückgängig machen; dies erfordert Atomarität.

Das Journaling von Dateisystemen ist eine Technik, die verwendet wird, um Konsistenz auf Transaktionsebene in Dateisystemstrukturen einzuführen. Journaltransaktionen werden Programmen als Teil der Betriebssystem-API nicht ausgesetzt. sie werden nur intern verwendet, um die Konsistenz bei der Granularität eines einzelnen Systemaufrufs sicherzustellen.

Datensicherungssysteme bieten in der Regel keine Unterstützung für die direkte Sicherung von transaktional gespeicherten Daten, was die Wiederherstellung zuverlässiger und konsistenter Datensätze erschwert. Die meisten Backup-Softwares notieren einfach, welche Dateien sich seit einer bestimmten Zeit geändert haben, unabhängig vom Transaktionsstatus, der von mehreren Dateien im gesamten Dataset geteilt wird. Als Workaround erstellen einige Datenbanksysteme einfach eine archivierte Zustandsdatei, die alle Daten bis zu diesem Zeitpunkt enthält, und die Backup-Software sichert nur diese und interagiert überhaupt nicht direkt mit den aktiven Transaktionsdatenbanken. Die Wiederherstellung erfordert eine separate Wiederherstellung der Datenbank aus der Statusdatei, nachdem die Datei von der Sicherungssoftware wiederhergestellt wurde.

Netzwerkdateisysteme

Ein Netzwerkdateisystem ist ein Dateisystem, das als Client für ein Remote-Dateizugriffsprotokoll fungiert und den Zugriff auf Dateien auf einem Server ermöglicht. Programme, die lokale Schnittstellen verwenden, können hierarchische Verzeichnisse und Dateien auf entfernten, mit dem Netzwerk verbundenen Computern transparent erstellen, verwalten und darauf zugreifen. Beispiele für Netzwerkdateisysteme umfassen Clients für die Protokolle NFS , AFS , SMB und dateisystemähnliche Clients für FTP und WebDAV .

Dateisysteme für gemeinsam genutzte Festplatten

Ein gemeinsam genutztes Plattendateisystem ist ein System, bei dem mehrere Maschinen (normalerweise Server) alle Zugriff auf dasselbe externe Plattensubsystem (normalerweise ein SAN) haben. Das Dateisystem vermittelt den Zugriff auf dieses Subsystem und verhindert so Schreibkollisionen. Beispiele hierfür sind GFS2 von Red Hat , GPFS , jetzt bekannt als Spectrum Scale, von IBM, SFS von DataPlow, CXFS von SGI , StorNext von Quantum Corporation und ScoutFS von Versity.

Spezielle Dateisysteme

Ein spezielles Dateisystem stellt Nicht-Datei-Elemente eines Betriebssystems als Dateien dar, so dass auf sie unter Verwendung von Dateisystem-APIs reagiert werden kann. Dies geschieht am häufigsten in Unix-ähnlichen Betriebssystemen, aber auch in einigen Nicht-Unix-ähnlichen Betriebssystemen erhalten Geräte Dateinamen.

Gerätedateisysteme

Ein Gerätedateisystem stellt E/A-Geräte und Pseudogeräte als Dateien dar, die als Gerätedateien bezeichnet werden . Beispiele in Unix-ähnlichen Systemen sind devfs und in Linux 2.6-Systemen udev . In Nicht-Unix-ähnlichen Systemen wie TOPS-10 und anderen davon beeinflussten Betriebssystemen, bei denen der vollständige Dateiname oder Pfadname einer Datei ein Gerätepräfix enthalten kann, werden andere Geräte als die, die Dateisysteme enthalten, mit einem Gerätepräfix bezeichnet Angabe des Geräts, ohne dass etwas darauf folgt.

Andere spezielle Dateisysteme

  • Im Linux-Kernel stellen configfs und sysfs Dateien bereit, die verwendet werden können, um den Kernel nach Informationen abzufragen und Entitäten im Kernel zu konfigurieren.
  • procfs bildet Prozesse und unter Linux andere Betriebssystemstrukturen in einem Dateibereich ab.

Minimales Dateisystem / Audiokassettenspeicher

In den 1970er Jahren waren Platten- und digitale Bandgeräte für einige der frühen Benutzer von Mikrocomputern zu teuer . Es wurde ein kostengünstiges Basisdatenspeichersystem entwickelt, das herkömmliche Audiokassettenbänder verwendet.

Wenn das System Daten schreiben musste, wurde der Benutzer benachrichtigt, "RECORD" auf dem Kassettenrekorder zu drücken, dann "RETURN" auf der Tastatur zu drücken, um dem System mitzuteilen, dass der Kassettenrekorder aufzeichnete. Das System schrieb einen Sound, um die Zeitsynchronisation zu gewährleisten, und modulierte dann Sounds , die ein Präfix, die Daten, eine Prüfsumme und ein Suffix codierten . Wenn das System Daten lesen musste, wurde der Benutzer angewiesen, auf dem Kassettenrekorder "PLAY" zu drücken. Das System würde die Töne auf dem Band abhören und warten, bis ein Tonstoß als Synchronisation erkannt werden konnte. Das System würde dann nachfolgende Geräusche als Daten interpretieren. Wenn das Lesen der Daten abgeschlossen war, teilte das System dem Benutzer mit, dass er auf dem Kassettenrekorder "STOP" drücken sollte. Es war primitiv, aber es hat (meistens) funktioniert. Die Daten wurden sequentiell gespeichert, normalerweise in einem unbenannten Format, obwohl einige Systeme (wie die Commodore PET- Computerserie) eine Benennung der Dateien erlaubten. Durch schnelles Vorspulen des Bandes und Beobachten am Bandzähler könnten mehrere Datensätze geschrieben und lokalisiert werden, um den ungefähren Anfang des nächsten Datenbereichs auf dem Band zu finden. Der Benutzer muss sich möglicherweise die Töne anhören, um die richtige Stelle zu finden, um mit der Wiedergabe des nächsten Datenbereichs zu beginnen. Einige Implementierungen enthielten sogar hörbare Geräusche, die mit den Daten durchsetzt waren.

Flatfile-Systeme

In einem flachen Dateisystem gibt es keine Unterverzeichnisse ; Verzeichniseinträge für alle Dateien werden in einem einzigen Verzeichnis gespeichert.

Als zum ersten Mal Diskettenmedien verfügbar waren, war diese Art von Dateisystem aufgrund des relativ geringen verfügbaren Datenspeichers ausreichend. CP/M- Maschinen verfügten über ein Flat-File-System, in dem Dateien einem von 16 Benutzerbereichen zugewiesen werden konnten und generische Dateioperationen auf einen eingeschränkt wurden, anstatt standardmäßig alle zu bearbeiten. Diese Benutzerbereiche waren nicht mehr als spezielle Attribute, die den Dateien zugeordnet waren; das heißt, es war nicht notwendig, für jeden dieser Bereiche ein spezifisches Kontingent zu definieren , und Dateien konnten zu Gruppen hinzugefügt werden, solange noch freier Speicherplatz auf der Platte vorhanden war. Der frühe Apple Macintosh verfügte auch über ein flaches Dateisystem, das Macintosh File System . Es war insofern ungewöhnlich, als das Dateiverwaltungsprogramm ( Macintosh Finder ) die Illusion eines teilweise hierarchischen Dateisystems auf EMFS erzeugte. Diese Struktur erforderte, dass jede Datei einen eindeutigen Namen hatte, auch wenn sie sich in einem separaten Ordner zu befinden schien. IBM DOS/360 und OS/360 speichern Einträge für alle Dateien auf einem Plattenpaket ( Volume ) in einem Verzeichnis auf dem Paket, das als Volume-Inhaltsverzeichnis (VTOC) bezeichnet wird.

Einfache Dateisysteme werden mit zunehmender Anzahl von Dateien umständlich und machen es schwierig, Daten in verwandte Dateigruppen zu organisieren.

Ein kürzlich zusätzlich zu der Flat - File - Systemfamilie ist Amazon ‚s S3 , ein Remote - Speicherdienst, der absichtlich vereinfachend Benutzer die Möglichkeit zu ermöglichen , anzupassen , wie sie ihre Daten gespeichert ist. Die einzigen Konstrukte sind Buckets (stellen Sie sich ein Laufwerk von unbegrenzter Größe vor) und Objekte (ähnlich, aber nicht identisch mit dem Standardkonzept einer Datei). Eine erweiterte Dateiverwaltung wird ermöglicht, indem fast jedes Zeichen (einschließlich '/') im Namen des Objekts verwendet werden kann und Teilmengen des Bucket-Inhalts basierend auf identischen Präfixen ausgewählt werden können.

Dateisysteme und Betriebssysteme

Viele Betriebssysteme bieten Unterstützung für mehr als ein Dateisystem. Manchmal sind das Betriebssystem und das Dateisystem so eng miteinander verwoben, dass es schwierig ist, Dateisystemfunktionen zu trennen.

Es muss eine von der Betriebssystemsoftware bereitgestellte Schnittstelle zwischen dem Benutzer und dem Dateisystem vorhanden sein. Diese Schnittstelle kann textuell (wie etwa von einer Befehlszeilenschnittstelle wie der Unix-Shell oder OpenVMS DCL bereitgestellt) oder grafisch (wie etwa von einer grafischen Benutzeroberfläche wie etwa Dateibrowsern bereitgestellt ) sein. Im grafischen Bereich wird häufig die Metapher des Ordners verwendet , der Dokumente, andere Dateien und verschachtelte Ordner enthält (siehe auch: Verzeichnis und Ordner).

Unix und Unix-ähnliche Betriebssysteme

Unix-ähnliche Betriebssysteme erstellen ein virtuelles Dateisystem, das alle Dateien auf allen Geräten in einer einzigen Hierarchie erscheinen lässt. Dies bedeutet, dass es in diesen Systemen ein Root-Verzeichnis gibt und jede auf dem System vorhandene Datei irgendwo darunter liegt. Unix-ähnliche Systeme können eine RAM-Disk oder eine gemeinsam genutzte Netzwerkressource als ihr Stammverzeichnis verwenden.

Unix-ähnliche Systeme weisen jedem Gerät einen Gerätenamen zu, aber auf diese Weise wird nicht auf die Dateien auf diesem Gerät zugegriffen. Um stattdessen auf Dateien auf einem anderen Gerät zugreifen zu können, muss dem Betriebssystem zunächst mitgeteilt werden, wo im Verzeichnisbaum diese Dateien erscheinen sollen. Dieser Vorgang wird als Mounten eines Dateisystems bezeichnet. Um beispielsweise auf die Dateien auf einer CD-ROM zuzugreifen , muss man dem Betriebssystem sagen: "Nimm das Dateisystem von dieser CD-ROM und lass es in diesem und jenem Verzeichnis erscheinen." Das dem Betriebssystem übergebene Verzeichnis wird als Einhängepunkt bezeichnet  – es könnte beispielsweise /media lauten . Das Verzeichnis /media existiert auf vielen Unix-Systemen (wie im Filesystem Hierarchy Standard spezifiziert ) und ist speziell für die Verwendung als Einhängepunkt für Wechselmedien wie CDs, DVDs, USB-Laufwerke oder Disketten gedacht. Es kann leer sein oder Unterverzeichnisse zum Mounten einzelner Geräte enthalten. Im Allgemeinen kann nur der Administrator (dh root-Benutzer ) das Mounten von Dateisystemen autorisieren.

Unix-ähnliche Betriebssysteme enthalten oft Software und Tools, die den Mount-Prozess unterstützen und ihm neue Funktionen bieten. Einige dieser Strategien wurden als "Auto-Mounting" bezeichnet, um ihren Zweck widerzuspiegeln.

  • In vielen Situationen müssen andere Dateisysteme als das Root verfügbar sein, sobald das Betriebssystem gebootet hat . Alle Unix-ähnlichen Systeme bieten daher die Möglichkeit, Dateisysteme beim Booten einzuhängen. Systemadministratoren definieren diese Dateisysteme in der Konfigurationsdatei fstab ( vfstab in Solaris ), die auch Optionen und Einhängepunkte angibt.
  • In manchen Situationen ist es nicht erforderlich, bestimmte Dateisysteme beim Booten einzuhängen , obwohl ihre Verwendung danach erwünscht sein kann. Es gibt einige Dienstprogramme für Unix-ähnliche Systeme, die das Mounten vordefinierter Dateisysteme bei Bedarf ermöglichen.
  • Wechselmedien ermöglichen die Übertragung von Programmen und Daten zwischen Maschinen ohne physische Verbindung. Gängige Beispiele sind USB-Flash-Laufwerke , CD-ROMs und DVDs . Daher wurden Dienstprogramme entwickelt, um das Vorhandensein und die Verfügbarkeit eines Mediums zu erkennen und dieses Medium dann ohne Benutzereingriff zu mounten.
  • Progressive Unix-ähnliche Systeme haben auch ein Konzept namens Supermounting eingeführt ; siehe zum Beispiel das Linux-supermount-ng-Projekt . Beispielsweise kann eine überlagerte Diskette physisch aus dem System entfernt werden. Unter normalen Umständen sollte die Festplatte synchronisiert und dann ausgehängt werden, bevor sie entfernt wird. Sofern eine Synchronisierung stattgefunden hat, kann eine andere Diskette in das Laufwerk eingelegt werden. Das System stellt automatisch fest, dass sich der Datenträger geändert hat und aktualisiert den Inhalt des Bereitstellungspunkts, um das neue Medium widerzuspiegeln.
  • Ein Automounter mountet automatisch ein Dateisystem, wenn auf das Verzeichnis verwiesen wird, über das es gemountet werden soll. Dies wird normalerweise für Dateisysteme auf Netzwerkservern verwendet, anstatt sich auf Ereignisse wie das Einlegen von Medien zu verlassen, wie dies für Wechselmedien angemessen wäre.

Linux

Linux unterstützt zahlreiche Dateisysteme, aber gängige Optionen für die Systemfestplatte auf einem Blockgerät sind die ext*-Familie ( ext2 , ext3 und ext4 ), XFS , JFS und btrfs . Für Raw Flash ohne Flash Translation Layer (FTL) oder Memory Technology Device (MTD) gibt es unter anderem UBIFS , JFFS2 und YAFFS . SquashFS ist ein gängiges komprimiertes schreibgeschütztes Dateisystem.

Solaris

Solaris verwendete in früheren Releases standardmäßig (nicht aufgezeichnetes oder nicht protokollierendes) UFS für bootfähige und ergänzende Dateisysteme. Solaris ist standardmäßig auf UFS eingestellt, unterstützt und erweitert.

Im Laufe der Zeit wurden Unterstützung für andere Dateisysteme und bedeutende Verbesserungen hinzugefügt, darunter Veritas Software Corp. (Journaling) VxFS , Sun Microsystems (Clustering) QFS , Sun Microsystems (Journaling) UFS und Sun Microsystems (Open Source, poolfähig, 128 Bit komprimierbar, und Fehlerkorrektur) ZFS .

Solaris wurden Kernel-Erweiterungen hinzugefügt, um einen bootfähigen Veritas VxFS- Betrieb zu ermöglichen. Logging oder Journaling wurde in Solaris 7 von Sun zu UFS hinzugefügt . Versionen von Solaris 10 , Solaris Express, OpenSolaris und anderen Open-Source-Varianten des Solaris-Betriebssystems unterstützten später bootfähiges ZFS .

Logical Volume Management ermöglicht die Aufteilung eines Dateisystems auf mehrere Geräte, um Redundanz, Kapazität und/oder Durchsatz zu erhöhen. Legacy-Umgebungen in Solaris können Solaris Volume Manager (früher bekannt als Solstice DiskSuite ) verwenden. Mehrere Betriebssysteme (einschließlich Solaris) können Veritas Volume Manager verwenden . Moderne Betriebssysteme auf Solaris-Basis verdrängen die Notwendigkeit einer Volume-Verwaltung durch die Nutzung virtueller Speicherpools in ZFS .

Mac OS

macOS (ehemals Mac OS X) verwendet das Apple File System (APFS), das 2017 ein vom klassischen Mac OS geerbtes Dateisystem namens HFS Plus (HFS+) ersetzte . Apple verwendet für HFS+ auch den Begriff „Mac OS Extended“. HFS Plus ist ein Metadaten- reiches und Groß- / Kleinschreibung bewahrendes Dateisystem, bei dem die Groß-/Kleinschreibung jedoch (normalerweise) nicht beachtet wird. Aufgrund der Unix-Roots von macOS wurden Unix-Berechtigungen zu HFS Plus hinzugefügt. Spätere Versionen von HFS Plus fügten Journaling hinzu, um eine Beschädigung der Dateisystemstruktur zu verhindern, und führten eine Reihe von Optimierungen an den Zuordnungsalgorithmen ein, um zu versuchen, Dateien automatisch zu defragmentieren, ohne dass ein externes Defragmentierungsprogramm erforderlich ist.

Dateinamen können bis zu 255 Zeichen lang sein. HFS Plus verwendet Unicode zum Speichern von Dateinamen. Unter macOS kann der Dateityp aus dem Typcode stammen , der in den Metadaten der Datei gespeichert ist, oder der Dateinamenerweiterung .

HFS Plus hat drei Arten von Links: Hardlinks im Unix-Stil , symbolische Links im Unix-Stil und Aliase . Aliase sollen einen Link zu ihrer Originaldatei beibehalten, auch wenn sie verschoben oder umbenannt werden. sie werden nicht vom Dateisystem selbst interpretiert, sondern vom Dateimanager-Code im Userland .

macOS 10.13 High Sierra, das am 5. Juni 2017 auf der WWDC-Veranstaltung von Apple angekündigt wurde, verwendet das Apple-Dateisystem auf Solid-State-Laufwerken .

macOS unterstützte auch das UFS- Dateisystem, das über NeXTSTEP vom BSD Unix Fast File System abgeleitet wurde . Ab Mac OS X Leopard konnte macOS jedoch nicht mehr auf einem UFS-Volume installiert werden, noch kann ein auf einem UFS-Volume installiertes Vor-Leopard-System auf Leopard aktualisiert werden. Ab Mac OS X Lion wurde die UFS-Unterstützung komplett eingestellt.

Neuere Versionen von macOS können die unter Windows üblichen FAT- Dateisysteme (16 und 32) lesen und schreiben . Sie können auch die neueren NTFS- Dateisysteme für Windows lesen . Zum Schreiben in NTFS-Dateisysteme auf macOS-Versionen vor Mac OS X ist Snow Leopard- Software von Drittanbietern erforderlich. Mac OS X 10.6 (Snow Leopard) und höher erlauben das Schreiben in NTFS-Dateisysteme, jedoch nur nach einer nicht trivialen Änderung der Systemeinstellungen (Software von Drittanbietern, die dies automatisiert).

Schließlich unterstützt macOS das Lesen und Schreiben des exFAT- Dateisystems seit Mac OS X Snow Leopard ab Version 10.6.5.

OS/2

OS/2 1.2 führte das High Performance File System (HPFS) ein. HPFS unterstützt gemischte Groß-/Kleinschreibungsdateinamen in verschiedenen Codepages , lange Dateinamen (255 Zeichen), effizientere Nutzung des Festplattenspeichers, eine Architektur, die verwandte Elemente auf dem Festplattenvolumen nahe beieinander hält, weniger Fragmentierung von Daten, Extent-basierter Speicherplatz Zuweisung, eine B+-Baumstruktur für Verzeichnisse und das Stammverzeichnis in der Mitte der Platte für einen schnelleren durchschnittlichen Zugriff. Ein Journaled Filesystem (JFS) wurde 1999 ausgeliefert.

PC-BSD

PC-BSD ist eine Desktop - Version von FreeBSD, die erbt FreeBSD ‚s ZFS - Unterstützung, ähnlich wie FreeNAS . Der neue grafische Installer von PC-BSD kann / ( root ) auf ZFS- und RAID-Z- Pool-Installationen und Festplattenverschlüsselung mit Geli von Anfang an einfach und bequem ( GUI ) handhaben . Die aktuelle PC-BSD 9.0+ 'Isotope Edition' verfügt über die ZFS-Dateisystemversion 5 und die ZFS-Speicherpoolversion 28.

Plan 9

Plan 9 von Bell Labs behandelt alles als Datei und greift auf alle Objekte so zu, wie auf eine Datei zugegriffen werden würde (dh es gibt kein ioctl oder mmap ): Netzwerk, Grafik, Debugging, Authentifizierung, Fähigkeiten, Verschlüsselung und andere Dienste werden über I . aufgerufen /O-Operationen auf Dateideskriptoren . Das 9P- Protokoll beseitigt den Unterschied zwischen lokalen und entfernten Dateien. Dateisysteme in Plan 9 werden mithilfe privater Namespaces pro Prozess organisiert, sodass jeder Prozess eine andere Ansicht der vielen Dateisysteme hat, die Ressourcen in einem verteilten System bereitstellen.

Das Inferno- Betriebssystem teilt diese Konzepte mit Plan 9.

Microsoft Windows

Verzeichnisauflistung in einer Windows- Befehlsshell

Windows verwendet die Dateisysteme FAT , NTFS , exFAT , Live File System und ReFS (letzteres wird nur in Windows Server 2012 , Windows Server 2016 , Windows 8 , Windows 8.1 und Windows 10 unterstützt und verwendet ; Windows kann nicht gestartet werden.) davon).

Windows verwendet eine Laufwerksbuchstabenabstraktion auf Benutzerebene, um eine Festplatte oder Partition von einer anderen zu unterscheiden. Beispielsweise stellt der Pfad C:\WINDOWS ein Verzeichnis WINDOWS auf der Partition dar, die durch den Buchstaben C dargestellt wird. Laufwerk C: wird am häufigsten für die primäre Festplattenpartition verwendet , auf der Windows normalerweise installiert ist und von der es bootet. Diese "Tradition" ist so fest verwurzelt, dass in vielen Anwendungen Fehler existieren, die davon ausgehen, dass das Laufwerk, auf dem das Betriebssystem installiert ist, C ist. Die Verwendung von Laufwerksbuchstaben und die Tradition, "C" als Laufwerksbuchstaben für die primäre Festplattenpartition, kann auf MS-DOS zurückgeführt werden , wo die Buchstaben A und B für bis zu zwei Diskettenlaufwerke reserviert waren. Dies wiederum leitete sich von CP/M in den 1970er Jahren und schließlich von IBMs CP/CMS von 1967 ab.

FETT

Die Familie der FAT- Dateisysteme wird von fast allen Betriebssystemen für PCs unterstützt, einschließlich aller Versionen von Windows und MS-DOS / PC-DOS , OS/2 und DR-DOS . (PC - DOS ist eine OEM - Version von MS-DOS, MS-DOS - basierte ursprünglich auf SCP 's 86-DOS . DR-DOS basierte auf Digital Research ' s Concurrent DOS , Nachfolger von CP / M-86 ) . Die FAT-Dateisysteme eignen sich daher gut als universelles Austauschformat zwischen Computern und Geräten fast jeden Typs und Alters.

Das FAT-Dateisystem geht auf einen (inkompatiblen) 8-Bit-FAT-Vorläufer in Standalone Disk BASIC und dem kurzlebigen MDOS/MIDAS- Projekt zurück.

Im Laufe der Jahre wurde das Dateisystem von FAT12 auf FAT16 und FAT32 erweitert . Dem Dateisystem wurden verschiedene Funktionen hinzugefügt, darunter Unterverzeichnisse , Codepage- Unterstützung, erweiterte Attribute und lange Dateinamen . Drittanbieter wie Digital Research haben optionale Unterstützung für die Nachverfolgung von Löschvorgängen und volume-/verzeichnis-/dateibasierte Mehrbenutzer-Sicherheitsschemata integriert, um Datei- und Verzeichnispasswörter und Berechtigungen wie Lese-/Schreib-/Ausführungs-/Löschzugriffsrechte zu unterstützen. Die meisten dieser Erweiterungen werden von Windows nicht unterstützt.

Bei den Dateisystemen FAT12 und FAT16 war die Anzahl der Einträge im Stammverzeichnis des Dateisystems und die maximale Größe von FAT-formatierten Festplatten oder Partitionen begrenzt .

FAT32 behebt die Einschränkungen in FAT12 und FAT16, mit Ausnahme der Dateigrößenbeschränkung von fast 4 GB, bleibt jedoch im Vergleich zu NTFS begrenzt.

FAT12, FAT16 und FAT32 haben auch eine Beschränkung von acht Zeichen für den Dateinamen und drei Zeichen für die Erweiterung (z. B. .exe ). Dies wird allgemein als 8.3-Dateinamenbeschränkung bezeichnet. VFAT , eine optionale Erweiterung von FAT12, FAT16 und FAT32, die in Windows 95 und Windows NT 3.5 eingeführt wurde , ermöglichte die abwärtskompatible Speicherung langer Dateinamen ( LFN ) im FAT-Dateisystem.

NTFS

NTFS , das 1993 mit dem Betriebssystem Windows NT eingeführt wurde, ermöglichte eine ACL- basierte Berechtigungssteuerung. Weitere von NTFS unterstützte Funktionen umfassen Hardlinks, mehrere Dateistreams, Attributindizierung, Quotenverfolgung, Sparse-Dateien, Verschlüsselung, Komprimierung und Analysepunkte (Verzeichnisse, die als Mount-Punkte für andere Dateisysteme dienen, symbolische Links, Junctions, Remote-Storage-Links) .

exFAT

exFAT hat gegenüber NTFS gewisse Vorteile hinsichtlich des Dateisystem-Overheads .

exFAT ist nicht abwärtskompatibel mit FAT-Dateisystemen wie FAT12, FAT16 oder FAT32. Das Dateisystem wird von neueren Windows-Systemen wie Windows XP, Windows Server 2003, Windows Vista, Windows 2008, Windows 7, Windows 8 und Windows 10 unterstützt.

exFAT wird in macOS ab Version 10.6.5 (Snow Leopard) unterstützt. Die Unterstützung in anderen Betriebssystemen ist spärlich, da die Implementierung der Unterstützung für exFAT eine Lizenz erfordert. exFAT ist das einzige Dateisystem, das sowohl von macOS als auch von Windows vollständig unterstützt wird und Dateien mit mehr als 4 GB speichern kann.

OpenVMS

MVS

Vor der Einführung von VSAM , O / 360 - Systeme implementiert , um ein Hybrid - Dateisystem. Das System wurde entwickelt, um Wechselplattenpakete problemlos zu unterstützen , sodass die Informationen zu allen Dateien auf einer Platte ( Volume in der IBM-Terminologie) auf dieser Platte in einer flachen Systemdatei namens Volume Table of Contents (VTOC) gespeichert werden. Das VTOC speichert alle Metadaten für die Datei. Später wurde mit der Einführung des Systemkatalogs eine hierarchische Verzeichnisstruktur eingeführt , die optional Dateien (Datensätze) auf residenten und austauschbaren Datenträgern katalogisieren kann. Der Katalog enthält nur Informationen, um einen Datensatz einem bestimmten Volumen zuzuordnen. Wenn der Benutzer Zugriff auf ein Dataset auf einem Offline-Volume anfordert und über entsprechende Berechtigungen verfügt, versucht das System, das erforderliche Volume zu mounten. Auf katalogisierte und nicht katalogisierte Datensätze kann weiterhin unter Verwendung von Informationen im VTOC unter Umgehung des Katalogs zugegriffen werden, wenn die erforderliche Datenträger-ID der OPEN-Anforderung bereitgestellt wird. Noch später wurde das VTOC indiziert, um den Zugriff zu beschleunigen.

Gesprächsmonitorsystem

Die IBM Conversational Monitor System (CMS)-Komponente von VM/370 verwendet ein separates Flatfile- System für jede virtuelle Platte ( Minidisk ). Dateidaten und Kontrollinformationen sind verstreut und vermischt. Der Anker ist ein Datensatz namens Master File Directory (MFD), der sich immer im vierten Block auf der Festplatte befindet. Ursprünglich verwendete CMS 800-Byte-Blöcke mit fester Länge, spätere Versionen verwendeten jedoch größere Blöcke bis zu 4K. Der Zugriff auf einen Datensatz erfordert zwei Indirektionsebenen , wobei der Verzeichniseintrag der Datei (sogenannter File Status Table (FST)-Eintrag) auf Blöcke zeigt, die eine Liste von Adressen der einzelnen Datensätze enthalten.

AS/400-Dateisystem

Die Daten auf dem AS/400 und seinen Nachfolgern bestehen aus Systemobjekten, die dem virtuellen Adressraum des Systems in einem einstufigen Speicher zugeordnet sind . Viele Arten von Objekten sind definiert, einschließlich der Verzeichnisse und Dateien, die in anderen Dateisystemen gefunden werden. Dateiobjekte bilden zusammen mit anderen Objekttypen die Grundlage für die Unterstützung des AS/400 für eine integrierte relationale Datenbank .

Andere Dateisysteme

  • Das Prospero File System ist ein Dateisystem basierend auf dem Virtual System Model. Das System wurde von Dr. B. Clifford Neuman vom Information Sciences Institute der University of Southern California entwickelt.
  • RSRE FLEX Dateisystem - geschrieben in ALGOL 68
  • Das Dateisystem des Michigan Terminal System (MTS) ist interessant, weil: (i) es "Zeilendateien" bereitstellt, in denen Datensatzlängen und Zeilennummern als Metadaten mit jedem Datensatz in der Datei verknüpft sind, Zeilen hinzugefügt, ersetzt, aktualisiert werden können mit Datensätze gleicher oder unterschiedlicher Länge und überall in der Datei gelöscht, ohne dass die gesamte Datei gelesen und neu geschrieben werden muss; (ii) die Verwendung von Programmschlüsseldateien kann für Befehle und Programme zusätzlich zu Benutzern und Gruppen freigegeben oder freigegeben werden; und (iii) es gibt einen umfassenden Dateisperrmechanismus, der sowohl die Daten der Datei als auch ihre Metadaten schützt.

Einschränkungen

Konvertieren des Typs eines Dateisystems

Es kann vorteilhaft oder notwendig sein, Dateien in einem anderen Dateisystem zu haben, als sie derzeit existieren. Gründe sind unter anderem die Notwendigkeit einer Erhöhung des Platzbedarfs über die Grenzen des aktuellen Dateisystems hinaus. Die Pfadtiefe muss möglicherweise über die Beschränkungen des Dateisystems hinaus erhöht werden. Es kann Leistungs- oder Zuverlässigkeitsüberlegungen geben. Der Zugriff auf ein anderes Betriebssystem, das das vorhandene Dateisystem nicht unterstützt, ist ein weiterer Grund.

In-Place-Konvertierung

In einigen Fällen kann die Konvertierung direkt durchgeführt werden, obwohl die Migration des Dateisystems konservativer ist, da eine Kopie der Daten erstellt wird und empfohlen wird. Unter Windows können FAT- und FAT32-Dateisysteme über das Dienstprogramm convert.exe in NTFS konvertiert werden, aber nicht umgekehrt. Unter Linux kann ext2 in ext3 konvertiert (und zurückkonvertiert) werden, und ext3 kann in ext4 konvertiert werden (aber nicht zurück), und sowohl ext3 als auch ext4 können in btrfs konvertiert und zurückkonvertiert werden, bis die Rückgängig-Informationen gelöscht werden. Diese Konvertierungen sind möglich, da das gleiche Format für die Dateidaten selbst verwendet wird und die Metadaten in einen leeren Raum verschoben werden, in einigen Fällen mit spärlicher Dateiunterstützung .

Migration auf ein anderes Dateisystem

Die Migration hat den Nachteil, dass sie zusätzlichen Speicherplatz benötigt, obwohl sie möglicherweise schneller ist. Der beste Fall ist, wenn auf dem Medium, das das endgültige Dateisystem enthält, ungenutzter Speicherplatz vorhanden ist.

Zum Beispiel, um ein FAT32-Dateisystem auf ein ext2-Dateisystem zu migrieren. Erstellen Sie zuerst ein neues ext2-Dateisystem, kopieren Sie dann die Daten in das Dateisystem und löschen Sie dann das FAT32-Dateisystem.

Eine Alternative, wenn nicht genügend Speicherplatz vorhanden ist, um das ursprüngliche Dateisystem beizubehalten, bis das neue erstellt wird, besteht darin, einen Arbeitsbereich (z. B. ein Wechselmedium) zu verwenden. Das dauert zwar länger, aber ein Backup der Daten ist ein netter Nebeneffekt.

Lange Dateipfade und lange Dateinamen

In hierarchischen Dateisystemen wird auf Dateien über einen Pfad zugegriffen, der eine verzweigte Liste von Verzeichnissen ist, die die Datei enthalten. Unterschiedliche Dateisysteme haben unterschiedliche Grenzen für die Tiefe des Pfads. Dateisysteme haben auch eine Begrenzung der Länge eines einzelnen Dateinamens.

Das Kopieren von Dateien mit langen Namen oder in Pfaden mit beträchtlicher Tiefe von einem Dateisystem in ein anderes kann zu unerwünschten Ergebnissen führen. Dies hängt davon ab, wie das Dienstprogramm, das den Kopiervorgang durchführt, mit der Diskrepanz umgeht.

Siehe auch

Anmerkungen

Verweise

Quellen

Weiterlesen

Bücher

Online

Externe Links