Dateisystem

Aus Foxwiki

topic kurze Beschreibung

Beschreibung

  • Das Dateisystem ( oder Vorlage:Lang) ist eine Ablageorganisation auf einem [[Volume (Datenspeicher)|Vorlage:Lang]] wie etwa einem Datenträger eines Computers.
  • Dateien können gespeichert, gelesen, verändert oder gelöscht werden (CRUD).
  • Für den Nutzer müssen Dateiname und computerinterne Dateiadressen in Einklang gebracht werden.
  • Das leichte Wiederfinden und das sichere Abspeichern sind wesentliche Aufgaben eines Dateisystems.
  • Das Ordnungs- und Zugriffssystem berücksichtigt die Geräteeigenschaften und ist elementarer Bestandteil eines Computersystems oder eines Betriebssystems.

Begriff

Der Begriff „Dateisystem“ kann sich einerseits auf den gesamten übergeordneten Verzeichnisbaum, die Verzeichnisstruktur, beziehen, andererseits auf individuell einbindbare Dateisysteme, etwa auf Partitionen.[1][2] Da ein Dateisystem oft je Partition oder [[Volume (Datenspeicher)|Vorlage:Lang]] eingesetzt wird, findet sich der Begriff „Dateisystem“ auch oft als Synonym für „Partition“ wieder[3] – tatsächlich ist das Dateisystem jedoch der Inhalt und die Partition nur ein möglicher Rahmen, in dem der Speicherplatz als Vorlage:Lang dafür zur Verfügung gestellt wird.

Auf den meisten Betriebssystemen wird mehr als ein Dateisystem unterstützt. Jedes Dateisystem muss auf einem getrennt ansprechbaren logischen Vorlage:Lang untergebracht sein, etwa einer Partition oder einem zusätzlichen Datenträger wie einer Festplatte. Die Initialisierung dieses logischen getrennten Datenspeichers wird Formatierung genannt. Der Inhalt des Dateisystems wird durch Einhängen, Einbinden bzw. Mounten (von ) im laufenden Systems zugänglich gemacht.

Eigenschaften

Dateien haben in einem Dateisystem fast immer mindestens einen Dateinamen sowie Attribute, die nähere Informationen über die Datei geben. Die Dateinamen sind in Verzeichnissen abgelegt; Verzeichnisse sind üblicherweise spezielle Dateien. Über derartige Verzeichnisse kann ein Dateiname (und damit eine Datei) sowie die zur Datei gehörenden Daten vom System gefunden werden. Ein Dateisystem bildet somit einen Namensraum. Alle Dateien (oder dateiähnlichen Objekte) sind so über eine eindeutige Adresse (Dateiname inkl. Pfad oder URI) – innerhalb des Dateisystems – aufrufbar. Der Name einer Datei und weitere Informationen, die den gespeicherten Dateien zugeordnet sind, werden als Metadaten bezeichnet.

Für unterschiedliche Datenträger (wie Magnetband, Festplattenlaufwerk, optische Datenträger (CD, DVD, …), Flash-Speicher, …) gibt es darauf spezialisierte Dateisysteme.

Das Dateisystem stellt eine bestimmte Schicht des Betriebssystems dar: Alle Schichten darüber (Rest des Betriebssystems, Anwendungen) können auf Dateien abstrakt über deren Klartext-Namen zugreifen. Erst mit dem Dateisystem werden diese abstrakten Angaben in physische Adressen (Blocknummer, Spur, Sektor usw.) auf dem Speichermedium umgesetzt. In der Schicht darunter kommuniziert der Dateisystemtreiber dazu mit dem jeweiligen Gerätetreiber und mittelbar auch mit der Firmware des Speichersystems (Laufwerks). Letztere nimmt weitere Organisationsaufgaben wahr, beispielsweise den transparenten Ersatz fehlerhafter Blöcke durch Reserveblöcke.

Organisation von Massenspeichern

Massenspeichergeräte wie Festplatten-, CD-ROM- und Diskettenlaufwerke haben normalerweise eine Blockstruktur, d. h. aus Betriebssystemsicht lassen sich Daten nur als Folge ganzer Datenblöcke lesen oder schreiben. Ein Speichergerät präsentiert das Speichermedium gegenüber dem Betriebssystem lediglich als große lineare Anordnung vieler nummerierter (und darüber adressierbarer) Blöcke.

Ein Block umfasst heute meistens 512 (= 29) oder 4096 (= 212) Bytes, auf optischen Medien (CD-ROM, DVD-ROM) 2048 (= 211) Bytes. Moderne Betriebssysteme fassen aus Performance- und Verwaltungsgründen mehrere Blöcke zu einem Cluster fester Größe zusammen. Heute sind Cluster mit acht oder noch mehr Blöcken üblich, also 4096 Bytes pro Cluster. Die Clustergröße ist im Allgemeinen eine Zweierpotenz (1024, 2048, 4096, 8192, …).

Eine Datei ist ein definierter Abschnitt eines Datenspeichers, der auf dem Gerät aus einem oder mehreren Clustern besteht. Jede Datei erhält außerdem eine Beschreibungsstruktur, die die tatsächliche Größe, Referenzen auf die verwendeten Cluster und evtl. weitere Informationen wie Dateityp, Eigentümer, Zugriffsrechte enthalten kann (Metadaten).

Für die Zuordnung von Clustern zu Dateien gibt es dabei mehrere Möglichkeiten.

  • Die Referenz einer Datei besteht aus der Clusternummer des Anfangsclusters und der Anzahl der darauf (physisch sequenziell) folgenden Cluster. Nachteile: bei Vergrößerung muss ggf. die ganze Datei verschoben werden. Dies verkompliziert das Dateihandling und führt zu unzureichender Performance bei vielen großen Dateien. So kann es vorkommen, dass eine Datei nicht gespeichert werden kann, obwohl noch genügend freier Speicher auf dem Datenträger vorhanden ist.
  • Die Referenz einer Datei besteht aus der ersten Clusternummer. In jedem Cluster der Datei wird die Clusternummer des Folgeclusters gespeichert. Es ergibt sich eine verkettete Liste. Nachteile: Will man die Datei nicht sequenziell lesen, sondern zum Beispiel nur das Ende, muss das Betriebssystem dennoch die ganze Datei einlesen, um das Ende zu finden.
  • Freie Zuordnung von Dateiclustern zu Folgeclustern durch eine Tabelle auf dem Massenspeicher (Beispiel: FAT). Nachteile: sehr große Beschreibungsstruktur, sequenzielles Lesen oder Schreiben etwas langsamer als ideal, da Zuordnungsinformationen weder gebündelt noch bei den Daten vorliegen.
  • Speicherung eines Feldes von Tupeln (Extent-Anfangscluster, Extentlänge) in der Beschreibungsstruktur der Datei. Ein Extent ist dabei eine Folge von sequentiellen Clustern. Dies wird heute in vielen Dateisystemen so umgesetzt.

Verzeichnisse enthalten Dateinamen und Referenzen zu den jeweiligen Beschreibungsstrukturen. Da Verzeichnisse auch Speicherflächen sind, werden meist speziell gekennzeichnete Dateien als Verzeichnisse verwendet. Die erste Beschreibungsstruktur kann dabei das Ausgangsverzeichnis enthalten.

Ein weiterer eigener Bereich auf dem Speichermedium dient der Buchführung, welche Blöcke oder Cluster schon belegt und welche noch frei sind. Ein oft dafür genutztes Mittel ist die Vorlage:Lang (BAM), in der für jeden Block ein Speicherbit angelegt ist, das anzeigt, ob der Block belegt oder frei ist. Die BAM enthält im Prinzip redundante Informationen und dient der Effizienz der Verwaltung; sollten die dort gespeicherten Informationen verlorengehen, so kann die BAM neu erstellt werden.

Im Allgemeinen ist der erste Block für einen sogenannten Bootsektor (z. B. Master Boot Record) reserviert, der für das Hochfahren des Systems verwendet werden kann. Auf einem Speichermedium mit mehreren Partitionen steht unmittelbar im Anschluss typischerweise die Partitionstabelle, die Organisationsdaten zu den Partitionen enthält. Weder Bootblock noch Partitionstabelle sind Teil des eigentlichen Dateisystems.

Meist enthält jede Partition ein eigenes, von den Daten auf anderen Partitionen unabhängiges Dateisystem; die Ausführungen oben beziehen sich auf die einzelnen Partitionen, die sich eine nach der anderen an die Partitionstabelle anschließen.

Boot Beschreibungsstrukturen Liste freier Cluster Cluster mit Dateien und Verzeichnissen
Beispiel für die Aufteilung eines Massenspeichers für ein simples Dateisystem

Aus Effizienzgründen, also vor allem zur Erhöhung der Leistung/Zugriffsgeschwindigkeit, wurden diverse Strategien entwickelt, wie diese Organisationsstrukturen innerhalb des zur Verfügung stehenden Speicherbereichs angeordnet werden. Da es beispielsweise in vielen Dateisystemen beliebig viele Unterverzeichnisse geben kann, verbietet es sich von vornherein, feste Plätze für diese Verzeichnisstrukturen zu reservieren, es muss alles dynamisch organisiert werden. Es gibt auch Dateisysteme wie einige von Commodore, die die grundlegenden Organisationsstrukturen wie Wurzelverzeichnis und BAM in der Mitte des Speicherbereichs (statt wie meist bei anderen an dessen Anfang) anordnen, damit der Weg, den der Schreib-Lese-Kopf von dort zu den eigentlichen Daten und zurück zurückzulegen hat, im Mittel verringert wird. Allgemein kann es ein Strategieansatz sein, eigentliche Daten und ihre Organisationsdaten physisch möglichst nah beieinander anzuordnen.

Zugriff auf Massenspeicher

Ein Programm greift auf die Massenspeicher über das Dateisystem zu. Unter Unix und ähnlichen Betriebssystemen werden dazu Systemaufrufe zur Verfügung gestellt. Die wichtigsten Systemaufrufe sind hier:

  • Systemaufrufe für Verzeichnisse:
    • mkdir, rmdir
      Erzeugen und Löschen eines Verzeichnisses
    • opendir, closedir
      Öffnen und Schließen eines Verzeichnisses
    • readdir
      Lesen von Verzeichniseinträgen
    • chdir
      Wechseln in ein anderes Verzeichnis
  • Systemaufrufe für Dateien:
    • creat, unlink
      Erzeugen und Löschen einer Datei
    • open, close
      Öffnen und Schließen einer Datei
    • read, write
      Lesen und Schreiben
    • seek
      Neupositionieren des Schreib-/Lese-Zeigers

Außerdem bietet das Betriebssystem Verwaltungsfunktionen, zum Beispiel für das Umbenennen, das Kopieren und Verschieben, Erzeugen eines Dateisystems auf einem neuen Datenträger, für Konsistenzprüfung, Komprimierung oder Sicherung (je nach Betriebssystem und Dateisystem verschieden).

Die Umsetzung der Systemaufrufe eines Programms wird oft vom Kernel eines Betriebssystems implementiert und unterscheidet sich bei den verschiedenen Dateisystemen. Der Kernel übersetzt die Zugriffe dann in die Blockoperationen des jeweiligen Massenspeichers. (Anmerkung: Tatsächlich trifft dies nur auf sogenannte monolithische Kernel zu. Hingegen sind auf einem Microkernel oder Hybridkernel aufgebaute Systeme so konzipiert, dass die Dateisystemoperationen nicht vom Kernel selbst ausgeführt werden müssen.)

Wenn ein Programm eine Datei mittels open öffnet, wird der Dateiname im Verzeichnis gesucht. Die Blöcke auf dem Massenspeicher ermittelt das Betriebssystem aus den entsprechenden Beschreibungsstrukturen. Falls eine Datei im Verzeichnis gefunden wird, erhält das Betriebssystem auch ihre Beschreibungsstruktur und damit die Referenzen zu den zugehörigen Clustern und gelangt über diese zu den konkreten Blöcken.

Mit read kann das Programm dann auf die Cluster der Datei (und damit auf die Blöcke auf dem Massenspeicher) zugreifen. Wird eine Datei aufgrund von write größer, wird bei Bedarf ein neuer Cluster aus der Freiliste entnommen und in der Beschreibungsstruktur der Datei hinzugefügt. Auch die anderen Systemaufrufe lassen sich so in Cluster- bzw. Blockzugriffe übersetzen.


Installation

Anwendungen

Syntax

Optionen

Parameter

Umgebungsvariablen

Exit-Status

Konfiguration

Dateien

Sicherheit

Dokumentation

RFC

Man-Pages

Info-Pages

Siehe auch

Links

Projekt-Homepage

Weblinks

Einzelnachweise

Testfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5

Wikipedia


Geschichte

Historisch gesehen sind schon die ersten Lochstreifen- (auf Film- später auf Papierstreifen) und Lochkarten-Dateien Dateisysteme. Sie bilden ebenso wie Magnetbandspeicher lineare Dateisysteme. Die später für die Massenspeicherung und schnellen Zugriff entwickelten Trommel- und Festplattenspeicher ermöglichten dann erstmals durch wahlfreien Zugriff auf beliebige Positionen im Dateisystem komplexere Dateisysteme. Diese Dateisysteme bieten die Möglichkeit, per Namen auf eine Datei zuzugreifen. Das Konzept der Dateisysteme wurde schließlich soweit abstrahiert, dass auch Zugriffe auf Dateien im Netz und auf Geräte, die virtuell als Datei verwaltet werden, über Dateisysteme durchgeführt werden können. Somit sind Anwendungsprogramme in der Lage, auf diese unterschiedlichen Datenquellen über eine einheitliche Schnittstelle zuzugreifen.

Siehe auch

Weblinks

Vorlage:Commonscat

Linux:

Einzelnachweise