Priv.-Doz. Dr. Stefan Bosse
Universität Bremen, FB Mathematik &
19.3.2018
sbosse@uni-bremen.de |
Sie verstehen die Grundbegriffe und Funktionen eines Dateisystems, insbesondere Datei, Datensatz, Dateimetadaten, Dateitypen, Verzeichnishierarchie und Organisation, Dateiverknüpfungen, Benennungsregeln.
Sie erlangen einen Praxisbezug mit konkreten Dateisystemen unter Windows (FAT/NTFS) und UNIX (UFS/EXT) von deren Implementierung und Interna
Sie erkennen Grenzen von verschiedenen Dateisystemen (Dateigröße, Robustheit, usw.)
Verständnis und praktische Übungen zum:
Sie können die Funktion und Nutzen protokollierender Dateisysteme beschreiben
Sie analysieren und interpretieren Metadaten der Dateisysteme FAT und MINIX mithilfe eines hexadezimalen Diskeditors (Übung)
Dateisysteme sind eng verknüpft mit Betriebssystemen:
FAT
(File Allocation Table), NTFS
(NT Filesystem)
EXT2
,EXT3
(Extended Filesystem)
ZFS
(Zettabyte Filesystem)
Joliet
, RockRidge
, ..
Ein Dateisystem stellt eine der wichtigen Abstraktionsmechanismen dar
Eigenschaften der Dateisysteme spiegeln Betriebssystemklasse wieder:
|
|
Aufgabe: Organisation und Ablage von beliebigen digitalen Objekten
|
[A]
|
Fragestellung:
Was ist allen Dateisystemen gemeinsam?
Es gibt einen Lese- und Schreibzeiger der eine Zelle des Arrays zum Lesen oder Schreiben auswählt
Mit einer Datei sind eine Vielzahl von Attribute verknüpft → Metadaten
Welche Metadaten gespeichert werden hängt vom Dateisystem und Betriebssystem ab!
Metadaten werden i.A. in Verzeichnisstrukturen untergebracht. Die Datei selber ist nur durch eine eindeutige Nummer referenziert.
Für die technische Speicherung (Festplatte, DVD, USB-FLASH) werden Dateisysteme und die Dateien in Blöcke gleicher Größe zerlegt
Das ermöglich eine vereinfachte und effizientere Ausnutzung des Datenträgers (siehe verteilte Belegung)
Die meisten Dateisyssteme organisieren Dateien in Baum- oder Graphenstrukturen
Diese Graphen bestehen aus Knoten: Verzeichnisse (Ordner) die als Container für Dateien und weitere Unterverzeichnisse dienen
Einzelne Dateien und Unterverzeichnisse sind dabei eindeutig über einem Pfad gekennzeichnet.
Ein Pfad beginnt im Wurzelknoten und geht entlang des hierarchischen Verzeichnisweges; Wurzelknoten: Windows → C:\
, Unix → /
Einzelne Elemente des Pfades werden durch ein Trennzeichen zusammengefügt: Windows →\
, Unix → /
Beispiele für Pfade
|
|
Fragestellung:
Wie werden die Daten nun konkret organisiert????
Dateien werden in Blöcken im Blockbereich gespeichert
Die Belegung kann verteilt sein
Das Auffinden von Dateiblöcken geschieht durch Index Blöcke (I-nodes) im Indexbereich
Der Superblock enthält alle relevanten Parameter des Dateisystems (Bereichsgrößen, Datum, Name, Blockgröße, ..)
Eine I-Node ist eine Tabelle mit Blockreferenzen die zu einer Datei gehören.
Eine I-Node hat eine feste Größe → Begrenzte Anzahl von Datenblockreferenzen!
Daher Verkettung von vielen I-Nodes für große Dateien
Keine Trennung zwischen Index- und Datenbereichen
Das Auffinden von Dateiblöcken geschieht mit Bereichsbäumen (B-trees) → komplex in der Implementierung, aber schnelle Suche!
Alles ist eine Datei, auch Verzeichnisse → sehr viele Metadateien
Es gibt eine erweiterbare globale Tabelle für alle Metadateien und Dateien: Masterfile Table MFT → Dateisystemjournal
Eigenschaften: Wiederherstellbarkeit, Zugriffsrechteverwaltung, Datenkomprimierung, Datenverschlüsselung
Aufagbe!
(1) Windows: File Explorer öffnen → Nach C:\Windows\System32 wechseln → Detailinformation von Datei cmd.exe
(2) Unix: Terminal öffnen → cd /usr/bin → ls -l sh
Attribut | DOS/WIN98 FAT | Windows NTFS | Unix EXT2/UFS |
Dateiname | + | +1 | + |
Namenslänge | 11/2553 | 255 | 255 |
Case Sens.\UTF | -\- | +\+ | +\? |
Eigentümer | - | + | + |
Erzeugungszeit | + | + | -/+ |
Zugriffszeit | - | + | + |
Modifikationszeit | - | + | + |
POSIX Rechte2 | - | - | + |
Links | - | + | + |
Max. Dateien | 65k-270M3/65k4 | 4G/4G4 | 4G/32k4 |
Dateigröße | <4GB3 | >1TB | >16GB/512GB |
1 Primäres Attribut (direkt gespeichert) 2 Read/Write/Execute: Owner/Group/Others
3 Abhängig von FAT Version und ggf. Volumegröße 4 Pro Verzeichnis
Dateien werden bei den meisten Dateisystemen mit verketteten Listen gespeichert.
Speichern einer Datei bedeutet: 1. Datenblöcke speichern und verketten; 2. Verzeichnis aktualisieren; 3. I-Node Tabelle und Superblock aktualisieren.
Ist die Kette an einer Stelle beschädigt ist die ganze Datei fehlerhaft und inkorrekt.
Wird das Verzeichnis nicht aktualisiert sind die Daten nicht auffindbar
Ist das Verzeichnis ebenfalls eine Kette kann bei einer Beschädigung das gesamte Verzeichnis unbrauchbar werden
Ist der Superblock beschädigt ist das gesamte Dateisystem unbrauchbar
Um nach einem Crash das Dateisystem wieder schnell und konsistent herstellen zu können wird bei vielen modernen Dateisystemen ein Journal geführt.
Replikation und Synchronisation von Superblöcken (der Zugang zum Dateisystem)
Replikation von Dateisystemen (Synchronisierte Kopien auf mehreren physischen Datenträgern)
Backups!!!
Aufbau des Dateisystems selber kann verbessert werden um Inkonsistenzen zu vermeiden!
KISS: Keep It Simple and Safe!
Auswahl des richtigen Dateisystems!
Dateisysteme sind wesentlicher Bestandteil von Betriebssystemen: Service
Dateisysteme speichern Dateien und bieten eine Organisationsstruktur mit Verzeichnissen und Bäumen
Es gibt unterschiedliche Repräsentation von Dateien: Linearmodell; Blockmodell; Physisches Modell (Datenträger)
Es gibt eine große Vielzahl von Dateisystemen die sich unterscheiden durch:
Die Dateisysteme von UNIX und Windows unterscheiden sich deutlich auf der Implementierungsebene; Der Service ist aber ähnlich!
Verkettung und Indextabellen sind wesentliche Datenstrukturierung
Verwendung von JavaScript und node.js
Dateisystem: Sie bekommen ein JavaScript Template das folgende Funktionen zur Verfügung stellt: Schleife, Datei erzeugen (Länge n Bytes), Verzeichnis erzeugen, Dateinamen der Länge m erzeugen.
Untersuchen Sie unter Windows und Linux oder MacOs folgende Fragestellung:
test
. Wechseln Sie unbedingt in dieses Verzeichnis. Erzeugen Sie dort mit einer Schleife Unterverzeichnisse. Wie viele können erzeugt werden?
Linearmodell: Sie bekommen ein JavaScript Template das folgende Funktionen zur Verfügung stellt: Schleife, Datei erzeugen (leer), Lesen aus einer Datei (zeichenweise), Schreiben in eine Datei (zeichenweise), Dateizeiger positionieren, Datei schließen.
Logische Struktur: Sie bekommen ein kleines MINIX Image (1.4MB). Lesen Sie im Buch [2] den Aufbau des MINIX Dateisystems und analysieren Sie das Dateisystem.