„Dateisystem“ – Versionsunterschied
[ungesichtete Version] | [gesichtete Version] |
Y2kbug (Diskussion | Beiträge) →Spezielle virtuelle Dateisysteme: Abschnittstitel geändert, Pseudo-Dateisystem dazu |
|||
(594 dazwischenliegende Versionen von mehr als 100 Benutzern, die nicht angezeigt werden) | |||
Zeile 1: | Zeile 1: | ||
{{Dieser Artikel|behandelt ein Dateisystem auf einem Volume. Zu weiteren Bedeutungen siehe [[Dateisystem (Begriffsklärung)]].}} |
|||
Ein '''Dateisystem''' ist Bestandteil des [[Betriebssystem]]s eines [[Computer]]s. Es speichert und verwaltet [[Daten]] in Form von [[Datei]]en. Historisch wurden Dateisysteme zur Organisation des Zugriffs auf [[Massenspeicher]] wie [[Festplatte]]nlaufwerke entwickelt. Jede Datei belegt einen Teil des Massenspeichers. Ein Dateisystem bietet die Möglichkeit, per Namen auf eine Datei zu zugreifen. Das Konzept der Dateisysteme wurde dann soweit abstrahiert, dass auch Zugriffe auf Dateien im Netz und auf Geräten, die virtuell als Datei verwaltet werden, über Dateisysteme geregelt werden können. |
|||
Das '''Dateisystem''' ({{enS|file system}} oder {{lang|en|filesystem}}) ist eine Ablageorganisation auf einem ''[[Volume (Datenspeicher)|{{lang|en|Volume}}]]'' wie etwa einem [[Datenträger]] eines [[Computer]]s. [[Datei]]en können angelegt, gelesen, verändert oder gelöscht werden ([[CRUD]]). Für den Nutzer müssen [[Dateiname]] und computerinterne Datei[[Speicheradresse|adresse]]n miteinander verknüpft werden. Das (sichere) Abspeichern und das (leichte) Wiederfinden sind wesentliche Aufgaben eines Dateisystems. Das Ordnungs- und Zugriffssystem berücksichtigt die Geräteeigenschaften und ist elementarer Bestandteil eines Computersystems oder eines [[Betriebssystem]]s. |
|||
Dateien haben in einem Dateisystem fast immer mindestens einen [[Dateiname]]n sowie [[Attribut]]e, die nähere Informationen über die Datei geben. Die Dateinamen sind in speziellen Dateien, den Verzeichnissen, abgelegt. Über diese Verzeichnisse kann ein Dateiname und damit eine Datei 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 [[URL]]) – innerhalb des Dateisystems – aufrufbar. |
|||
Der [[Verzeichnisstruktur#Zugriff|Zugriff]] auf Dateien und Verzeichnisse eines Dateisystems erfolgt über die [[Verzeichnisstruktur]]. |
|||
Für unterschiedliche Datenträger (wie Magnetband, Festplatte, optische Datenträger (CD, DVD, …), Flashspeicher, …) gibt es spezielle Dateisysteme, die deren Besonderheiten berücksichtigen. |
|||
== Begriff == |
|||
==Zugriffe auf [[Massenspeicher]]== |
|||
Der Begriff „Dateisystem“ kann sich einerseits auf den gesamten übergeordneten Verzeichnisbaum, die [[Verzeichnisstruktur]], beziehen, andererseits auf individuell [[mounten|einbindbare]] Dateisysteme, etwa auf [[Partition (Datenträger)|Partitionen]].<ref>{{Literatur |Autor=Aeleen Frisch |Titel=Unix System-Administration |Verlag=O’Reilly Germany |Datum=2003 |Kapitel=2: Die Unix-Philosophie |Seiten=66, Fußnote 13 |Online={{Google Buch |BuchID=5SFARdg6LdoC |Seite=66 |Linktext=Volltext |Hervorhebung=Dateisystem}} |Zitat=Der Begriff Dateisystem bezieht sich somit zum einen auf den übergeordneten Verzeichnisbaum des Systems, der alle Festplattenpartitionen des Systems umfasst, auf die die Benutzer zugreifen können (wie in »das Unix-Dateisystem«), zum anderen auf die Dateien und Verzeichnisse auf den individuellen Festplattenpartitionen (wie in »ein Dateisystem auf einer Festplattenpartition einrichten« oder »das Benutzer-Dateisystem mounten«). Erst aus dem Kontext wird deutlich, welche der beiden Bedeutungen des Begriffs gemeint ist.}}</ref><ref>{{Literatur |Autor=Ray Duncan |Titel=Power Programming – Getting Acquainted with The Latest Version of OS/2: 1.2 (Part 2) |Sammelwerk=[[PC Magazine]] |Band=9 |Nummer=7 |Verlag=[[Ziff Davis]] |Datum=1990-04-10 |Sprache=en |Seiten=317 |Fundstelle=What is a file system? |Online={{Google Buch |BuchID=5kj9fdPQCzYC |SeitenID=320 |Hervorhebung=file system}} |Zitat=The phrase ‘file system’ itself can be rather confusing, however, for it has two common but distinctly different meanings. When a physical storage medium is being discussed, the phrase refers to the manner in which data is formatted, organized, and indexed on the medium. The file system is the sum of tables, directories, files, and other structures that allow data to be stored and retrieved by name. The file system also includes the ability to track and allocate the remaining free space on the medium. The key point is that a physical file system, often called a ‘volume’, is both self-consistent and self-sufficient. When ''file system'' is used with respect to software, it refers to the module of the operating system that translates requests from an application program—to open, create, read, write, or close a directory or named file—into requests that the low-level disk device driver can understand. That is, the file-oriented, logical requests are transformed into one or more commands to the disk driver to read or write specific disk sectors. The software file system performs this translation with the aid of the tables, structures, and directories found in the physical file system.}}</ref> Da ein Dateisystem oft je Partition oder ''[[Volume (Datenspeicher)|{{lang|en|Volume}}]]'' eingesetzt wird, findet sich der Begriff „Dateisystem“ auch oft als Synonym für „Partition“ wieder<ref>{{Literatur |Autor=Aeleen Frisch |Titel=Unix System-Administration |Verlag=O’Reilly Germany |Datum=2003 |Kapitel=2: Die Unix-Philosophie |Seiten=66, Fußnote 13 |Online={{Google Buch |BuchID=5SFARdg6LdoC |Seite=66 |Linktext=Volltext |Hervorhebung=Dateisystem}} |Zitat=Die Begriffe Partition und Dateisystem werden ebenfalls manchmal synonym verwendet. Obwohl technisch gesehen nur Dateisysteme gemountet werden können, trifft man häufig auf Ausdrücke wie »eine Festplatte mounten« oder »eine Partition mounten«.}}</ref> – tatsächlich ist das Dateisystem jedoch der Inhalt und die Partition nur ein möglicher Rahmen, in dem der Speicherplatz als ''{{lang|en|Volume}}'' dafür zur Verfügung gestellt wird. |
|||
Massenspeichergeräte wie [[Festplatte]]n-, [[CD-ROM]]- und [[Diskettenlaufwerk]]e haben normalerweise eine Blockstruktur, d.h. aus Betriebssystemsicht lassen sich Daten nur als ganze [[Datenblock|Blöcke]] lesen oder schreiben. Die [[Hardware]] der Speichergeräte präsentiert sich gegenüber dem Betriebssystem lediglich als große Fläche mit vielen nummerierten Blöcken. |
|||
Auf den meisten Betriebssystemen wird mehr als ein Dateisystem unterstützt. Jedes Dateisystem muss auf einem getrennt ansprechbaren logischen ''{{lang|en|Volume}}'' 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 {{enS|to mount}}) im laufenden System zugänglich gemacht. |
|||
Blockstruktur eines Massenspeichergeräts (jeder Block besteht beispielsweise aus 512 [[Byte]]s): |
|||
{| cellpadding="4" |
|||
| bgcolor="00FF00" | Block0 |
|||
| bgcolor="00FF00" | Block1 |
|||
| bgcolor="00FF00" | Block2 |
|||
| bgcolor="00FF00" | Block3 |
|||
| bgcolor="00FF00" | … |
|||
|} |
|||
== Geschichte == |
|||
Ein Block umfasst meistens 512 (2<sup>9</sup>) Bytes. Moderne Betriebssysteme fassen aus Performance- und Verwaltungs-Gründen mehrere Blöcke zu einem [[Cluster]] fester Größe zusammen. Heute sind Cluster mit acht oder noch mehr Blöcken üblich, also 4096 [[Byte]]s pro Cluster. Die Clustergröße ist im allgemeinen eine Zweierpotenz (2048, 4096 usw.) |
|||
Historisch gesehen sind schon die ersten [[Lochstreifen]]- (auf Film- später auf Papierstreifen) und [[Lochkarte]]n-Dateien Dateisysteme. Sie bilden ebenso wie Magnetbandspeicher lineare Dateisysteme. Die später für die [[Massenspeicher]]ung und schnellen Zugriff entwickelten [[Trommelspeicher|Trommel]]- und Festplattenspeicher ermöglichten dann erstmals durch [[Wahlfreier Zugriff|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 so weit 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 [[Programmierschnittstelle|einheitliche Schnittstelle]] zuzugreifen. |
|||
== Eigenschaften == |
|||
Dateien haben in einem Dateisystem fast immer mindestens einen [[Dateiname]]n sowie [[Dateiattribut|Attribute]], die nähere Informationen über die Datei geben. Die Dateinamen sind in ''[[Verzeichnisstruktur|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 [[Uniform Resource Identifier|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 ([[Compact Disc|CD]], [[DVD]], …), [[Flash-Speicher]], …) gibt es darauf spezialisierte Dateisysteme. |
|||
Ein Programm greift auf die [[Massenspeicher]] über das Dateisystem zu. Unter [[UNIX]] und ähnlichen [[Betriebssystem]]en werden dazu [[Systemaufruf]]e zur Verfügung gestellt. Die wichtigsten Systemaufrufe sind hier: |
|||
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 ([[Datenblock|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 ([[Laufwerk (Computer)|Laufwerks]]). Letztere nimmt weitere Organisationsaufgaben wahr, beispielsweise den [[Transparenz (Computersystem)|transparenten]] Ersatz fehlerhafter Blöcke durch Reserveblöcke. |
|||
Verwaltung: |
|||
*''mkdir'' – Erzeugen eines Verzeichnisses |
|||
*''chdir'' - Wechseln in ein anderes Verzeichnis |
|||
*''rmdir'' - Löschen eines Verzeichnisses |
|||
*''opendir'' – Öffnen eines Verzeichnisses |
|||
*''readdir'' – Lesen von Verzeichniseinträgen |
|||
*''closedir'' – Schließen |
|||
=== Organisation von Massenspeichern === |
|||
Massenspeichergeräte wie Festplatten-, [[CD-ROM]]- und [[Diskette]]nlaufwerke haben normalerweise eine Blockstruktur, d. h. aus Betriebssystemsicht lassen sich Daten nur als Folge ganzer [[Datenblock|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 (= 2<sup>9</sup>) oder 4096 (= 2<sup>12</sup>) Bytes, auf optischen Medien (CD-ROM, DVD-ROM) 2048 (= 2<sup>11</sup>) Bytes. Moderne Betriebssysteme fassen aus Performance- und Verwaltungsgründen mehrere Blöcke zu einem [[Cluster (Datenträger)|Cluster]] fester Größe zusammen. Heute sind Cluster mit acht oder noch mehr Blöcken üblich, also 4096 [[Byte]]s pro Cluster. Die Clustergröße ist im Allgemeinen eine [[Zweierpotenz]] (1024, 2048, 4096, 8192, …). |
|||
*''open'', ''close'' – Öffnen und Schließen einer Datei |
|||
*''read'', ''write'' – Lesen und Schreiben |
|||
*''creat''<!-- sic! -->, ''unlink'' – Erzeugen und Löschen einer Datei |
|||
*''seek'' – Neupositionieren des Schreib/Lese-Zeigers |
|||
Eine Datei ist ein definierter Abschnitt eines [[Datenspeicher]]s, 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, [[Referenz (Programmierung)|Referenzen]] auf die verwendeten Cluster und evtl. weitere Informationen wie [[Dateiformat|Dateityp]], Eigentümer, [[Zugriffsrecht]]e enthalten kann (Metadaten). |
|||
Außerdem bietet das Betriebssystem Verwaltungsfunktionen, z. B. für das Erzeugen eines Dateisystems auf einem neuen [[Datenträger]], für Konsistenzprüfung, [[Komprimierung]] oder Sicherung (je nach Betriebssystem und Dateisystem verschieden). |
|||
Für die Zuordnung von Clustern zu Dateien gibt es dabei mehrere Möglichkeiten. |
|||
Eine [[Datei]] ist eine [[Speicher]]fläche beliebiger Größe, die auf dem [[Gerät]] aus einem oder mehreren [[Cluster]]n besteht. Jede Datei erhält außerdem eine Beschreibungsstruktur, die die tatsächliche Größe, [[Referenz]]en auf die verwendeten Cluster und evtl. weitere Informationen wie Dateityp, Eigentümer, [[Zugriffsrechte]] enthalten kann. |
|||
* Die [[Referenz (Programmierung)|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 [[Datenspeicher|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 [[Liste (Datenstruktur)|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: [[File Allocation Table|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. |
|||
[[Verzeichnis |
[[Verzeichnis]]se 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 ''{{lang|en|Block Availability Map}}'' (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 [[Redundanz (Kommunikationstheorie)|redundante]] Informationen und dient der Effizienz der Verwaltung; sollten die dort gespeicherten Informationen verlorengehen, so kann die BAM neu erstellt werden. |
|||
Ein [[Beispiel]] für die Aufteilung eines [[Massenspeicher|Massenspeichers]] für ein simples Dateisystem: |
|||
{| cellpadding="4" |
|||
| bgcolor="00FF00" | '''Boot''' |
|||
| bgcolor="AAEEEE" | '''Beschreibungsstrukturen''' |
|||
| bgcolor="AAEEEE" | '''Liste freier Cluster''' |
|||
| bgcolor="AAEEEE" | '''Cluster mit Dateien und Verzeichnissen''' |
|||
|} |
|||
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 [[Partition (Datenträger)|Partitionen]] steht unmittelbar im Anschluss typischerweise die [[Partitionstabelle]], die Organisationsdaten zu den Partitionen enthält. Weder Bootblock noch Partitionstabelle sind Teil des eigentlichen Dateisystems. |
|||
Die Umsetzung der [[Systemaufruf]]e eines Programms werden oft vom [[Kernel]] eines Betriebssystems implementiert und unterscheiden sich bei den verschiedenen Dateisystemen. Der Kernel übersetzt die Zugriffe dann in die Blockoperationen des jeweiligen [[Massenspeicher]]s. (Anmerkung: Tatsächlich trifft dies nur auf sogenannte monolithische Kernel zu. Moderne Betriebssysteme hingegen sind auf einem [[Mikrokernel]] aufgebaut, so dass die Dateisystemoperationen nicht vom Kernel selbst ausgeführt werden.) |
|||
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. |
|||
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 man auch ihre Beschreibungsstruktur und damit Referenzen zu den Clustern und über diese zu Blöcken. |
|||
{| cellpadding="4" class="wikitable" |
|||
Mit ''read'' kann das Programm dann auf die Cluster der Datei (und damit auf Blöcke auf dem Massenspeicher) zugreifen. Falls mit ''write'' die Datei vergrößert wird, 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. |
|||
| bgcolor="#00FF00" | '''Boot''' |
|||
| bgcolor="#AAEEEE" | '''Beschreibungsstrukturen''' |
|||
| bgcolor="#AAEEEE" | '''Liste freier Cluster''' |
|||
| bgcolor="#AAEEEE" | '''Cluster mit Dateien und Verzeichnissen''' |
|||
|- |
|||
|colspan="4"|<small>Beispiel für die Aufteilung eines Massenspeichers für ein simples Dateisystem</small> |
|||
|} |
|||
Aus Effizienzgründen, also vor allem zur Erhöhung der [[Rechenleistung|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 International|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. |
|||
Für die Zuordnung von [[Cluster|Clustern]] zu [[Dateien]] gibt es dabei mehrere Möglichkeiten. |
|||
* Die [[Referenz]] einer [[Datei]] besteht aus der Clusternummer des Anfangsclusters und der Anzahl der darauf (physikalisch sequenziell) folgenden Cluster. Nachteile: bei Vergrößerung muss ggf. die ganze Datei verschoben werden. Dies verkompliziert das eigentliche 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 verlinkte [[Liste]]. Nachteile: Will man die Datei nicht sequenziell lesen, sondern z. B. nur das Ende, muss das [[Betriebssystem]] dennoch die ganze Datei einlesen, um das Ende zu finden. |
|||
* Freie Zuordnung von Dateiclustern zu Folgeclustern durch einer [[Tabelle]] auf dem [[Massenspeicher]] (Bsp.: [[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 [[Cluster|Clustern]]. Heute in vielen Dateisystemen so umgesetzt. |
|||
== Arten von Dateisystemen == |
== Arten von Dateisystemen == |
||
=== Lineare Dateisysteme === |
|||
Die historisch ersten Dateisysteme waren lineare Dateisysteme auf Lochband oder Lochkarte sowie die noch heute für die Sicherung von Daten eingesetzten Magnetbandsysteme. |
|||
=== |
=== Flache Dateisysteme === |
||
{{Annotiertes Bild |
|||
Frühe Dateisysteme hatten nur ein einzelnes Verzeichnis, das dann Verweise auf alle Dateien des Massenspeichers enthielt. In den meisten modernen Dateisystemen ist dieses Verzeichnis das Wurzelverzeichnis. Hier können Verzeichnisse neben normalen Dateien auch Verweise auf weitere Verzeichnisse, die Unterverzeichnisse, enthalten. Auch diese dürfen wieder Unterverzeichnisse haben. |
|||
| image = Box of floppy disks and USB memory stick.jpg |
|||
| image-width = 336 |
|||
| image-left = 0 |
|||
| image-top = 0 |
|||
| width = 336 |
|||
| height = 130 |
|||
| caption = [[Manuelles Schreiben|Handschriftlich]] beschriftete 5¼[[Zoll (Einheit)|″]]-[[Diskette]]n |
|||
}} |
|||
Frühe Dateisysteme ([[CP/M]], [[Apple DOS]], [[Commodore DOS]], [[86-DOS]]) haben nur ein einzelnes Verzeichnis, das dann Verweise auf alle Dateien des Massenspeichers enthält. Dies war bei Datenspeichern mit limitierter Kapazität, wie [[Diskette]]n oder [[Magnetband|Magentbändern]], meist kein großes Problem, denn das Thema, auf das sich der Inhalt bezieht, kann dabei einfach auf dem Datenträger selbst vermerkt werden. |
|||
=== Hierarchische Dateisysteme === |
|||
Dadurch entsteht eine [[Verzeichnisstruktur]], die oft als Verzeichnisbaum dargestellt wird. Das Festplattenlaufwerk C: unter [[Microsoft Windows|Windows]] beinhaltet beispielsweise neben Dateien wie ''boot.ini'' und ''ntldr'' auch Verzeichnisse wie ''Programme'', ''Dokumente und Einstellungen'' usw. Ein Verzeichnis wie z. B. ''Eigene Dateien'' kann dann wieder Unterverzeichnisse wie ''Eigene Bilder'' oder ''Texte'' enthalten. In ''Texte'' können dann beispielsweise die normalen Dateien ''Brief1.txt'' und ''Brief2.txt'' stehen. |
|||
Mit wachsender Kapazität der Datenträger wurde es immer schwieriger, den Überblick über hunderte und tausende Dateien zu bewahren, deshalb wurde das Konzept der Unterverzeichnisse eingeführt. Ein hierarchisches Dateisystem wurde für das Betriebssystem [[Multics]] entwickelt und, nachdem dessen gemeinsame Entwicklung eingestellt wurde, von AT&T [[Unix]] Version 1 von 1971 übernommen. Damit war die Grundlage für die meisten modernen Dateisysteme gelegt, die im [[Wurzelverzeichnis]] neben regulären Dateien auch Verweise auf weitere Verzeichnisse, die Unterverzeichnisse, enthalten können, mit möglicherweise wiederum weiteren Unterverzeichnissen. |
|||
Dadurch entsteht eine [[Verzeichnisstruktur]], die oft als Verzeichnisbaum dargestellt wird. Das Festplattenlaufwerk C: unter [[Microsoft Windows|Windows]] beinhaltet beispielsweise neben Dateien wie ''boot.ini'' und ''ntldr'' auch Verzeichnisse wie ''Programme'', ''Dokumente und Einstellungen'' usw. Ein Verzeichnis wie zum Beispiel ''Eigene Dateien'' kann dann wieder Unterverzeichnisse wie ''Eigene Bilder'' oder ''Texte'' enthalten. In ''Texte'' können dann beispielsweise die normalen Dateien ''Brief1.txt'' und ''Brief2.txt'' stehen. |
|||
Windows 2000/XP: Mac OS X: Unix / Linux: |
|||
|
|||
[Laufwerk C:] [Wurzelverzeichnis] [Wurzelverzeichnis] |
|||
+- boot.ini +- [Libary] +- [boot] |
|||
+- ntldr +- [System] +- [etc] |
|||
+- [Dokumente und Einstellungen] +- [Users] +- [home] |
|||
| +- [benutzername] | +- [benutzername] | +- [benutzername] |
|||
| +- [Eigene Dateien] | +- [Bilder] | +- [Bilder] |
|||
| +- [Eigene Bilder] | | +- Bild1.png | | +- Bild1.png |
|||
| | +- Bild1.png | | | | |
|||
| | | +- [Texte] | +- [Texte] |
|||
| +- [Texte] | +- Brief1.txt | +- Brief1.txt |
|||
| +- Brief1.txt | +- Brief2.txt | +- Brief2.txt |
|||
| +- Brief2.txt | | |
|||
| +- [Applications] +- [usr] |
|||
+- [Programme] |
|||
|
|||
Verzeichnisse sind mit [eckigen Klammern] gekennzeichnet. |
|||
[[Datei:filesystem.svg|rahmenlos|800px|zentriert]] |
|||
Die Verzeichnisse werden auch Ordner genannt und sind, je nach Betriebssystem, durch ''Backslash'' '''\''' (DOS, Windows, TOS), ''Slash'' '''/''' (Unix, Linux, Mac OS X, AmigaOS) oder ''Doppelpunkt'' ''':''' (ältere Mac OS Versionen) getrennt. Da sich eine Hierarchie von Verzeichnissen und Dateien ergibt, spricht man hier von hierarchischen Dateisystemen. Den Weg durch das Dateisystem, angegeben durch Verzeichnisnamen, die mit den Trennzeichen voneinander getrennt werden, nennt man Pfad. Auf die Datei ''Brief1.txt'' kann man als |
|||
{{Annotiertes Bild |
|||
C:\Dokumente und Einstellungen\benutzername\Eigene Dateien\Texte\Brief1.txt (Windows 2000/XP) |
|||
| image = Imaging-photos.jpg |
|||
|
|||
| image-width = 1129 |
|||
/Users/benutzername/Texte/Brief1.txt (Mac OS X) |
|||
| image-left = 0 |
|||
|
|||
| image-top = 0 |
|||
/home/benutzername/Texte/Brief1.txt (Unix / Linux) |
|||
| width = 450 |
|||
| height = 85 |
|||
| caption = „{{lang|en|Bread Crumbs}}“-Darstellung mit „[[Größer-als-Zeichen|>]]“ in der Adresszeile des [[Windows-Explorer]]<ref name="heiseonline_9827076" /> |
|||
}} |
|||
Die Verzeichnisse werden auch Ordner genannt und sind, je nach Betriebssystem, durch ein ''[[Größer-als-Zeichen]]'' <code>></code> ([[Multics]]), einen ''[[Schrägstrich]]'' (englisch ''{{lang|en|slash}}'') <code>/</code> ([[Unix]], [[Linux]], [[macOS]], [[AmigaOS]]), einen ''Punkt'' <code>.</code> ([[OpenVMS]]), einen ''umgekehrten Schrägstrich'' (englisch ''{{lang|en|backslash}}'') <code>\</code> (DOS, Windows, [[TOS (Betriebssystem)|TOS]]) oder einen ''Doppelpunkt'' <code>:</code> (ältere Mac-OS-Versionen) getrennt. Da sich eine Hierarchie von Verzeichnissen und Dateien ergibt, spricht man hier von hierarchischen Dateisystemen. Den Weg durch das Dateisystem, angegeben durch Verzeichnisnamen, die mit den Trennzeichen voneinander getrennt werden, nennt man Pfad. Auf die Datei {{Monospace|Brief 1}} (als [[Textdatei]] üblicherweise mit der [[Dateinamenserweiterung|Erweiterung]] <code>.txt</code>) im Unterverzeichnis {{Monospace|Texte}} kann mit<!-- !! VERSUCH einer historischen Reihung !! --> |
|||
* <!-- Multics: die Mutter alles Betriebssysteme --><code>><abbr title="user_dir_dir">udd</abbr>>''Project_id''>''Person_id''>Texte>Brief 1.txt ([[Multics]])</code><ref>{{Internetquelle |autor=BSG<!-- Autor "BSG" ist unter https://www.multicians.org/multicians.html nicht mit Kürzel gelistet --> |url=https://www.multicians.org/mgp.html |titel=Glossary of Multics acronyms and terms. |werk=The Multicians web site |datum=<!-- ??? --> |sprache=en |abruf=2025-03-15 |zitat=project directory – Directory for a given project, always a subdirectory of {{Monospace|>udd}}. The subdirectories of the project directory are users' home directories. In the directory pathname {{Monospace|>udd>Multics>Morris}}, {{Monospace|>udd>Multics}} is the project directory.}}</ref><ref>{{Internetquelle |url=http://bitsavers.informatik.uni-stuttgart.de/pdf/honeywell/large_systems/multics/AW17_multicsPocketRef_Apr76.pdf#page=34 |titel=Multics’ Pocket Guide – Command And Active Functions; Series 60 (Level 68); Software |hrsg=Honeywell |datum=1976-04 |seiten=64 |format=PDF; 1,5 MB |sprache=en |abruf=2025-03-15 |zitat=home_dir – pathname of the user’s home directory (usually of the form >user_dir_dir>Project_id>Person_id).}}</ref><ref>{{Internetquelle |autor=Barmar |url=https://retrocomputing.stackexchange.com/questions/7030/why-did-unix-use-slash-as-the-directory-separator |titel=Why did Unix use slash as the directory separator? |werk=Retrocomputing |hrsg=StackExchange |datum=2018-07-12 |format=[[Internetforum]] |sprache=en |abruf=2025-03-15 |zitat=On Multics, pathnames were of the form: <code>>dir1>dir2>dir3>filename</code>}}</ref> |
|||
* <!-- Unix: 1969 --><code>/home/''benutzername''/Texte/Brief 1.txt</code> ([[Unix]] und die meisten [[Unixoides System|Unix-artigen Systeme]], etwa [[Linux]]) |
|||
* <!-- VMS: 1977 --><code>DISK$''Laufwerksname'':[USERS.''benutzername''.TEXTE]BRIEF1.TXT;1</code> (VMS bzw. [[OpenVMS]], Dateisystem Files-11 mit ODS-2) |
|||
* <!-- MS-DOS/PC DOS 2.0: 1983 --><code>C:\TEXTE\BRIEF1.TXT</code> ([[MS-DOS]]/[[PC DOS]] ab Version 2.0) |
|||
* <!-- Macintosh System Software, Mac OS: 1984 --><code>Macintosh HD:Dokumente:Texte:Brief 1</code> (klassisches [[Mac OS (Classic)|Mac OS]]) |
|||
* <!-- Windows 95 mit VFAT: 1995 --><code>C:\Dokumente und Einstellungen\''Benutzername''\Eigene Dateien\Texte\Brief 1.txt</code> (ab [[Microsoft Windows 95|Windows 95]], im konkreten Beispiel: [[Microsoft Windows 2000|Windows 2000]]/[[Microsoft Windows XP|XP]]) |
|||
* <!-- AmigaOS: 1985 --><code>''Laufwerksname'':Texte/Brief 1.txt</code> ([[AmigaOS]]) |
|||
* <!-- Mac OS X: 2001 (Alpha-Versionen: 1999, Beta-Versionen: 2000) --><code>/Users/''Benutzername''/Texte/Brief 1.txt</code> ([[macOS]], vormals Mac OS X) |
|||
* <!-- Windows Vista: 2006--><code>C:\<abbr title="u. a. im Explorer übersetzt: „Benutzer“">Users</abbr>\''Benutzername''\<abbr title="u. a. im Explorer übersetzt: „Dokumente“">Documents</abbr>\Texte\Brief 1.txt</code> (ab [[Microsoft Windows Vista|Windows Vista]]) – im [[Windows-Explorer]] wird dies jedoch lokalisiert angezeigt (u. a. Dokumente statt {{enS|Documents}})<ref name="heiseonline_9827076">{{Heise online |ID=9827076 |Titel=FAQ: Fragen und Antworten zum Windows-Explorer |Autor=Axel Vahldiek |Datum=2024-08-19 |Abruf=2025-03-15 |Zitat=Falsche Namen in Adressleiste – Ich habe mich auf Laufwerk {{Monospace|C:}} in den Nutzerordner ‚Öffentlich‘ durchgehangelt und mich dann irgendwie verklickt: Nun steht oben in der Adressleiste nicht mehr {{Monospace|C:\Benutzer\Öffentlich}}, sondern {{Monospace|C:\Users\Public}}. … Die Adresszeile dient nicht nur zur Anzeige des aktuellen Pfades, sondern auch als Navigationswerkzeug: Die Bestandteile in der Adresszeile (hier ‚C:‘, ‚Benutzer‘ und ‚Öffentlich‘) lassen sich anklicken, um direkt dorthin zu springen. Bei einem Klick auf den kleinen Pfeil neben einem dieser Bestandteile (‚Bread Crumbs‘) erscheint ein Pull-down-Menü mit allen Unterordnern.}}</ref> |
|||
zugegriffen werden. Bei ''DOS/Windows'' gibt es Laufwerksbuchstaben gefolgt von einem Doppelpunkt, die den Pfaden innerhalb des Dateisystems vorangestellt werden. Jeder Datenträger bekommt seinen eigenen Buchstaben, zum Beispiel meist C: für die erste Partition der ersten Festplatte. Bei ''Unix'' gibt es keine Laufwerksbuchstaben, sondern nur einen einzigen Verzeichnisbaum. Die einzelnen Datenträger werden dort an bestimmten Stellen im Baum ''eingehängt'' (Kommando [[Mounten|mount]]), so dass alle Datenträger zusammen den Gesamtbaum ergeben. Windows-Varianten, die auf Windows NT basieren, arbeiten intern ebenfalls mit einem solchen Baum, dieser Baum wird aber gegenüber dem Anwender verborgen. |
|||
Unter ''AmigaOS'' erfolgt eine Mischung der Ansätze von DOS und Unix. Die nach Unix-Nomenklatur bezeichneten Laufwerke werden mit Doppelpunkt angesprochen (df0:, hda1:, sda2:). Darüber hinaus können ''logische'' Doppelpunkt-Laufwerksbezeichnungen wie <code>LIBS:</code> per <code>ASSIGN</code> unabhängig vom ''physischen'' Datenträger vergeben werden. |
|||
Häufig bezeichnet der Begriff Dateisystem nicht nur die Struktur und die Art, wie die Daten auf einem Datenträger organisiert werden, sondern allgemein den ganzen Baum mit mehreren verschiedenen Dateisystemen (Festplatte, CD-ROM, …). Korrekterweise müsste man hier von einem Namensraum sprechen, der von verschiedenen Teilnamensräumen (die eingebundenen Datenträgern mit deren Dateisystemen) gebildet wird, da aber dieser Namensraum sehr dateibezogen ist, wird häufig nur vom Dateisystem gesprochen. |
|||
Die Verzeichnispfade von ''OpenVMS'' unterscheiden sich stark von Unix-, DOS- und Windows-Pfaden. Zuerst nennt OpenVMS die Geräteart, z. B. bezeichnet „<code>DISK$</code>“ einen lokalen Datenträger. Der Laufwerksname (bis zu 255 Zeichen lang) wird angefügt und mit einem Doppelpunkt abgeschlossen. Der Verzeichnis-Teil wird in eckige Klammern gesetzt. Die Unterverzeichnisse werden durch Punkte getrennt, z. B. „<code>[USERS.Verzeichnis.Verzeichnis2]</code>“. Am Ende des Pfads folgt der Dateiname, beispielsweise „<code>Brief1.TXT;1</code>“. Dessen erster Teil ist ein sprechender Name und bis zu 39 Zeichen lang. Nach einem Punkt folgt der dreistellige Dateityp, ähnlich wie bei Windows. Am Ende wird die Version der Datei, getrennt durch ein Semikolon „;“, angefügt. |
|||
Häufig bezeichnet der Begriff Dateisystem nicht nur die Struktur und die Art, wie die Daten auf einem Datenträger organisiert werden, sondern allgemein den ganzen Baum mit mehreren verschiedenen Dateisystemen (Festplatte, CD-ROM, …). Korrekterweise müsste man hier von einem ''Namensraum'' sprechen, der von verschiedenen Teilnamensräumen (den Dateisystemen der eingebundenen Datenträger) gebildet wird, da aber dieser Namensraum sehr dateibezogen ist, wird häufig nur vom Dateisystem gesprochen. |
|||
====Netzwerkdateisysteme==== |
|||
Die Systemaufrufe wie ''open'', ''read'', usw. können auch über ein Netzwerk an einen [[Server]] übertragen werden. Dieser führt dann die Zugriffe auf seine Massenspeicher durch und liefert die angeforderte Information an den [[Client]] zurück. |
|||
==== Netzwerkdateisysteme ==== |
|||
Da dieselben Systemaufrufe verwendet werden, unterscheiden sich die Zugriffe aus Programm- und Anwendersicht nicht von der auf die lokalen Geräte. Man spricht hier von transparenten Zugriffen, weil der Anwender die Umlenkung auf den anderen Rechner nicht sieht, sondern scheinbar unmittelbar auf die Platte des entfernten Rechners schaut – wie durch eine transparente Glasscheibe. Für Netzwerkdateisysteme stehen spezielle [[Netzwerkprotokoll]]e zur Verfügung. |
|||
Die Systemaufrufe wie ''open'', ''read'' usw. können auch über ein Netzwerk an einen [[Server (Software)|Server]] übertragen werden. Dieser führt dann die Zugriffe auf seine Massenspeicher durch und liefert die angeforderte Information an den [[Client]] zurück. |
|||
Da dieselben Systemaufrufe verwendet werden, unterscheiden sich die Zugriffe aus Programm- und Anwendersicht nicht von der auf die lokalen Geräte. Man spricht hier von ''transparenten'' Zugriffen, weil der Anwender die Umlenkung auf den anderen Rechner nicht sieht, sondern scheinbar unmittelbar auf die Platte des entfernten Rechners schaut – wie durch eine transparente Glasscheibe. Für Netzwerkdateisysteme stehen spezielle [[Netzwerkprotokoll]]e zur Verfügung. |
|||
====Spezielle virtuelle Dateisysteme==== |
|||
Das ''open''-''read''-Modell lässt sich auch auf Geräte und Objekte anwenden, die normalerweise nicht über Dateisysteme angesprochen werden. Dadurch wird der Zugriff auf diese Objekte identisch mit dem Zugriff auf normale Dateien, was meist Vorteile bringt. |
|||
Kann auf ein Dateisystem etwa in einem [[Storage Area Network]] (SAN) von mehreren Systemen parallel direkt zugegriffen werden, spricht man von einem [[Global File System|Globalen]]- oder [[Cluster-Dateisystem]]. Dabei sind zusätzliche Maßnahmen zu ergreifen, um Datenverlust ({{enS|''data corruption''}}) durch gegenseitiges Überschreiben zu vermeiden. Dazu wird ein Metadaten-Server eingesetzt. Alle Systeme leiten die Metadaten-Zugriffe – typischerweise über ein [[Local Area Network|LAN]] – an den Metadaten-Server weiter, der diese Operationen wie Verzeichniszugriffe und Block- beziehungsweise Clusterzuweisungen vornimmt. Der eigentliche Datenzugriff erfolgt dann über das SAN, als ob das Dateisystem lokal angeschlossen wäre. Da der Zusatzaufwand (englisch ''{{lang|en|overhead}}'') durch die Übertragung an den Metadaten-Server insbesondere bei großen Dateien kaum ins Gewicht fällt, kann eine Übertragungsgeschwindigkeit ähnlich der eines direkt angeschlossenen Dateisystems realisiert werden. |
|||
Unter den derzeitigen [[Linux]]-Kernels (u. a. Version 2.6) lassen sich System- und Prozessinformation über das virtuelle ''proc''-Dateisystem abfragen und ändern. Die virtuelle Datei ''/proc/cpuinfo'' liefert z.B. Informationen über den Prozessor. |
|||
Eine Besonderheit stellt das [[WebDAV]]-Protokoll dar, das Dateisystem-Zugriffe auf entfernt liegende Dateien via [[Hypertext Transfer Protocol|HTTP]] ermöglicht. |
|||
Solche Pseudo-Dateisysteme wie ''proc'' gibt es unter Linux einige: Dazu zählen ''sysfs'', ''usbdevfs'' oder ''devpts''; unter einigen BSDs gibt es ein ''kernfs''. Nicht zuletzt ''devfs'' bzw. ''udev'' für Gerätedateien (siehe unten). All diese Dateisysteme enthalten nur rein virtuell vorhandene Dateien mit Informationen oder Geräten, die auf eine "Datei" abgebildet werden. |
|||
==== {{Anker|Pseudo-Dateisystem|Spezielle virtuelle Dateisysteme}}Pseudo-Dateisysteme: spezielle virtuelle Dateisysteme ==== |
|||
Der Kernel gaukelt hier quasi die Existenz einer Datei vor, wie sie auch auf einem Massenspeicher vorhanden sein könnte. |
|||
Das ''open''-''read''-Modell lässt sich auch auf Geräte und Objekte anwenden, die normalerweise nicht über Dateisysteme angesprochen werden. Dadurch wird der Zugriff auf diese Objekte identisch mit dem Zugriff auf normale Dateien, was dem Unix-Konzept {{lang|en|''[[Everything is a file]]''}} entspricht und dadurch den Vorteil bringt, diese Daten in gleicher Weise wie etwa Konfigurationsdateien nutzen zu können. |
|||
Unter den derzeitigen [[Linux-Kernel]]s (u. a. Version 2.6) lassen sich System- und Prozessinformation über das virtuelle ''[[Procfs|proc]]''-Dateisystem abfragen und ändern. Die virtuelle Datei <code>/proc/cpuinfo</code> liefert zum Beispiel Informationen über den Prozessor. Unter Linux gibt es einige solcher '''Pseudo-Dateisysteme'''. Dazu zählen u. a. ''[[sysfs]]'', ''[[configfs]]'', ''usbfs'', ''[[devfs]]'' oder ''devpts''; unter einigen BSDs gibt es ein ''kernfs''. All diese Dateisysteme enthalten nur rein virtuell vorhandene Dateien mit Informationen oder Geräten, die auf eine „Datei“ abgebildet werden. |
|||
Dateien in ''ramfs'' oder ''tmpfs'', aber auch ''initrd'' und ähnlichen Dateisystemen existieren jedoch tatsächlich, werden aber nur im Speicher gehalten. Sie werden aus Geschwindigkeitsgründen und aus logisch-technischen Gründen während der [[Booten|Boot-Phase]] eingesetzt. |
|||
Der Kernel gaukelt hier die Existenz einer Datei vor, wie sie auch auf einem Massenspeicher vorhanden sein könnte. |
|||
====Besonderheiten==== |
|||
Dateien in ''[[ramfs]]'' oder ''[[tmpfs]]'' und ähnlichen Dateisystemen existieren demgegenüber tatsächlich, werden aber nur im Arbeitsspeicher gehalten. Sie werden aus Geschwindigkeitsgründen und aus logisch-technischen Gründen während der [[Booten|Boot-Phase]] eingesetzt. |
|||
Einige moderne Dateisysteme (wie [[HPFS]]/[[NTFS]] oder [[HFS]]) haben das Prinzip der Datei generalisiert, indem man in einer Datei nicht nur eine Folge von Bytes (Stream), sondern mehrere solcher Folgen ([[Alternate Data Streams]]) abspeichern kann. Prinzipiell ist das eine sehr gute Idee, denn man kann Teile einer Datei bearbeiten, ohne eventuell vorhandene |
|||
andere Teile (die sehr groß sein können) verschieben zu müssen. |
|||
Neben Linux gibt es auch für diverse andere Betriebssysteme sogenannte [[RAM-Disk]]s, mit denen ein komplettes virtuelles Laufwerk im Arbeitsspeicher realisiert wird, vor allem aus Geschwindigkeitsgründen. |
|||
Problematisch ist nur die '''sehr''' schlechte Unterstützung von multiplen Streams. Das äußert sich zum einen darin, dass alternative Daten beim Wechsel auf andere Dateisysteme (ISO 9660, FAT, ext2) ohne Warnung verloren gehen, zum anderen darin, dass kaum ein Werkzeug diese unterstützt, so dass man die dort gespeicherten Daten nicht sehen kann oder Virenscanner dort abgespeicherte Viren übersehen. |
|||
==== Besonderheiten ==== |
|||
Beispiel (funktioniert nur auf NTFS-Partitionen): |
|||
Viele moderne Dateisysteme haben das Prinzip der Datei verallgemeinert, so dass man in einer Datei nicht nur eine Folge von Bytes, einen sogenannten ''{{lang|en|Stream}}'' (von englisch ''data stream'' für [[Datenstrom]]), sondern mehrere solcher Folgen ([[Alternativer Datenstrom|alternative Datenströme]]) abspeichern kann. Dadurch ist es möglich, Teile einer Datei zu bearbeiten, ohne eventuell vorhandene andere Teile, die sehr groß sein können, verschieben zu müssen. |
|||
C:\>echo Die Kuh lief um den Teich. > Test.txt:Demo |
|||
C:\>dir Test.txt |
|||
Directory of C:\ |
|||
2005-10-26 14:19 0 Test.txt |
|||
1 File(s) 0 bytes |
|||
0 Dir(s) 771,020,218,368 bytes free |
|||
C:\>more < Test.txt:Demo |
|||
Die Kuh lief um den Teich. |
|||
C:\>_ |
|||
In diesem Beispiel wurde eine leere Datei erzeugt, deren Hauptdatenstrom leer ist. |
|||
Das gleiche ist mit Dateien möglich, die schon existieren: |
|||
C:\>dir HDTVdemo.mpg |
|||
Directory of C:\ |
|||
2005-10-21 17:56 6,767,899,414 HDTVdemo.mpg |
|||
1 File(s) 6,767,899,414 bytes |
|||
0 Dir(s) 771,020,214,272 bytes free |
|||
C:\>echo Das ist ein HDTV Demo mit vom 21. Oktober 2005 > HDTVdemo.mpg:Quelle |
|||
C:\>dir HDTVdemo.mpg |
|||
Directory of C:\ |
|||
2005-10-21 17:56 6,767,899,414 HDTVdemo.mpg |
|||
1 File(s) 6,767,899,414 bytes |
|||
0 Dir(s) 771,020,210,176 bytes free |
|||
C:\>more < HDTVdemo.mpg:Quelle |
|||
Das ist ein HDTV Demo mit vom 21. Oktober 2005 |
|||
C:\>_ |
|||
Gegenüber gängigen Methoden wie Tags wird der Hauptdatenstrom nicht berührt, was |
|||
etliche Vorteile betreffs Geschwindigkeit, Platzbedarf und Datensicherheit hat. |
|||
Problematisch ist die mangelnde Unterstützung von multiplen Streams. Das äußert sich zum einen darin, dass alternative Daten beim Transfer auf andere Dateisysteme (ISO 9660, FAT, ext2) ohne Warnung verloren gehen, zum anderen darin, dass kaum ein Werkzeug diese unterstützt, weshalb man die dort gespeicherten Daten nicht ohne Weiteres einsehen kann und beispielsweise Virenscanner dort abgespeicherte Viren übersehen. |
|||
Unter [[Inode (Begriff)|Inode]]-basierten Dateisystemen sind [[Sparse-Datei]]en, [[Hardlink]]s und [[Symbolischer Link|symbolische Links]] möglich. Auch technisch anders aufgebaute Dateisysteme kennen neuerdings zum Teil diese Eigenschaften. |
|||
Aus der Tatsache, dass der Hauptdatenstrom von Änderungen an den anderen Strömen nicht berührt wird, ergeben sich Vorteile für die Performance, den Platzbedarf und die Datensicherheit. |
|||
Dateisysteme aus dem Unix-Bereich kennen besondere ''Gerätedateien''. Deren Namen sind dabei oft per Übereinkommen festgelegt, sie können nach Belieben umbenannt werden; so haben z.B. auch die Tastatur, Maus und andere [[Schnittstelle]]n spezielle Dateinamen, auf die mit ''open'', ''read'', ''write'' zugegriffen werden kann, sogar der Hauptspeicher hat einen Dateinamen (''/dev/mem''). (Die Unix-Philosophie dazu lautet: „Alles ist eine Datei, und wenn nicht, sollte es eine Datei sein.“) |
|||
Nicht nur unter [[Inode]]-basierten Dateisystemen sind [[Sparse-Datei]]en, [[Hardlink]]s und [[symbolische Verknüpfung]]en möglich. |
|||
In anderen Dateisystemen (wie unter [[MS-DOS]] die [[File Allocation Table|FAT]]-basierten Systeme, aber auch unter NTFS) gibt es fest einprogrammierte "magische" Dateinamen mit besonderen Bedeutungen, die dem System der Gerätedateien ähnlich sind. Diese besonderen Dateinamen waren in der Vergangenheit öfters Anlass von Sicherheitsproblemen, da die entsprechenden Namen zum Teil einigen Applikationen nicht bekannt waren und daher nicht herausgefiltert wurden, aber auch zum Teil weil der Zugriffsschutz auf die damit assoziierten Geräte unzureichend geregelt war. |
|||
Für Massenspeicher wie [[Compact Disc|CD-ROM]] oder [[DVD]] gibt es eigene Dateisysteme, die Betriebssystem-übergreifend Anwendung finden, vor allem [[ISO 9660]], weitere siehe unten bei [[#Besonderheiten|Besonderheiten]]. |
|||
===Datenbank-Dateisysteme=== |
|||
Neue Konzepte für Dateiverwaltung sind Datenbank-basierende Dateisysteme. Statt in einer hierarchisch aufgebauten Verwaltung, werden Dateien anhand ihrer Eigenschaften, wie Dateityp, Thema, Autor oder ähnlichen ''Meta''-Informationen identifiziert. Die Formulierung einer Dateisuche kann daher in [[SQL]] oder in natürlicher Sprache erfolgen. |
|||
Dateisysteme aus dem [[Unixoides System|Unix-Bereich]] kennen besondere [[Gerätedatei]]en. Deren Namen sind dabei oft per Übereinkommen festgelegt, sie können nach Belieben umbenannt werden; so haben zum Beispiel auch die Tastatur, Maus und andere [[Schnittstelle]]n spezielle Dateinamen, auf die mit ''{{lang|en|open}}'', ''{{lang|en|read}}'', ''{{lang|en|write}}'' zugegriffen werden kann, sogar der Hauptspeicher hat einen Dateinamen, <code>/dev/mem</code>. (Die [[Unix]]-Philosophie dazu lautet: „[[Everything is a file|Alles ist eine Datei]], und wenn nicht, sollte es eine Datei sein.“) |
|||
Ansätze dafür sind [[GNOME Storage]] und [[WinFS]]. |
|||
In anderen Betriebssystemen (wie unter [[MS-DOS]] ab Version 2.0) gibt es ebenfalls Gerätedateien: <code>COM:</code>, <code>CON:</code>, <code>LPT:</code>, <code>PRN:</code> und andere. Diese Geräte können analog zu einer Datei geöffnet und über eine Zugriffsnummer ''(Handle)'' gelesen und beschrieben werden. Sie haben aber verständlicherweise keinen Dateizeiger. Im Unterschied zu den Blockgeräten (auch „Laufwerke“ genannt: <code>A:</code>, <code>B:</code>, <code>C:</code> usw.) ''enthalten'' sie keine Dateien, sondern verhalten sich selbst – mit gewissen Einschränkungen – wie Dateien. Diese Pseudodateien existieren seit PC DOS 2.0 bzw. MS-DOS 2.0, das stark von UNIX beeinflusst wurde. Unter Berücksichtigung der DOS-Gerätetreiberspezifikation<ref>[http://www.o3one.org/hwdocs/bios_doc/dosref22.html o3one.org]</ref> ist es dem Benutzer möglich, eigene Gerätetreiber zu schreiben, sie per DEVICE-Befehl zu laden und über ebensolche Pseudodateinamen anzusprechen. Diese besonderen Dateinamen waren in der Vergangenheit öfters Anlass von Sicherheitsproblemen, da die entsprechenden Namen zum Teil einigen Applikationen nicht bekannt waren und daher nicht herausgefiltert wurden, aber zum Teil auch weil der Zugriffsschutz auf die damit assoziierten Geräte unzureichend geregelt war. |
|||
Eine solche Form der Speicherung anhand von [[Meta]]-Informationen ist immer von der Kooperation der Nutzer abhängig, die das System mit geeigneten Meta-Informationen versorgen. Verschiedene Firmen haben bereits ähnliche Vorhaben auf anderer Ebene verkündet, so z.B. [[Google]]. |
|||
Darüber hinaus existieren Dateisysteme, die mehrere darunterliegende Speichermedien („{{lang|en|volumes}}“) überspannen können (z. B. die Dateisysteme [[ZFS (Dateisystem)|ZFS]] und [[Btrfs]]), die eine Versionierung von Dateien schon inhärent ermöglichen (z. B. [[Virtual Memory System|VMS]]) oder deren Größe zur Laufzeit geändert werden kann (z. B. [[AIX]]). |
|||
Ein bereits existierendes Datenbank-Dateisystem ist die Virtual File System ([[VFS (windream)|VFS]]) Technik der windream GmbH. Dieses System speichert die Informationen in einer Datenbank und stellt die Daten über ein virtuelles Laufwerk (neuer Laufwerksbuchstabe in Windows) zur Verfügung. Über eine erweiterte Suche kann nach allen verwendeten Attributen gesucht werden. Über eine Volltext-Komponente kann der Dokumenten-Volltext in der Datenbank (statt wie bei Windows üblich im Dokument) gesucht werden (bei wesentlich besseren Antwortzeiten). Die Versorgung mit den erweiterten Attributen ist konfigurierbar und erfolgt entweder automatisch (Extraktion aus dem Dokument) oder über eine eigene Anwendung. |
|||
Das windream VFS ist patentgeschützt. |
|||
Manche Dateisysteme bieten [[Verschlüsselung]]sfunktionen an, Umfang und Sicherheit der Funktionen variieren dabei. |
|||
==Beispiele für Dateisysteme== |
|||
Viele frühe Betriebssysteme (z. B. [[CP/M]], [[Apple DOS]], [[Commodore DOS]]) hatten jeweils nur ein Dateisystem, welches keinen eigenen Namen trug. Diese kann man im Bedarfsfall einfach als CP/M-Dateisystem etc. bezeichnen. |
|||
=== Assoziative Dateiverwaltung === |
|||
Modernere Betriebssysteme: |
|||
{{Hauptartikel|Assoziative Dateiverwaltung}} |
|||
Diese werden häufig fälschlicherweise als Datenbankdateisysteme oder SQL-Dateisysteme bezeichnet, hierbei handelt es sich eigentlich nicht um Dateisysteme, sondern um Informationen eines Dateisystems, die in aufgewerteter Form in einer [[Datenbank]] gespeichert und in, für den Anwender intuitiver Form, über das [[Virtual file system|virtuelle Dateisystem]] des Betriebssystems dargestellt werden. |
|||
=== Sicherheitsaspekte === |
|||
[[Linux]]/[[UNIX]]: |
|||
Das Dateisystem darf von sich aus keine Daten verlieren oder ungewollt überschreiben. Insbesondere zwei Fälle bringen Gefahren mit sich: |
|||
* [[Minix (Dateisystem)|minix]] (vom gleichnamigen Betriebssystem) |
|||
* [[ext2]] (''second extended file system'', lange Zeit das [[Linux]]-Standard-Dateisystem) |
|||
* [[ext3]] (weiterentwickelte Variante von ext2 mit [[Journaling-Dateisystem|journaling]]) |
|||
* [[Berkeley Fast File System|FFS]] Vorgänger von UFS unter BSD |
|||
* [[ReiserFS]] (Linux Journaling File System von Hans Reiser) |
|||
* [[Journaled_File_System|JFS]] (Journaled File System von [[IBM]]) |
|||
* [[UFS]] ([[UNIX]] File System, verwendet unter [[Solaris (Betriebssystem)|Solaris]] und BSD) |
|||
* [[XFS (Dateisystem)|XFS]] (ein weiteres journaling Dateisystem von [[SGI]]) |
|||
* [[XFS (Netzwerk-Dateisystem)|xFS]] Netzwerk-Dateisystem |
|||
* [[Network File System|NFS]] Network File System (von Sun für Solaris entwickelt) |
|||
* SYSV (das klassische Dateisystem des [[System V]]-Unix von [[AT&T]]) |
|||
* [[Acorn Disc File System|ADFS]] (Acorn StrongARM) |
|||
* [[GNOME Storage]] (Datenbank-basierendes Dateisystem) |
|||
* [[ZFS]] 128-Bit-Dateisystem ab [[Solaris (Betriebssystem)|Solaris]] 10 |
|||
* [[NILFS]] (Ein recht neues Dateisystem vom NTT mit [[Journaling-Dateisystem|journaling]]} |
|||
Wenn im Multitasking mehrere Aufgaben gleichzeitig anstehen, muss das Dateisystem die einzelnen Aktionen sauber auseinanderhalten, damit nichts durcheinanderkommt. Wenn die Aufgaben auch noch dieselbe Datei ansprechen, sei es nur lesend oder auch schreibend, werden typischerweise entsprechende Sperrmechanismen ''({{lang|en|Locks}})'' zur Verfügung gestellt oder automatisch in Kraft gesetzt, um Konflikte zu vermeiden. Gleichzeitige Zugriffe von mehreren Seiten z. B. auf eine große Datenbankdatei sind aber auch der Normalfall, so dass man neben globalen Sperren, die die ganze Datei betreffen, auch solche nur für einzelne Datensätze ''({{lang|en|Records}})'' benutzen kann. |
|||
[[Disk Operating System|DOS]]: |
|||
* [[File Allocation Table|FAT]] bzw. [[FAT12]] (File Allocation Table, für Disketten) |
|||
* [[FAT16]] (Erweitertes FAT-System für Festplatten) |
|||
* [[FAT32]] (Erweitertes FAT für große Festplatten) |
|||
Wenn ein Laufwerk gerade auf ein Speichermedium schreibt und die Betriebsspannung in diesem Moment ausfällt, dann besteht die Gefahr, dass nicht nur die eigentlichen Daten unvollständig geschrieben werden, sondern dass vor allem die organisatorischen Einträge im Verzeichnis nicht mehr korrekt aktualisiert werden. Um diese Gefahr zumindest möglichst klein zu halten, wird einerseits per Hardware versucht, genug Energiepuffer (Kondensatoren in der Versorgung) bereitzuhalten, so dass ein Arbeitsvorgang noch zu Ende geführt werden kann, andererseits ist die Software so ausgelegt, dass die Arbeitsschritte möglichst „atomar“ ausgelegt sind, das heißt die empfindliche Zeitspanne mit unvollständigen Dateneinträgen so kurz wie möglich gehalten wird. Wenn dies im Extremfall dann doch nicht hilft, gibt es als neuere Entwicklung sogenannte [[Journaling-Dateisystem]]e, die in einem zusätzlichen Bereich des Speichermediums Buch über jeden Arbeitsschritt führen, so dass im Nachhinein rekonstruiert werden kann, was noch erledigt werden konnte und was nicht mehr. |
|||
[[Microsoft Windows|MS-Windows]] (ab ''Windows 2000'') |
|||
unterstützt sämtliche [[MS-DOS]]-Dateisysteme, zusätzlich: |
|||
* [[File Allocation Table#VFAT|VFAT]] (Virtual FAT, unterstützt längere Dateinamen, für alle FAT-Systeme – Unterstützung ab ''Windows 95'') |
|||
* [[NTFS]] ([[Journaling-Dateisystem]] – Unterstützung ab ''Windows NT'') |
|||
* [[WinFS]] (für die Zukunft angekündigtes Datenbank-basierendes Dateisystem – Unterstützung evtl. ab ''Windows Vista'') |
|||
* [[VFS (windream)|VFS]] (virtuelles Dateisystem mit [[Dokumentenmanagement]]-Funktionalität der [[windream GmbH]]) |
|||
Eigene Gesichtspunkte gibt es bei [[Flash-Speicher]]n, indem diese beim Löschen und Wiederbeschreiben einem Verschleiß ausgesetzt sind, der je nach Typ nur ca. 100.000 bis 1.000.000 Schreibzyklen zulässt. Dabei können in der Regel nicht einzelne Bytes für sich gelöscht werden, sondern meist nur ganze Blöcke (von je nach Modell variierender Größe) auf einmal. Das Dateisystem kann hier daraufhin optimiert werden, dass es die Schreibvorgänge möglichst gleichmäßig über den gesamten Speicherbereich des Flash-Bausteins verteilt und beispielsweise nicht einfach immer bei Adresse 0 anfängt zu schreiben. Stichwort: ''[[Solid-State-Drive#Wear-leveling|Wear-Leveling-Algorithmen]]''. |
|||
[[AmigaOS]]: |
|||
* [[OFS]] (Amiga Old File System) |
|||
* [[Amiga Fast File System|FFS]] ([[Amiga]] Fast File System) |
|||
Dem Aspekt der Datensicherheit gegenüber Ausspähung durch Unberechtigte dienen Dateisysteme, die alle Daten verschlüsseln können, ohne dass andere Schichten des Betriebssystems dafür Aufwand zu treiben bräuchten. |
|||
[[Apple]]/[[Macintosh]]: |
|||
* [[Apple DOS]] (erstes Apple Dateisystem) |
|||
* [[Apple SOS]] |
|||
* [[Apple ProDOS]] (Dateisystem der späten [[Apple II]]-Modelle) |
|||
* [[Macintosh File System|MFS]] (Macintosh File System) |
|||
* [[HFS]] (Hierarchical File System) |
|||
* [[HFS plus|HFS+]] (Erweiterung von HFS u. a. auf Dateinamen mit mehr als 32 Zeichen, mit [[Journaling-Dateisystem|journaling]]) |
|||
* [[HFSX]] [[Case sensitivity|Case-sensitive]] Variante von HFS+ [http://developer.apple.com/technotes/tn/tn1150.html#HFSX Technote dazu] |
|||
Eine weitere Gefahrenquelle für die Integrität der Daten besteht in Schreibaktionen, die von irgendwelcher Software unter Umgehung des Dateisystems direkt auf physische Adressen auf dem Speichermedium erfolgen. Bei älteren Betriebssystemen war das ohne weiteres möglich und führte zu entsprechend häufigen Datenverlusten. Neuere Betriebssysteme können diese tieferen Ebenen wesentlich effektiver vor unautorisiertem Zugriff schützen, so dass mit den Rechten eines Normalbenutzers gar kein direkter Zugriff auf physische Medienadressen mehr erlaubt ist. Wenn bestimmte Diagnose- oder Reparatur-Dienstprogramme ''({{lang|en|Tools}})'' so einen Zugriff doch benötigen, müssen sie mit Administratorrechten ausgestattet sein. |
|||
[[OS/2]]: |
|||
* [[HPFS]] (High Performance File System) |
|||
* [[Journaled File System|JFS]] (Journaled File System) |
|||
=== Lebenszyklusaspekte === |
|||
[[BeOS]]/[[Haiku (Betriebssystem)|Haiku]]: |
|||
Bei der Migration von Dateibeständen, etwa aufgrund einer Systemablösung, müssen häufig Dateien von einem Dateisystem auf ein anderes übernommen werden. Das ist im Allgemeinen ein schwieriges Unterfangen, denn viele Dateisysteme sind untereinander funktional nicht kompatibel, d. h. das Zieldateisystem kann nicht alle Dateien mit allen Attributen aufnehmen, die auf dem Quelldateisystem gespeichert sind. Ein Beispiel hierfür wäre die Migration von NTFS-Dateien mit [[Alternate Data Streams]] auf ein Dateisystem ohne Unterstützung für solche Streams. |
|||
* [[Be File System|BFS]] |
|||
* [[OpenBFS]] (64 Bit, multithreaded, journaliertes, Datenbank-ähnliches Dateisystem) |
|||
== Siehe auch == |
|||
[[CD-ROM]]/[[DVD]]: |
|||
* [[Liste von Dateisystemen]] |
|||
* [[ISO9660]] (CDFS – Dateisystem für CD-ROMs, nach dem Motto „kleinster gemeinsamer Nenner“) |
|||
* [[Fragmentierung (Dateisystem)]] |
|||
* [[Joliet (Computer)|Joliet]] (Erweiterung des ISO9660 von der Firma Microsoft) |
|||
* [[Rockridge]] (Erweiterung des ISO9660 für UNIX) |
|||
* [[Universal Disk Format|UDF]] (Universal Disk Format, u. a. auf DVDs aller Typen gebräuchlich) |
|||
== Weblinks == |
|||
Netzwerk: |
|||
{{Commonscat|File systems|Dateisysteme}} |
|||
* [[Network File System|NFS]] (Network File System; ein über [[Rechnernetz|Netzwerke]] angeschlossenes Dateisystem v. a. für [[Unix]]-artige Systeme) |
|||
* [[:en:Comparison of file systems|Vergleich und Gegenüberstellung aller Dateisysteme (englische Wikipedia)]] |
|||
* [[Coda (Dateisystem)|Coda]] (ein fortgeschrittenes Netzwerk-Dateisystem ähnlich zu NFS) |
|||
* [http://disktype.sourceforge.net/ disktype] erkennt den Dateisystemtyp |
|||
* [[Server Message Block|SMB/CIFS]] (ein über Netzwerke angeschlossenes Dateisystem vor allem für [[Microsoft Windows|Windows]]-Systeme) |
|||
* [[xFS]] (ein verteiltes und dezentrales [[Rechnernetz|Netzwerk]]-Dateisystem) |
|||
* [[Andrew File System|AFS]] (Andrew File System) |
|||
* [[NetWare Core Protocol|NCP]] (NetWare Core Protocol) |
|||
* [[Distributed File System|DFS]] (distributed file system der Open Group, eine Weiterentwicklung des [[Andrew File System]]; dieselbe Abkürzung bezeichnet das gleichnamige System von Microsoft) |
|||
Linux: |
|||
Bei einigen der oben genannten Dateisysteme handelt es sich um [[Journaling-Dateisystem]]e. Alle Dateisysteme haben gemeinsam, dass auf sie auch von Fremdsystemen zugegriffen werden kann, sofern das Betriebssystem dies direkt unterstützt oder es dem Betriebssystem über entsprechende [[Treiber]]software ermöglicht wird. Ausnahmen bilden Dateisysteme, die eine erweiterte Berechtigung unterstützen, die Möglichkeit der [[Verschlüsselung]] bieten, oder deren genaue Funktionsweise ein [[Betriebsgeheimnis]] ist (zum Beispiel [[NTFS]]). |
|||
* {{Internetquelle |url=http://www.admin-magazin.de/content/wie-funktionieren-linux-dateisysteme |titel=Wie funktionieren Linux-Dateisysteme? |zugriff=2011-01-20 |archiv-url=http://web.archive.org/web/20161117050802/http://www.admin-magazin.de/Das-Heft/2010/05/Wie-funktionieren-Linux-Dateisysteme |archiv-datum=2016-11-17 |offline=ja}} |
|||
* [http://www.phoronix.com/scan.php?page=article&item=linux-44-47-fs&num=1 Linux 4.4 To 4.7 - EXT4 vs. F2FS vs. Btrfs Benchmarks] (SSD) |
|||
== |
== Einzelnachweise == |
||
<references /> |
|||
* [http://www.qnx.com/developers/docs/momentics621_docs/neutrino/prog/resmgr.html Treiber- und Dateisystemschnittstelle des Echtzeitbetriebssystems QNX Neutrino] |
|||
{{Normdaten|TYP=s|GND=4464537-5|LCCN=sh85048195}} |
|||
[[Kategorie:Dateisystem|!]] |
|||
[[Kategorie:Dateisystem| ]] |
|||
[[en:File system]] |
|||
[[es:Sistema de archivos]] |
|||
[[fi:Tiedostojärjestelmä]] |
|||
[[fr:Système de fichiers]] |
|||
[[he:מערכת קבצים]] |
|||
[[it:File system]] |
|||
[[ja:ファイルシステム]] |
|||
[[lt:Failų sistema]] |
|||
[[nl:Bestandssysteem]] |
|||
[[no:Filsystem]] |
|||
[[pl:System plików]] |
|||
[[pt:Sistema de ficheiros]] |
|||
[[ru:Файловая система]] |
|||
[[sk:Súborový systém]] |
|||
[[sv:Filsystem]] |
|||
[[uk:Файлова система]] |
|||
[[zh:文件系统]] |
Aktuelle Version vom 13. Juni 2025, 12:19 Uhr
Das Dateisystem (englisch file system oder filesystem) ist eine Ablageorganisation auf einem Volume wie etwa einem Datenträger eines Computers. Dateien können angelegt, gelesen, verändert oder gelöscht werden (CRUD). Für den Nutzer müssen Dateiname und computerinterne Dateiadressen miteinander verknüpft werden. Das (sichere) Abspeichern und das (leichte) Wiederfinden sind wesentliche Aufgaben eines Dateisystems. Das Ordnungs- und Zugriffssystem berücksichtigt die Geräteeigenschaften und ist elementarer Bestandteil eines Computersystems oder eines Betriebssystems.
Der Zugriff auf Dateien und Verzeichnisse eines Dateisystems erfolgt über die Verzeichnisstruktur.
Begriff
[Bearbeiten | Quelltext bearbeiten]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 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 Volume 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 Volume 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 englisch to mount) im laufenden System zugänglich gemacht.
Geschichte
[Bearbeiten | Quelltext bearbeiten]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 so weit 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.
Eigenschaften
[Bearbeiten | Quelltext bearbeiten]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
[Bearbeiten | Quelltext bearbeiten]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 Block Availability Map (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.
Arten von Dateisystemen
[Bearbeiten | Quelltext bearbeiten]Lineare Dateisysteme
[Bearbeiten | Quelltext bearbeiten]Die historisch ersten Dateisysteme waren lineare Dateisysteme auf Lochband oder Lochkarte sowie die noch heute für die Sicherung von Daten eingesetzten Magnetbandsysteme.
Flache Dateisysteme
[Bearbeiten | Quelltext bearbeiten]Frühe Dateisysteme (CP/M, Apple DOS, Commodore DOS, 86-DOS) haben nur ein einzelnes Verzeichnis, das dann Verweise auf alle Dateien des Massenspeichers enthält. Dies war bei Datenspeichern mit limitierter Kapazität, wie Disketten oder Magentbändern, meist kein großes Problem, denn das Thema, auf das sich der Inhalt bezieht, kann dabei einfach auf dem Datenträger selbst vermerkt werden.
Hierarchische Dateisysteme
[Bearbeiten | Quelltext bearbeiten]Mit wachsender Kapazität der Datenträger wurde es immer schwieriger, den Überblick über hunderte und tausende Dateien zu bewahren, deshalb wurde das Konzept der Unterverzeichnisse eingeführt. Ein hierarchisches Dateisystem wurde für das Betriebssystem Multics entwickelt und, nachdem dessen gemeinsame Entwicklung eingestellt wurde, von AT&T Unix Version 1 von 1971 übernommen. Damit war die Grundlage für die meisten modernen Dateisysteme gelegt, die im Wurzelverzeichnis neben regulären Dateien auch Verweise auf weitere Verzeichnisse, die Unterverzeichnisse, enthalten können, mit möglicherweise wiederum weiteren Unterverzeichnissen.
Dadurch entsteht eine Verzeichnisstruktur, die oft als Verzeichnisbaum dargestellt wird. Das Festplattenlaufwerk C: unter Windows beinhaltet beispielsweise neben Dateien wie boot.ini und ntldr auch Verzeichnisse wie Programme, Dokumente und Einstellungen usw. Ein Verzeichnis wie zum Beispiel Eigene Dateien kann dann wieder Unterverzeichnisse wie Eigene Bilder oder Texte enthalten. In Texte können dann beispielsweise die normalen Dateien Brief1.txt und Brief2.txt stehen.

Die Verzeichnisse werden auch Ordner genannt und sind, je nach Betriebssystem, durch ein Größer-als-Zeichen >
(Multics), einen Schrägstrich (englisch slash) /
(Unix, Linux, macOS, AmigaOS), einen Punkt .
(OpenVMS), einen umgekehrten Schrägstrich (englisch backslash) \
(DOS, Windows, TOS) oder einen Doppelpunkt :
(ältere Mac-OS-Versionen) getrennt. Da sich eine Hierarchie von Verzeichnissen und Dateien ergibt, spricht man hier von hierarchischen Dateisystemen. Den Weg durch das Dateisystem, angegeben durch Verzeichnisnamen, die mit den Trennzeichen voneinander getrennt werden, nennt man Pfad. Auf die Datei Brief 1 (als Textdatei üblicherweise mit der Erweiterung .txt
) im Unterverzeichnis Texte kann mit
>udd>Project_id>Person_id>Texte>Brief 1.txt (Multics)
[5][6][7]/home/benutzername/Texte/Brief 1.txt
(Unix und die meisten Unix-artigen Systeme, etwa Linux)DISK$Laufwerksname:[USERS.benutzername.TEXTE]BRIEF1.TXT;1
(VMS bzw. OpenVMS, Dateisystem Files-11 mit ODS-2)C:\TEXTE\BRIEF1.TXT
(MS-DOS/PC DOS ab Version 2.0)Macintosh HD:Dokumente:Texte:Brief 1
(klassisches Mac OS)C:\Dokumente und Einstellungen\Benutzername\Eigene Dateien\Texte\Brief 1.txt
(ab Windows 95, im konkreten Beispiel: Windows 2000/XP)Laufwerksname:Texte/Brief 1.txt
(AmigaOS)/Users/Benutzername/Texte/Brief 1.txt
(macOS, vormals Mac OS X)C:\Users\Benutzername\Documents\Texte\Brief 1.txt
(ab Windows Vista) – im Windows-Explorer wird dies jedoch lokalisiert angezeigt (u. a. Dokumente statt englisch Documents)[4]
zugegriffen werden. Bei DOS/Windows gibt es Laufwerksbuchstaben gefolgt von einem Doppelpunkt, die den Pfaden innerhalb des Dateisystems vorangestellt werden. Jeder Datenträger bekommt seinen eigenen Buchstaben, zum Beispiel meist C: für die erste Partition der ersten Festplatte. Bei Unix gibt es keine Laufwerksbuchstaben, sondern nur einen einzigen Verzeichnisbaum. Die einzelnen Datenträger werden dort an bestimmten Stellen im Baum eingehängt (Kommando mount), so dass alle Datenträger zusammen den Gesamtbaum ergeben. Windows-Varianten, die auf Windows NT basieren, arbeiten intern ebenfalls mit einem solchen Baum, dieser Baum wird aber gegenüber dem Anwender verborgen.
Unter AmigaOS erfolgt eine Mischung der Ansätze von DOS und Unix. Die nach Unix-Nomenklatur bezeichneten Laufwerke werden mit Doppelpunkt angesprochen (df0:, hda1:, sda2:). Darüber hinaus können logische Doppelpunkt-Laufwerksbezeichnungen wie LIBS:
per ASSIGN
unabhängig vom physischen Datenträger vergeben werden.
Die Verzeichnispfade von OpenVMS unterscheiden sich stark von Unix-, DOS- und Windows-Pfaden. Zuerst nennt OpenVMS die Geräteart, z. B. bezeichnet „DISK$
“ einen lokalen Datenträger. Der Laufwerksname (bis zu 255 Zeichen lang) wird angefügt und mit einem Doppelpunkt abgeschlossen. Der Verzeichnis-Teil wird in eckige Klammern gesetzt. Die Unterverzeichnisse werden durch Punkte getrennt, z. B. „[USERS.Verzeichnis.Verzeichnis2]
“. Am Ende des Pfads folgt der Dateiname, beispielsweise „Brief1.TXT;1
“. Dessen erster Teil ist ein sprechender Name und bis zu 39 Zeichen lang. Nach einem Punkt folgt der dreistellige Dateityp, ähnlich wie bei Windows. Am Ende wird die Version der Datei, getrennt durch ein Semikolon „;“, angefügt.
Häufig bezeichnet der Begriff Dateisystem nicht nur die Struktur und die Art, wie die Daten auf einem Datenträger organisiert werden, sondern allgemein den ganzen Baum mit mehreren verschiedenen Dateisystemen (Festplatte, CD-ROM, …). Korrekterweise müsste man hier von einem Namensraum sprechen, der von verschiedenen Teilnamensräumen (den Dateisystemen der eingebundenen Datenträger) gebildet wird, da aber dieser Namensraum sehr dateibezogen ist, wird häufig nur vom Dateisystem gesprochen.
Netzwerkdateisysteme
[Bearbeiten | Quelltext bearbeiten]Die Systemaufrufe wie open, read usw. können auch über ein Netzwerk an einen Server übertragen werden. Dieser führt dann die Zugriffe auf seine Massenspeicher durch und liefert die angeforderte Information an den Client zurück.
Da dieselben Systemaufrufe verwendet werden, unterscheiden sich die Zugriffe aus Programm- und Anwendersicht nicht von der auf die lokalen Geräte. Man spricht hier von transparenten Zugriffen, weil der Anwender die Umlenkung auf den anderen Rechner nicht sieht, sondern scheinbar unmittelbar auf die Platte des entfernten Rechners schaut – wie durch eine transparente Glasscheibe. Für Netzwerkdateisysteme stehen spezielle Netzwerkprotokolle zur Verfügung.
Kann auf ein Dateisystem etwa in einem Storage Area Network (SAN) von mehreren Systemen parallel direkt zugegriffen werden, spricht man von einem Globalen- oder Cluster-Dateisystem. Dabei sind zusätzliche Maßnahmen zu ergreifen, um Datenverlust (englisch data corruption) durch gegenseitiges Überschreiben zu vermeiden. Dazu wird ein Metadaten-Server eingesetzt. Alle Systeme leiten die Metadaten-Zugriffe – typischerweise über ein LAN – an den Metadaten-Server weiter, der diese Operationen wie Verzeichniszugriffe und Block- beziehungsweise Clusterzuweisungen vornimmt. Der eigentliche Datenzugriff erfolgt dann über das SAN, als ob das Dateisystem lokal angeschlossen wäre. Da der Zusatzaufwand (englisch overhead) durch die Übertragung an den Metadaten-Server insbesondere bei großen Dateien kaum ins Gewicht fällt, kann eine Übertragungsgeschwindigkeit ähnlich der eines direkt angeschlossenen Dateisystems realisiert werden.
Eine Besonderheit stellt das WebDAV-Protokoll dar, das Dateisystem-Zugriffe auf entfernt liegende Dateien via HTTP ermöglicht.
Pseudo-Dateisysteme: spezielle virtuelle Dateisysteme
[Bearbeiten | Quelltext bearbeiten]Das open-read-Modell lässt sich auch auf Geräte und Objekte anwenden, die normalerweise nicht über Dateisysteme angesprochen werden. Dadurch wird der Zugriff auf diese Objekte identisch mit dem Zugriff auf normale Dateien, was dem Unix-Konzept Everything is a file entspricht und dadurch den Vorteil bringt, diese Daten in gleicher Weise wie etwa Konfigurationsdateien nutzen zu können.
Unter den derzeitigen Linux-Kernels (u. a. Version 2.6) lassen sich System- und Prozessinformation über das virtuelle proc-Dateisystem abfragen und ändern. Die virtuelle Datei /proc/cpuinfo
liefert zum Beispiel Informationen über den Prozessor. Unter Linux gibt es einige solcher Pseudo-Dateisysteme. Dazu zählen u. a. sysfs, configfs, usbfs, devfs oder devpts; unter einigen BSDs gibt es ein kernfs. All diese Dateisysteme enthalten nur rein virtuell vorhandene Dateien mit Informationen oder Geräten, die auf eine „Datei“ abgebildet werden.
Der Kernel gaukelt hier die Existenz einer Datei vor, wie sie auch auf einem Massenspeicher vorhanden sein könnte.
Dateien in ramfs oder tmpfs und ähnlichen Dateisystemen existieren demgegenüber tatsächlich, werden aber nur im Arbeitsspeicher gehalten. Sie werden aus Geschwindigkeitsgründen und aus logisch-technischen Gründen während der Boot-Phase eingesetzt.
Neben Linux gibt es auch für diverse andere Betriebssysteme sogenannte RAM-Disks, mit denen ein komplettes virtuelles Laufwerk im Arbeitsspeicher realisiert wird, vor allem aus Geschwindigkeitsgründen.
Besonderheiten
[Bearbeiten | Quelltext bearbeiten]Viele moderne Dateisysteme haben das Prinzip der Datei verallgemeinert, so dass man in einer Datei nicht nur eine Folge von Bytes, einen sogenannten Stream (von englisch data stream für Datenstrom), sondern mehrere solcher Folgen (alternative Datenströme) abspeichern kann. Dadurch ist es möglich, Teile einer Datei zu bearbeiten, ohne eventuell vorhandene andere Teile, die sehr groß sein können, verschieben zu müssen.
Problematisch ist die mangelnde Unterstützung von multiplen Streams. Das äußert sich zum einen darin, dass alternative Daten beim Transfer auf andere Dateisysteme (ISO 9660, FAT, ext2) ohne Warnung verloren gehen, zum anderen darin, dass kaum ein Werkzeug diese unterstützt, weshalb man die dort gespeicherten Daten nicht ohne Weiteres einsehen kann und beispielsweise Virenscanner dort abgespeicherte Viren übersehen.
Aus der Tatsache, dass der Hauptdatenstrom von Änderungen an den anderen Strömen nicht berührt wird, ergeben sich Vorteile für die Performance, den Platzbedarf und die Datensicherheit.
Nicht nur unter Inode-basierten Dateisystemen sind Sparse-Dateien, Hardlinks und symbolische Verknüpfungen möglich.
Für Massenspeicher wie CD-ROM oder DVD gibt es eigene Dateisysteme, die Betriebssystem-übergreifend Anwendung finden, vor allem ISO 9660, weitere siehe unten bei Besonderheiten.
Dateisysteme aus dem Unix-Bereich kennen besondere Gerätedateien. Deren Namen sind dabei oft per Übereinkommen festgelegt, sie können nach Belieben umbenannt werden; so haben zum Beispiel auch die Tastatur, Maus und andere Schnittstellen spezielle Dateinamen, auf die mit open, read, write zugegriffen werden kann, sogar der Hauptspeicher hat einen Dateinamen, /dev/mem
. (Die Unix-Philosophie dazu lautet: „Alles ist eine Datei, und wenn nicht, sollte es eine Datei sein.“)
In anderen Betriebssystemen (wie unter MS-DOS ab Version 2.0) gibt es ebenfalls Gerätedateien: COM:
, CON:
, LPT:
, PRN:
und andere. Diese Geräte können analog zu einer Datei geöffnet und über eine Zugriffsnummer (Handle) gelesen und beschrieben werden. Sie haben aber verständlicherweise keinen Dateizeiger. Im Unterschied zu den Blockgeräten (auch „Laufwerke“ genannt: A:
, B:
, C:
usw.) enthalten sie keine Dateien, sondern verhalten sich selbst – mit gewissen Einschränkungen – wie Dateien. Diese Pseudodateien existieren seit PC DOS 2.0 bzw. MS-DOS 2.0, das stark von UNIX beeinflusst wurde. Unter Berücksichtigung der DOS-Gerätetreiberspezifikation[8] ist es dem Benutzer möglich, eigene Gerätetreiber zu schreiben, sie per DEVICE-Befehl zu laden und über ebensolche Pseudodateinamen anzusprechen. Diese besonderen Dateinamen waren in der Vergangenheit öfters Anlass von Sicherheitsproblemen, da die entsprechenden Namen zum Teil einigen Applikationen nicht bekannt waren und daher nicht herausgefiltert wurden, aber zum Teil auch weil der Zugriffsschutz auf die damit assoziierten Geräte unzureichend geregelt war.
Darüber hinaus existieren Dateisysteme, die mehrere darunterliegende Speichermedien („volumes“) überspannen können (z. B. die Dateisysteme ZFS und Btrfs), die eine Versionierung von Dateien schon inhärent ermöglichen (z. B. VMS) oder deren Größe zur Laufzeit geändert werden kann (z. B. AIX).
Manche Dateisysteme bieten Verschlüsselungsfunktionen an, Umfang und Sicherheit der Funktionen variieren dabei.
Assoziative Dateiverwaltung
[Bearbeiten | Quelltext bearbeiten]Diese werden häufig fälschlicherweise als Datenbankdateisysteme oder SQL-Dateisysteme bezeichnet, hierbei handelt es sich eigentlich nicht um Dateisysteme, sondern um Informationen eines Dateisystems, die in aufgewerteter Form in einer Datenbank gespeichert und in, für den Anwender intuitiver Form, über das virtuelle Dateisystem des Betriebssystems dargestellt werden.
Sicherheitsaspekte
[Bearbeiten | Quelltext bearbeiten]Das Dateisystem darf von sich aus keine Daten verlieren oder ungewollt überschreiben. Insbesondere zwei Fälle bringen Gefahren mit sich:
Wenn im Multitasking mehrere Aufgaben gleichzeitig anstehen, muss das Dateisystem die einzelnen Aktionen sauber auseinanderhalten, damit nichts durcheinanderkommt. Wenn die Aufgaben auch noch dieselbe Datei ansprechen, sei es nur lesend oder auch schreibend, werden typischerweise entsprechende Sperrmechanismen (Locks) zur Verfügung gestellt oder automatisch in Kraft gesetzt, um Konflikte zu vermeiden. Gleichzeitige Zugriffe von mehreren Seiten z. B. auf eine große Datenbankdatei sind aber auch der Normalfall, so dass man neben globalen Sperren, die die ganze Datei betreffen, auch solche nur für einzelne Datensätze (Records) benutzen kann.
Wenn ein Laufwerk gerade auf ein Speichermedium schreibt und die Betriebsspannung in diesem Moment ausfällt, dann besteht die Gefahr, dass nicht nur die eigentlichen Daten unvollständig geschrieben werden, sondern dass vor allem die organisatorischen Einträge im Verzeichnis nicht mehr korrekt aktualisiert werden. Um diese Gefahr zumindest möglichst klein zu halten, wird einerseits per Hardware versucht, genug Energiepuffer (Kondensatoren in der Versorgung) bereitzuhalten, so dass ein Arbeitsvorgang noch zu Ende geführt werden kann, andererseits ist die Software so ausgelegt, dass die Arbeitsschritte möglichst „atomar“ ausgelegt sind, das heißt die empfindliche Zeitspanne mit unvollständigen Dateneinträgen so kurz wie möglich gehalten wird. Wenn dies im Extremfall dann doch nicht hilft, gibt es als neuere Entwicklung sogenannte Journaling-Dateisysteme, die in einem zusätzlichen Bereich des Speichermediums Buch über jeden Arbeitsschritt führen, so dass im Nachhinein rekonstruiert werden kann, was noch erledigt werden konnte und was nicht mehr.
Eigene Gesichtspunkte gibt es bei Flash-Speichern, indem diese beim Löschen und Wiederbeschreiben einem Verschleiß ausgesetzt sind, der je nach Typ nur ca. 100.000 bis 1.000.000 Schreibzyklen zulässt. Dabei können in der Regel nicht einzelne Bytes für sich gelöscht werden, sondern meist nur ganze Blöcke (von je nach Modell variierender Größe) auf einmal. Das Dateisystem kann hier daraufhin optimiert werden, dass es die Schreibvorgänge möglichst gleichmäßig über den gesamten Speicherbereich des Flash-Bausteins verteilt und beispielsweise nicht einfach immer bei Adresse 0 anfängt zu schreiben. Stichwort: Wear-Leveling-Algorithmen.
Dem Aspekt der Datensicherheit gegenüber Ausspähung durch Unberechtigte dienen Dateisysteme, die alle Daten verschlüsseln können, ohne dass andere Schichten des Betriebssystems dafür Aufwand zu treiben bräuchten.
Eine weitere Gefahrenquelle für die Integrität der Daten besteht in Schreibaktionen, die von irgendwelcher Software unter Umgehung des Dateisystems direkt auf physische Adressen auf dem Speichermedium erfolgen. Bei älteren Betriebssystemen war das ohne weiteres möglich und führte zu entsprechend häufigen Datenverlusten. Neuere Betriebssysteme können diese tieferen Ebenen wesentlich effektiver vor unautorisiertem Zugriff schützen, so dass mit den Rechten eines Normalbenutzers gar kein direkter Zugriff auf physische Medienadressen mehr erlaubt ist. Wenn bestimmte Diagnose- oder Reparatur-Dienstprogramme (Tools) so einen Zugriff doch benötigen, müssen sie mit Administratorrechten ausgestattet sein.
Lebenszyklusaspekte
[Bearbeiten | Quelltext bearbeiten]Bei der Migration von Dateibeständen, etwa aufgrund einer Systemablösung, müssen häufig Dateien von einem Dateisystem auf ein anderes übernommen werden. Das ist im Allgemeinen ein schwieriges Unterfangen, denn viele Dateisysteme sind untereinander funktional nicht kompatibel, d. h. das Zieldateisystem kann nicht alle Dateien mit allen Attributen aufnehmen, die auf dem Quelldateisystem gespeichert sind. Ein Beispiel hierfür wäre die Migration von NTFS-Dateien mit Alternate Data Streams auf ein Dateisystem ohne Unterstützung für solche Streams.
Siehe auch
[Bearbeiten | Quelltext bearbeiten]Weblinks
[Bearbeiten | Quelltext bearbeiten]- Vergleich und Gegenüberstellung aller Dateisysteme (englische Wikipedia)
- disktype erkennt den Dateisystemtyp
Linux:
- Wie funktionieren Linux-Dateisysteme? Archiviert vom (nicht mehr online verfügbar) am 17. November 2016; abgerufen am 20. Januar 2011.
- Linux 4.4 To 4.7 - EXT4 vs. F2FS vs. Btrfs Benchmarks (SSD)
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Aeleen Frisch: Unix System-Administration. O’Reilly Germany, 2003, 2: Die Unix-Philosophie, S. 66, Fußnote 13 (Volltext in der Google-Buchsuche): „Der Begriff Dateisystem bezieht sich somit zum einen auf den übergeordneten Verzeichnisbaum des Systems, der alle Festplattenpartitionen des Systems umfasst, auf die die Benutzer zugreifen können (wie in »das Unix-Dateisystem«), zum anderen auf die Dateien und Verzeichnisse auf den individuellen Festplattenpartitionen (wie in »ein Dateisystem auf einer Festplattenpartition einrichten« oder »das Benutzer-Dateisystem mounten«). Erst aus dem Kontext wird deutlich, welche der beiden Bedeutungen des Begriffs gemeint ist.“
- ↑ Ray Duncan: Power Programming – Getting Acquainted with The Latest Version of OS/2: 1.2 (Part 2). In: PC Magazine. Band 9, Nr. 7. Ziff Davis, 10. April 1990, S. 317, What is a file system? (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “The phrase ‘file system’ itself can be rather confusing, however, for it has two common but distinctly different meanings. When a physical storage medium is being discussed, the phrase refers to the manner in which data is formatted, organized, and indexed on the medium. The file system is the sum of tables, directories, files, and other structures that allow data to be stored and retrieved by name. The file system also includes the ability to track and allocate the remaining free space on the medium. The key point is that a physical file system, often called a ‘volume’, is both self-consistent and self-sufficient. When file system is used with respect to software, it refers to the module of the operating system that translates requests from an application program—to open, create, read, write, or close a directory or named file—into requests that the low-level disk device driver can understand. That is, the file-oriented, logical requests are transformed into one or more commands to the disk driver to read or write specific disk sectors. The software file system performs this translation with the aid of the tables, structures, and directories found in the physical file system.”
- ↑ Aeleen Frisch: Unix System-Administration. O’Reilly Germany, 2003, 2: Die Unix-Philosophie, S. 66, Fußnote 13 (Volltext in der Google-Buchsuche): „Die Begriffe Partition und Dateisystem werden ebenfalls manchmal synonym verwendet. Obwohl technisch gesehen nur Dateisysteme gemountet werden können, trifft man häufig auf Ausdrücke wie »eine Festplatte mounten« oder »eine Partition mounten«.“
- ↑ a b Axel Vahldiek: FAQ: Fragen und Antworten zum Windows-Explorer. In: Heise online. 19. August 2024. Abgerufen am 15. März 2025.; Zitat: „Falsche Namen in Adressleiste – Ich habe mich auf Laufwerk C: in den Nutzerordner ‚Öffentlich‘ durchgehangelt und mich dann irgendwie verklickt: Nun steht oben in der Adressleiste nicht mehr C:\Benutzer\Öffentlich, sondern C:\Users\Public. … Die Adresszeile dient nicht nur zur Anzeige des aktuellen Pfades, sondern auch als Navigationswerkzeug: Die Bestandteile in der Adresszeile (hier ‚C:‘, ‚Benutzer‘ und ‚Öffentlich‘) lassen sich anklicken, um direkt dorthin zu springen. Bei einem Klick auf den kleinen Pfeil neben einem dieser Bestandteile (‚Bread Crumbs‘) erscheint ein Pull-down-Menü mit allen Unterordnern.“.
- ↑ BSG: Glossary of Multics acronyms and terms. In: The Multicians web site. Abgerufen am 15. März 2025 (englisch): „project directory – Directory for a given project, always a subdirectory of >udd. The subdirectories of the project directory are users' home directories. In the directory pathname >udd>Multics>Morris, >udd>Multics is the project directory.“
- ↑ Multics’ Pocket Guide – Command And Active Functions; Series 60 (Level 68); Software. (PDF; 1,5 MB) Honeywell, April 1976, S. 64, abgerufen am 15. März 2025 (englisch): „home_dir – pathname of the user’s home directory (usually of the form >user_dir_dir>Project_id>Person_id).“
- ↑ Barmar: Why did Unix use slash as the directory separator? (Internetforum) In: Retrocomputing. StackExchange, 12. Juli 2018, abgerufen am 15. März 2025 (englisch): „On Multics, pathnames were of the form:
>dir1>dir2>dir3>filename
“ - ↑ o3one.org