Verzeichnisstruktur
Als Verzeichnisstruktur (auch Verzeichnisbaum oder Ordnerstruktur) wird im engeren Sinn die hierarchische Gestalt des gesamten Dateisystems[1][2] eines einzelnen Computers bezeichnet und im weiteren Sinn ein Verzeichnisdienst für beliebige Objekte (wie z. B. Benutzer, Geräte, Dienste, Dateifreigaben und Pakete) eines Firmennetzes. Üblich ist eine Baumstruktur, die bei einer Wurzel beginnt und sich dann beliebig verzweigt.
Die Verzeichnisstruktur ist somit eine logisch strukturierte Abstraktion aller eingebundenen virtuellen oder physischen Dateisysteme[2] unter einem laufenden Betriebssystem und umfasst auch Pseudo-Dateisysteme (procfs, sysfs, …) und externe Ressourcen wie z. B. den Verzeichnisdienst eines Firmennetzes oder anderer Netzwerk-Ressourcen, wenn diese (als virtuelle Dateisysteme) eingebunden sind (z. B. ein Gmail-Postfach per GmailFS oder ein WebDAV-Cloudspeicher per davfs2[3]).
Der Begriff „Unix-Dateisystem“ bezeichnet historisch die gesamte (logische, teils per fstab strukturierte) Verzeichnisstruktur auf Unix-artigen Betriebssystemen,[1][2] obwohl es auch ein physisches Dateisystem mit dem Namen Unix File System (UFS) gibt.
Eigenschaften
BearbeitenIn jeder Ebene des Baumes können sowohl Dateien als auch Verzeichnisse liegen; letztere bilden die nächste Ebene des Baumes. Die Verzeichnisstruktur ergibt sich dadurch, dass Verzeichnisse wiederum Verzeichnisse, nun Unterverzeichnis genannt, enthalten können, ausgehend von einem Wurzelverzeichnis (englisch root directory). Name und Position jedes Eintrags (Datei oder [Unter-]Verzeichnis) können durch eine entsprechende Pfadangabe spezifiziert werden, die an der Wurzel beginnt und alle zu durchlaufenden Verzeichnisse auflistet.
Beispiel: In nebenstehender Abbildung gibt es im Baum des „Unix-Dateisystems“ die Datei /home/anwendername/Foto.png
, also ausgehend vom Wurzelverzeichnis /
in dessen Unterverzeichnis home
, darunter im Unterverzeichnis anwendername
liegt die Datei Foto.png
.
Die Möglichkeit, Querverbindungen – also Ordner- oder Dateiverknüpfungen, auch über Ebenen hinweg – zu schaffen, macht genau genommen aus der Baumgestalt der Verzeichnisstruktur ein Netz, denn die strenge Hierarchie geht verloren. Entsprechend kann dieselbe Datei unter Umständen über verschiedene Pfade spezifiziert werden.
Beschränkungen auf eine einzige Ebene (trivialer Baum) sind von eingebetteten Systemen bekannt. Ältere Dateisysteme, wie sie teilweise noch auf Großrechnern gebräuchlich sind, haben eine relativ starre Verzeichnisstruktur mit teilweise genau festgelegter Anzahl von Ebenen, ohne die Möglichkeit, rasch Unterverzeichnisse zu erstellen.
Ordner
BearbeitenDer Begriff Ordner (englisch folder) wird in den meisten Fällen als Synonym für Verzeichnisse bzw. Unterordner (englisch sub-folder) für Unterverzeichnisse verwendet.[4][5] Im Detail ist ein Ordner konzeptionell jedoch eher ein Objekt der grafischen Oberfläche, während das Verzeichnis als Bestandteil des Dateisystems betrachtet wird.[6][7]
Berechtigungen
BearbeitenDie ersten Berechtigungskonzepte gaben jedem Benutzer einfach ein eigenes Verzeichnis oberhalb der Wurzelebene. Anklänge aus dieser Zeit findet man noch im speziellen Benutzerkonto root unter Unix, das zunächst sämtliche Systemberechtigungen hat. Obwohl inzwischen deutlich weiter entwickelt, hält das heute noch allgemein gebräuchliche Unix-Berechtigungskonzept weiterhin enge Verbindung zur Verzeichnisstruktur, indem pro Verzeichnis (und pro Datei) für einen Benutzer (dem Eigentümer), für eine definierte Gruppe von Benutzern, und für den ganzen Rest jeweils eine Berechtigung vergeben wird. Eine echte n:m-Zuordnung (d. h. die Zuweisung von Rechten/Verboten für jeden Benutzer separat) zwischen Verzeichnissen oder Dateien und berechtigten Benutzerkonten ist damit also noch nicht möglich, will man nicht für jedes Verzeichnis eine eigene Gruppe anlegen. Neuere Lösungen wie ACLs bieten komfortablere Möglichkeiten.
Zugriff
BearbeitenEin 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 Verzeichnissesopendir
,closedir
Öffnen und Schließen eines Verzeichnissesreaddir
Lesen von Verzeichniseinträgenchdir
Wechseln in ein anderes Verzeichnis
- Systemaufrufe für Dateien:
creat
,unlink
Erzeugen und Löschen einer Dateiopen
,close
Öffnen und Schließen einer Dateiread
,write
Lesen und Schreibenseek
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.
Hintergrund
BearbeitenViele Betriebssysteme bieten die Möglichkeit, Festplatten und RAID-Systeme zu partitionieren. Solche Partitionen wie auch ganze Festplatten können mit einem Dateisystem formatiert werden, das heißt, es wird ein leeres Verzeichnis angelegt und der zugeordnete Plattenplatz unter die Verwaltung des Dateisystems gestellt.
Einzelne Dateisysteme können unter unixoiden Systemen (z. B. BSD, System V, Linux, macOS) an beliebiger Stelle innerhalb der Verzeichnisstruktur des Rechners eingehängt („gemountet“) werden und ergänzen dann den Baum um einen weiteren, in sich ggf. verzweigten Ast. Dessen Ursprung bezeichnet man auch als Einhängepunkt, englisch mount point. Andere Betriebssysteme, etwa DOS, Windows oder OpenVMS, vergeben für jedes Dateisystem eine eigene Bezeichnung, so dass mehrere Verzeichnisbäume nebeneinander existieren. Seit Windows 2000 können auch in dessen Dateisystem NTFS Verzeichnisse als Einhängepunkte verwendet werden.[8]
Neuere Entwicklungen für Dateisysteme können einige Techniken relationaler Datenbanken oder objektorientierter Strukturierung verfügbar machen. Konventionelle Verzeichnisstrukturen mit hierarchischer Anlage sind dann eine unter mehreren Möglichkeiten, Informationen anzulegen, zu verändern, wiederaufzufinden und zu lesen.
Standardisierung
BearbeitenVorwiegend im Bereich der unixoiden Systeme gibt es Bemühungen, die Verzeichnisstruktur unabhängig vom eingesetzten Betriebssystem zu standardisieren. Durch eine einheitliche Verzeichnisstruktur sind beispielsweise bestimmte ausführbare Dateien oder Konfigurationsdateien immer am selben Ort zu finden, was die Software-Entwicklung, die Migration von einem Betriebssystem zu einem anderen und die Einarbeitung von Anwendern stark vereinfacht. Neben den POSIX-, SUS- und LSB-Standards, die alle auch die Verzeichnisstruktur beschreiben, ist der Filesystem Hierarchy Standard (FHS) eine bedeutende Normierung einer Verzeichnisstruktur.
Einzelnachweise
Bearbeiten- ↑ a b Aeleen Frisch: Unix System-Administration. O’Reilly Germany, 2003, 2: Die Unix-Philosophie, S. 66, Fußnote 13 (Volltext in der Google-Buchsuche – Hier bezieht sich der Begriff „Dateisystem“ auf den übergeordneten Verzeichnisbaum.): „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.“
- ↑ a b c 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. … 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… The software file system performs this translation with the aid of the tables, structures, and directories found in the physical file system.”
- ↑ https://savannah.nongnu.org/projects/davfs2
- ↑ Mike Meyers: CompTIA A+ Prüfungsvorbereitung ALL IN ONE: Das umfassende Praxis-Handbuch für IT-Administration, Netzwerktechnik und Support. 10. Auflage. mitp Verlag, 2020, ISBN 978-3-7475-0101-6, 15 Eingabeaufforderung – 15.1.7 Laufwerke und Ordner (eingeschränkte Vorschau in der Google-Buchsuche): „Techniker verwenden häufig den Begriff Verzeichnis anstelle von Ordner, meinen damit aber dasselbe.“
- ↑ Arnold Robbins, Nelson H. F. Beebe: Klassische Shell-Programmierung. O’Reilly, 2006, ISBN 3-89721-441-5, Anhang B: Dateien und Dateisysteme, S. 467, Wie werden Dateien benannt? (eingeschränkte Vorschau in der Google-Buchsuche – amerikanisches Englisch: Classic Shell Scripting. Übersetzt von Kathrin Lichtenberg): „Moderne Dateisysteme lösen dieses Problem, indem sie Mengen einheitlich benannter Dateien in logische Sammlungen namens Verzeichnis oder Ordner gruppieren.“
- ↑ Hajo Schulz: FAQ: Ordner und Dateinamen unter Windows entwirren. In: Heise online. 20. November 2022 (auch in c’t 25/2022, S. 178). Abgerufen am 18. Februar 2023.; Zitat: „Ordner oder Verzeichnis? … Konzeptuell ist ein Ordner eher ein Objekt der grafischen Oberfläche, unter Windows also ein Container im Explorer, und ein Verzeichnis ist ein Bestandteil des Dateisystems. Solange aus dem Kontext klar ist, dass man über das Dateisystem redet, kann man beide Begriffe synonym verwenden.“.
- ↑ Konstantin Lindenau: Windows 98 Zweite Ausgabe: kompakt, komplett, kompetent. Markt&Technik Verlag, 2000, ISBN 3-8272-5689-5, 4.1 Die Rolle der Ordner, S. 104 (eingeschränkte Vorschau in der Google-Buchsuche): „Ein Ordner ist unter Windows 98 ganz allgemein ein ›Behälter‹ für Objekte. … Bei Objekten in einem Ordner kann es sich um Dateien und Verzeichnisse (Verzeichnisordner), Laufwerke (Laufwerksordner), die Unterprogramme der Systemsteuerung (Systemordner) oder beliebige andere Dinge, etwa angelegte DFÜ-Netzwerkverbindungen (Spezialordner), handeln.“
- ↑ Inside Win2K NTFS, Part 1. MSDN (englisch)