Computer-Systeme Teil 16: Dateisysteme Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 16.01.2013 1
Literatur (Auszug) [1] [2] [3] [4] [5] Rémy Card, Theodore Ts'o, Stephen Tweedie: Design and Implementation of the Second Extended Filesystem http://web.mit.edu/tytso/www/linux/ext2intro.html Dateisystem http://de.wikipedia.org/wiki/dateisystem Liste von Dateisystemen http://de.wikipedia.org/wiki/liste_von_dateisystemen Dateisystem http://wiki.ubuntuusers.de/dateisystem FAT http://de.wikipedia.org/wiki/file_allocation_table Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 2
Übersicht Dateien und Dateisysteme Treiber Montieren von Dateisystemen Unix/Windows MSDOS: FAT16 und FAT32 Die in diesem Teil vorgestellten Informationen stellen lediglich das Prinzip dar - im Detail ist alles etwas komplizierter... Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 3
Dateisysteme auf Massenspeichern Die Organisation von Daten auf Speichermedien anhand von Tabellen wird durch ein Dateisystem (Filesystem) realisiert. Diese Organisation selbst wird auch Dateisystem genannt. Diese Organisation wird beim Formatieren auf das Medium geschrieben. Als Medien kommen in Frage: Memory Sticks CD, DVD oder Blue Ray Festplatten oder SSDs Wechselplatten bzw. Wechselmedien Magnetbänder Im folgenden werden stellvertretend für diese Medien bzw. Geräte die Festplatten betrachtet. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 4
Begriffe I Datei = File = Zusammenhängende Daten auf einem Medium mit einem Namen sowie Verwaltungsinformationen Verwaltungsinformationen: Angabe des Besitzers oder dessen Gruppe Datum der Erstellung Datum der letzten Änderung Datum des letzten Zugriffs Aktuelle Größe Zugriffsrechte (Erlaubnisse, Permissions)... Die Zugriffsrechte regeln, wer was mit der Datei oder mit Ordner machen darf. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 5
Begriffe II Ordner = Directory = Verzeichnis = Zusammenfassung von Beschreibungen mehrerer Dateien in Form einer internen Datei sowie Verwaltungsinformationen Ordner können auch leer sein. Die Beschreibungen können auch als Verweise (Referenzen) aufgefasst werden. Verwaltungsinformationen von Ordnern: Angabe des Besitzers oder dessen Gruppe Datum der Erstellung Datum der letzten Änderung Datum des letzten Zugriffs Aktuelle Größe Zugriffsrechte (Erlaubnisse, Permissions)... Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 6
Begriffe III Dateisystem = Filesystem = Strukturierte Zusammenfassung von Dateien und Ordnern auf Medien Dazu gehören alle Verwaltungsinformationen sowie Informationen über den Aufbau oder Größe des Mediums Bemerkung: Es gibt auch Dateisysteme, die sich über mehrere Medien erstrecken. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 7
Leistungen des Dateisystems Jedes Dateisystem realisiert mindestens einen Ordner. Jede Datei hat einen Namen, der innerhalb seines Ordners eindeutig ist. Jede Datei muss mindestens einem Ordner zugeordnet sein. Dateien können unterschiedlich lang sein. Dateien müssen jederzeit vergrößert und verkleinert werden können. Die Namen von Dateien, Ordnern sowie deren Verwaltungsinformationen können jederzeit abgefragt und geändert werden. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 8
Modell einer Datei Attribute Beschreibung der Datei (Deskriptor) Name Länge Besitzer, Gruppe Rechte Typ/Art... Ort Zeiger -> I n f o r m a t i o n <- Beginn <- Ende (End-of-File) Die Datei kann als Kette von Bytes angesehen werden. Der Zeiger zeigt immer auf das Byte, das als nächstes gelesen wird. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 9
Modell der Ordner I Datei 1 Deskriptor 1 Datei 2 Ordner Directory Deskriptor 2 Deskriptor 3... Datei 3 Deskriptor N Datei N Ein Ordner ist eine Kette von Dateideskriptoren. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 10
Modell der Ordner II Ordner 2 Ordner 1 Datei 3 Ordner 3 Datei 2... Datei 1 Ordner werden hierarchisch verknüpft Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 11
Modell der Ordner III Ordner 2 Ordner 1 Datei 3 Gerät 1 (Medium)... Ordner 3 Datei 2 Datei 1 Ordner 2 Ordner 1 Datei 3 Gerät 2 (Medium)... Ordner 3 Datei 2 Datei 1 Auf jedem Gerät bzw. Medium existiert ein eigener Dateibaum. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 12
Montieren (Mount) Ein Mount (Montieren, Einhängen) eines Dateisystems ist ein Zusammensetzen, so dass von einem Wurzel-Dateisystem ausgehend alle Dateien über Pfade erreichbar sind. Das Wurzeldateisystem ist das, was nach dem Hochfahren (Booten) als erstes angelegt wurde. Montieren bei UNIX: Das Montieren von B in das Wurzeldateisystem A besteht darin, dass ein Ordner von A (Mount Point) durch das Wurzelverzeichnis von B samt allen daran hängenden Verzeichnissen überdeckt wird. Der überdeckte Ordner in A sowie alle an diesen hängenden Dateien bzw. Ordner (von A) sind nach dem Montieren von B nicht mehr zugreifbar, aber immer vorhanden. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 13
Montieren (UNIX) - Vorher /usr/clara /usr /usr/peter /usr/doris / Datei /bin Directory Filesystem F 1 Mount- Point-Directory Mount /bin/x /windows / Filesystem F 2 /screen Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 14
Montieren (UNIX) - Nachher /usr/clara /usr /usr/peter /usr/doris / Filesystem F 1 /bin /bin/x/windows Datei Directory /bin/x Filesystem F 2 /bin/x/screen Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 15
Montieren (WINDOWS) Bei den Dateisystemen der MSDOS-Serie: Windows 95..ME, Windows NT bis XP ist das Montieren anders realisiert: Die Dateisysteme werden unter verschiedenen Buchstaben an einen gedachten Wurzelordner angehängt; was bedeutet, dass sie alle aus der Sicht des Baums als Geschwister angesehen werden können. Es entsteht also ein Wald. Die Dateisysteme erhalten einen Buchstaben, der im absoluten Pfadnamen einer Datei als erstes gefolgt von einem Doppel-punkt genannt werden muss: Beispiel: "c:\windows". Im Gegensatz zu UNIX werden Dateisysteme nicht in einen einzigen Baum eingehängt, sondern liegen parallel wie bei einem "Gebüsch" nebeneinander. Das Trennzeichen zwischen Ordnern ist der Backslash ("\"). Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 16
Realisierung I... Prozesse Syscall-Schnittstelle Betriebssystem Filesystem Treiber-Schnittstelle Treiber Treiber... Treiber Teil der Schichenstruktur innerhalb des Kernels. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 17
Realisierung II Durch die Schichtenstruktur wird eine Abstraktion von den Eigenschaften der Geräte realisiert: Die Treiber passen eine allgemeine Schnittstelle an die Spezialitäten der Geräte an bzw. realisieren den Zugriff auf die Geräteregister. Dadurch braucht sich die Dateisystemimplementierung nicht um diese Details kümmern. Wird ein neues Gerät angeschlossen, reicht die Installation des Treibers für dieses Gerät aus. Die Treiberschnittstelle wird durch das Betriebssystem bestimmt. Initial sind nach der Installation eines Betriebssystems Treiber für die üblichen oder am meisten am Markt vorhandenen Geräte schon vorhanden. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 18
Sinn der Treiberschnittstelle Die Treiber simulieren ein gedachtes (virtuelles) Gerät mit fest gelegten Eigenschaften: Das Medium ist in Blöcke fester Länge aufgeteilt. Jeder Block hat eine von 0 ansteigend gezählte Nummer. Auf jeden Block kann lesend oder schreibend zugegriffen werden. Ein Medium wird also als folgende Struktur angesehen: 0 1 2 3 4 5 6 7 9 Die Blöcke hatten früher die Länge von 512 Byte, heute von 4 KByte. Eine solche Kette wird auch Array oder Feld genannt. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 19
Treiberschnittstelle I Filesystem Treiber Treiber... Treiber [0] [1] [N] init open close... Interrupt- Handler Bus/Geräteregister Intern werden die Geräte/Treiber durchnumeriert, so dass ein Feld aus Verweisen auf die Schnittstellen der Treiber entsteht. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 20
Treiberschnittstelle II Alle Treiber haben innerhalb eines Kernels eine einheitliche Schnittstelle, die im Prinzip wie folgt aufgebaut ist: Operation Init Open Close Read Write Seek Control Poll Erläuterung Initialisieren des Geräts (Reset) Beginn der Verarbeitung Ende der Verarbeitung Lesen von Blöcken Schreiben von Blöcken Positionieren auf einen bestimmten Block Setzen und Abfragen von Modi, Statuswerte Nachfragen, ob letzter I/O-Vorgang beendet Dadurch wird es sehr einfach, unterschiedliche Geräte in den Kernel einzubinden, da alle Besonderheiten der Geräte in den Routinen verdeckt sind. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 21
Treiberschnittstelle III Das Filesystem im Kernel ist in zwei Bereiche eingeteilt: Geräte-unabhängiger Teil: dieser ist für alle Geräte gleich; hier ist der globale Algorithmus der Systemaufrufe realisiert. Geräteabhängiger Teil: Treiber Die Treiberroutinen sind die, die an die Geräte-Register gehen, den Interrupt-Handler definieren, die DMA- Operationen veranlassen etc. [die Schnittstelle zum Geräte-unabhängigen Teil des Kernels ist in Wirklichkeit etwas komplizierter] Diese Routinen werden in der Regel von dem Hersteller der I/O-Hardware programmiert und müssen zur Installation des Geräts mit installiert werden. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 22
Treiberschnittstelle IV Das Dateisystem ruft entsprechend den Systemaufrufen lediglich die korrespondierenden Treiberroutinen auf. In der Realität ist es etwas komplizierter: Das Dateisystem muss Fehler behandeln können. Wechselmedien benötigen besondere Routinen, z. B. das Sperren/Freigeben des Mediums oder das Feststellen des Medienwechsels Aus Performanzgründen werden Blöcke im Kernel zwischengespeichert - ein weiterer Cache. Es müssen Optimierungen durchgeführt werden, z. B. ist ein Scheduler für parallele Zugriffe verschiedener Prozesse auf ein Medium erforderlich, um unnötige Positionierungen des Aktuators bei Platten zu vermeiden. Hier kann z.b. der Fahrstuhl-Algorithmus benutzt werden. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 23
Datei als grundlegendes Element In einer Datei werden die eigentlichen Informationen abgelegt. In einer Datei werden auch die Beschreibungen über die Dateien abgelegt. Diese Beschreibungen bilden die Ordner. Wir brauchen eine Idee, wie Dateien als Ketten von Bytes auf einem Medium realisiert werden. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 24
Verkettung von Blöcken I [0] [1] [2] [3] [Max]... Filesystembasis ist ein Array von Blöcken (1) A A... Datei A belegt Blöcke 2 und 3 (2) A A B... Datei B belegt danach Block 4 Nun wird Datei A um 1 Block verlängert... (3a) A A A B... Datei B wird verschoben Den leeren Platz belegt A (3b) A A B A... Datei A belegt irgendeinen freien Block, so dass eine Verkettung erforderlich wird Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 25
Ablegen von Dateien II Das Verschieben von Dateien wie in der Lösung (3a) ist sehr ineffizient, da bei fast vollen Dateisystemen sehr viele Blöcke verschoben werden müssen jeder I/O-Vorgang relativ zur CPU-Geschwindigkeit sehr langsam ist Daher werden einfach-verkettete lineare Listen zur Verkettung der Dateien benutzt (Lösung 3b). Verweis auf den 1. Block Zeiger Zeiger Zeiger NULL Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 26
Ablegen von Dateien III Fragment = Belegtes Stück auf dem Medium, wenn dessen Blöcke direkt aufsteigende Nummern haben. Fragmentieren = Aufteilen einer Datei auf mehrere Fragmente, die an verschiedenen Orten auf dem Medium liegen Fragmentieren hat folgende Vorteile: Schnelles Ablegen der Information beim Schreiben Optimale Ausnutzung der Platte ohne Reorganisation Und folgende Nachteile: Lesen einer Datei von vorn nach hinten erfordert mehrfaches Positionieren des Aktuators (Zeitverluste) Bei Verlust des Deskriptors (Plattenfehler) ist eine Rekonstruktion der Datei nur sehr schwer Defragmentieren = Reorganisation der Blockbelegung einer Datei, so dass möglichst nur ein Fragment erforderlich ist Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 27
Partitionen I Aufsteigende Zylindernummer Booter Root-FS Swap User-FS User-FS... User-FS Häufige Kopfbewegungen FS = Filesystem Einteilung einer großen Platte in mehrere logische Platten, die jeweils Partitionen genannt werden. Ein Tabelle der Zylinderbereiche der Partitionen befindet sich vorne im Bootbereich, d.h. im Block 0. Dort liegt auch der Code des ersten Booters Das Root-Filesystem ist das, was während des Bootens zum Laden des Betriebssystems benutzt wird und daher das erste Dateisystems ist, auf das zugegriffen wird. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 28
Partitionen II Partitions Eine Partition besteht aus einer Zylindergruppe. Gründe für das Partitionieren: Ein Hardware-Fehler wirkt sich nur auf die betroffenen Partitionen aus, alle anderen Bereiche bleiben intakt. Durch die Begrenzung auf einen Bereich reduzieren sich die Entfernungen der Kopfbewegungen (kürzere Positionierungszeit). Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 29
Beispiel: PC-Microsoft-System I Im 1. Block gibt es den Master-Boot-Record (MBR), der vier Deskriptoren für Partitionen hat. Die Einträge in dieser Partitionstabelle enthalten die Größe sowie die Startblocknummer der Partitionen des Mediums. Siehe: http://de.wikipedia.org/wiki/partitionstabelle Primäre Partitionen = Partitionen, deren Deskriptoren im MBR liegen Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 30
Beispiel: PC-Microsoft-System II Um mehr als vier Partitionen zu erhalten, werden die Boot- Sektoren der Partitionen selbst zur Beschreibung benutzt. Diese "lokalen" Boot-Sektoren sind linear miteinander verkettet, so dass lediglich ein Eintrag im MBR über die erste sekundäre Partition reicht. Sekundäre Partitionen = Partitionen, deren Deskriptoren nicht im MBR, sondern im eigenen Boot-Sektor liegen Aus der Sicht des MBR liegen alle sekundären Partitionen in einem Behälter, der den hintersten zu benutzten Eintrag im MBR belegt. Siehe: http://de.wikipedia.org/wiki/master_boot_record Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 31
Empfehlungen Beispiel für Windows Partition C: Nur Betriebssystem und installierte Software Partition D: Daten Partition E: Backup (Kopie von Daten) Immer möglichst Daten (das sind die wichtigsten Dinge) und Software trennen. Denken Sie immer an Backups. Legen Sie immer regelmäßig Backups an! Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 32
Beispiele einer Partitionierung I Einfache Windows 2000-Installation Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 33
Beispiele einer Partitionierung II Dual-Boot-System mit Windows XP und Linux auf einer Platte Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 34
MSDOS-Dateisystem FAT16/32 Von Microsoft ab 1977 entwickelt FAT = File Allocation Table Verschiedene Versionen: FAT16 (16 bit FAT) FAT32 (32 bit FAT) Kleinste adressierbare Einheit: Cluster bestehend aus mehreren hintereinander liegenden Blöcken Blöcke haben die Länge von 512 Byte Maximale Blockzahl pro Cluster: 64 Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 35
FAT32 FAT32 Blockadressen sind 32 bit, wobei nur 28 bit benutzt werden maximal 2 28 = 268.435.456 Cluster Dateisystemgröße 8 Gbyte bei Clustergröße von 4 Kbyte maximal 2 43 Byte (ca. 8,8 TeraByte) Maximale Größe einer Datei: 4 GByte-1 Dateinamen im 8.3-Format (8 Zeichen vor einem Punkt und 3 danach) Siehe http://de.wikipedia.org/wiki/8.3 VFAT (Virtualized FAT) Wie FAT32 und wie FAT16 Lange Dateinamen Mehr Zeichen im Dateinamen erlaubt Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 36
Aufbau des FAT-Dateisystems I Blöcke für Dateien und Verzeichnisse FAT FAT Wurzelverzeichnis FAT und Kopie Volumen Boot Sector Master Boot Record (MBR) Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 37
Aufbau des FAT-Dateisystems II Im ersten Block eines FAT-Dateisystems befindet sich der Volumen Boot Sector. Dieser enthält: Boot Code, der vom Boot Code des Master Boot Records (MBR) angesprungen wird. Tabellen mit Größenangaben dieses Dateisystems Der Master Boot Record (MBR) befindet sich häufig im Volumen Boot Sector und enthält die Partitionstabelle mit maximal 4 Einträgen. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 38
Aufbau des FAT-Dateisystems III Cluster/Blöcke für die Dateien/Ordner werden aus der Menge der Cluster hinter der zweiten FAT benutzt. Weil die FAT die Daten der Verkettung der Blöcke enthält, wird eine Kopie angefertigt. Die Ordner bestehen aus einem Feld von Strukturen, in denen auch der Dateiname abgelegt ist. Da Dateiname und Dateiverwaltungsinformation zusammen an einer Stelle stehen, sind Links (Verknüpfungen) nicht möglich. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 39
Beispiele einer Partitionierung III Memory-Stick mit FAT32 Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 40
Verkettung der Dateiinhalte I Die Ordner und die Dateien werden durch einfach vorwärts verkettete lineare Listen von Clustern (Zusammenhängende Reihe von Blöcken) realisiert (Prinzip): Verweis auf den 1. Block Zeiger Zeiger Zeiger NULL Die Zeiger (Verweise) werden nun nicht in den Blöcken, sondern in der FAT-Tabelle getrennt von den Blöcken abgelegt. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 41
Verkettung der Dateiinhalte II - Beispiel [23] [25] [30] [33] 25 30 33-1 Deskriptor im Ordner 23 Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 42
Verkettung der Dateiinhalte III - Beispiel [23] [25] [30] [33] Deskriptor im Ordner Cluster der Datei 23 FAT 25 30 33-1 [22][23][24][25][26][27][28][29][30][31][32][33] Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 43
Aufbau der FAT Die FAT ist ein Feld von Verweisen auf Cluster, wobei jedem Cluster genau ein Eintrag in der FAT zugeordnet ist, d.h. dem Cluster N ist der N. Eintrag in der FAT zugeordnet, so dass von der Clusternummer schnell auf den FAT-Eintrag zugegriffen werden kann. In einem FAT-Eintrag steht die Clusternummer des folgenden Clusters oder der Wert 0xFFFF und zeigt, dass der korrespondierende Cluster der letzte der Datei ist, oder der Wert 0x0000 und zeigt, dass der korrespondierende Cluster frei ist (Free list) oder ein Wert und zeigt, dass der korrespondierende Cluster defekt ist. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 44
Directory-Eintrag (Deskriptor) Offset 0 8 11 22 26 Filename Extension Attribute... Änderungsdatum Erster Cluster COMMAND.COM Bit 1: Read Only Bit 2: Versteckt Bit 3: Systemdatei Bit 4: Volumen ID Bit 5: Ordner Bit 6: Archiv 28 Dateigröße Größe 32 byte Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 45
Bemerkungen zu den Ordnern Ordner bestehen aus einer Reihe von 32-byte-langen Deskriptoren. Jeder Ordner enthält die Datei ".", welche die Clusterverkettung für den eigenen Ordner enthält Jeder Ordner enthält die Datei "..", welche die Clusterverkettung des Elternordners enthält. Unterverzeichnisse sind Einträge mit gesetztem Attribut "Ordner". Das erste Byte des Dateinamens zeigt den Status der Ordnereintrags (Belegt, Gelöscht:0xE5 etc.) - dieses Byte ist auch das 1. des Dateinamens, d.h. dieses Byte hat zwei Bedeutungen. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 46
VFAT/FAT32 Einführung langer Dateinamen sowie eines größeren Zeichensatzes: Bis zu 255 Zeichen lange Dateinamen Zeichen wie "+,;=[]" sind auch erlaubt Realisierung Der erste Ordnereintrag ist wie bei der alten Version mit einem Ersatz-MSDOS-Namen, z. B. "Bueche~1.doc", belegt. Anschließend werden die darauf folgenden Directory-Einträge für den Rest des langen Namens verwendet Damit diese nicht mit richtigen Einträgen verwechselt werden, erhalten diese eine unsinnige Attribut-Kombination. Beginn/Ende werden durch eine laufende Nummer und ein Ende-Flag gekennzeichnet. Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 47
Nach dieser Anstrengung etwas Entspannung... Computer-Systeme WS 12/13 - Teil 16/Dateisysteme 48