Dateisystem: Einführung

Dateisystem: Einführung • Hauptaufgabe des Dateisystems ist der schnelle und zuverlässige Zugriff auf Dateien – Problem: Entweder schneller Zugriff od...
27 downloads 0 Views 18KB Size
Dateisystem: Einführung • Hauptaufgabe des Dateisystems ist der schnelle und zuverlässige Zugriff auf Dateien – Problem: Entweder schneller Zugriff oder viel Redundanz beim speichern!

• Zusätzlich müssen Unterverzeichnisse verwaltet werden • Eine Datei wird durch einen Namen ausgewählt – DOS: 8 Zeichen für Datei und 3 Zeichen Erweiterung – Unix: Keine Erweiterung, 256 Zeichen für Dateinamen

• Dateinamen müssen (inkl. Pfad) eindeutig sein

Dateisystem: Einführung • Jede Datei kann mehrere Attribute zugeordnet bekommen: – Read Only, Hidden, System, Archive – Zugriffserlaubnis, Besitzerangaben, Zugriffszeiten – Art der Datei (Programm, Library, Datendatei, …)

• Folgende Strukturen müssen zusätzlich festgelegt werden, gehören aber nicht mehr zum Dateisystem – Wo steht der Boot Lader für das Betriebssystem – Wie ist die Festplatte in Partitionen unterteilt

1

Dateisystem: Einführung • Im Prinzip würde ein genormtes Dateisystem für alle Computer ausreichen – Vorteil: Jeder Datenträger kann mit jedem Betriebsystem gelesen werden

• Oft hat jedes Betriebssystem ein eigenes Dateisystem – – – –

Windows PC: Fat16/Fat32/NTFS Linux PC: EXT2 Sun: UFS Amiga: FastFileSystem

• Jedes Dateisystem hat seine Stärken und Schwächen

Dateisystem: Einführung • Die Festplatte wird vom Dateisystem in mehrere Bereiche aufgeteilt: – Beispiel: Festplatte mit zwei Partitionen: MBR Partition 1: Bootsektor Partition 1: FAT Partition 1: Datenbereich Partition 2: Bootsektor Partition 2: FAT Partition2: Datenbereich

2

Dateisystem: MBR • Jede PC Festplatte hat unabhängig vom Betriebssystem den MBR (Master Boot Record): – Erster Sektor der Festplatte – Enthält ca. 450 Byte Boot Programm (z.B. Lilo) – Enthält die Partitionsdaten der vier möglichen Partitionen • Ab 0x1BEh stehen 16 Byte für Partition 0 • Ab 0x1CEh stehen 16 Byte für Partition 1 • …

– Die letzten zwei Bytes sind 0xAAh und 0x55h, sind diese vorhanden, so ist der MBR gültig. • Binär ist 0xAAh 10101010 und 0x55h 01010101, so daß diese Muster kaum zufällig entstehen

Dateisystem: MBR • Die 4*16 Bytes der Partitionstabelle enthalten: – Byte 0: 0 oder 128, je nachdem ob die Partition aktiv ist • Die aktive Partition wird zum booten verwendet

– Byte 1-3: Start der Partition in Sektor/Cylinder/Kopf Format – Byte 4: Partition ID • 0x06h=FAT16, 0xBh=FAT32, 0x0C=Extended Partition FAT32 • 0x83h=Linux EXT2, 0x82h=Linux Swap Partition

– Byte 5-7: Ende der Partion in Sektor/Cylinder/Kopf Format – Byte 8-11: Partitionsanfang in LBA – Byte 12-15: Partitionslänge in Sektoren

3

Dateisystem: Die extended Partition • Wenn mehr als vier Partitionen benötigt werden, dann kann eine extended Partition angelegt werden: – Verbraucht einen Eintrag im MBR – In der extended Partition existiert ein weiterer Bereich (MBR ähnlich), der die extended Partition in weitere Partitionen aufteilt

• Beispiel DOS: FDISK – Ermöglicht genau eine normale Partition (Primäre Partition) – Werden weitere Partitionen benötigt, so muß zuerst eine extended Partition angelegt werden – Diese kann anschließend in mehrere logische Laufwerke unterteilt werden. – Es werden maximal zwei Einträge im MBR verwendet

Dateisystem: Boot Sektor • Abhängig von der Partition ID (aus dem MBR) ist die eigentliche Partition völlig unterschiedlich aufgebaut • Fat12/Fat16/Fat32 Partitionen enthalten zuerst (1. Sektor der Partition) einen Bootsektor – Enthält zusätzlichen Boot Code – Enthält alle Parameter die für das verwendete Dateisystem notwendig sind

• Fat12/16 sind gleich aufgebaut • Fat32 unterscheidet sich an mehreren Stellen, da es flexibler ist als Fat16

4

Dateisystem: Fat 16 Boot Sektor • Auszug aus dem Fat16 Boot Sektor – – – – – – – – – – – –

Byte 3-10: Betriebssystem Name Byte 11/12: Bytes pro Sektor (eigentlich immer 512) Byte 13: Sektoren pro Cluster (in 2er Potenzen) Byte 14/15: Reservierte Sektoren vor der ersten FAT Byte 16: Anzahl FATs (siehe Folie FAT) Byte 17/18: Anzahl Directory Einträge im Hauptverzeichnis Byte 21: Media Deskriptor Byte (veraltet) Byte 22/23: Sektoren pro FAT Byte 27-31: Anzahl Sektoren vor Bootsektor Byte 32-35: Anzahl Sektoren für große Partitionen Byte 39-42: Serial Number (nur FAT16) Byte 43-53: Volume Label (nur FAT16)

Dateisystem: Fat 32 Boot Sektor • Zusätzlich zu den Fat16 Daten: – Byte 36-39: Sektoren pro FAT – Byte 40/41: Bitkodiert, welche FAT aktuell ist • Bit 0-3: aktuelle FAT, Bit 7=0: Alle FAT aktuell

– Byte 44-47: Hauptverzeichnis Start Cluster – Byte 67-70: Serial Number (wird beim DIR Befehl angezeigt) – Byte 71-81: Volume Label (wird beim DIR Befehl angezeigt)

5

Dateisystem: Datenbereich • Der Datenbereich enthält – Die Daten der Dateien – Die Verzeichnisstruktur

• Im Datenbereich sind mehrere Sektoren zu Cluster zusammengefaßt – Ein Cluster ist die kleinste verwaltbare Einheit – Zwischen 1 und 128 Sektoren pro Cluster möglich • Kleine Cluster: – Vorteil: Bei vielen Dateien geht wenig Platz verloren – Nachteil: Große FAT, evtl. sehr zerstückelte Dateien • Große Cluster: – Vorteil: FAT ist klein, große Dateien sind nicht so zerstückelt – Nachteil: Pro Datei mehr unbenutzte Datenbereiche

Dateisystem: FAT • In der FAT (File Allocation Table) werden zwei Dinge gespeichert: – Welche Cluster der Festplatte sind frei – Welche Datei belegt welche Cluster

• Jeder Eintrag der FAT ist 16/32 Bit lang (FAT16/FAT32) • Für jeden Cluster ist ein Eintrag vorgesehen – Eine 8 GByte Partition mit 1 Sektor Clustergröße ergibt 16 Mio. Cluster, das sind 64 MByte für eine FAT – Bei einer Partition mit 16 Sektoren pro Cluster und 10000 Dateien (z.B. Windows 98 mit Office) gehen im Schnitt 64 MByte verloren, da im Schnitt jede Datei 8 Sektoren unbenutzt läßt

6

Dateisystem: FAT32 • •



• •



Jede Datei ist als Clusterkette gespeichert: Datei 1: – Beginnt in Cluster 2, dann der Reihe nach: 3 4 7 Datei 2: – Beginnt in Cluster 5, dann der Reihe nach: 8 Eine 0 steht für Cluster ist frei Ein Wert größer 0xFFFFFFF7 bedeutet, daß die Datei keine weiteren Cluster enthält Bei FAT32 sind eigentlich nur 28 Bit für die Cluster reserviert, die oberen 4 Bit dürfen nicht verwendet werden!

Cluster Nummer

Enthält

0

Signatur (veraltet)

1

Signatur (veraltet)

2

3

3

4

4

7

5

8

6

0

7

0xFFFFFFF8h

8

0xFFFFFFF8h

9

0

Dateisystem: Vergleich FAT16/32 • FAT16 konnte maximal ca. 65000 Cluster verwalten – Bei maximaler Clustergröße von 128 Sektoren eine maximale Partitionsgröße von: 4 GByte – FAT maximal 65000*2 Byte=130 KByte groß

• FAT32 kann bis zu 2^28=256 Mio. Cluster verwalten – Mit 128 Sektoren pro Cluster: 16 Terabyte – Festplattengröße durch Bootsektor auf 2^32 Sektoren*512 Byte pro Sektor begrenzt auf: 2 Terabyte – IDE Festplatten durch 28 Bit Sektoradresse auf 128 GByte begrenzt • Mögliche Lösung für 2. und 3.: Sektorgröße auf z.B.: 8 KByte erhöhen. Dann 4 Terabyte Festplatten mit IDE und Bootsektor!

7

Dateisystem: Hauptverzeichnis • Das Hauptverzeichnis hat (bei FAT16) als einziges Verzeichnis eine feste Länge – Normalerweise 512 Einträge – Mehr Einträge nicht möglich!

• Cluster Position des Hauptverzeichnisses ist bei FAT32 im Boot Record gespeichert – Dadurch wird das Hauptverzeichnis zu einer normalen Datei, und kann auch seine Größe verändern!

• Ein Directory Eintrag ist immer 32 Byte – Pro Sektor 16 Einträge möglich

Dateisystem: Hauptverzeichnis • Die Einträge im Hauptverzeichnis haben die folgende Struktur (Auszug): – – – – – –

Byte 0-7: Dateiname Byte 8-10: Datei Erweiterung (EXE oder so) Byte 11: File Attribute Byte 22/23: Uhrzeit des letzten Schreibzugriffs Byte 24/25: Datum des letzten Schreibzugriffs Byte 26/27: Nummer des ersten Clusters (16 Bit reichen nur bei FAT16!) – Byte 20/21: Oberen 16 Bit der Clusteradresse

8

Dateisystem: Hauptverzeichnis • Was alles für einen DIR \ getan werden muß: – Lesen des MBR um die Partition zu finden – Lesen des Bootsektors, für die notwendigen Parameter • Länge des Bootbereichs, Länge der FAT, Anzahl der FAT, Position des Hauptverezeichnis (erster Cluster), Anzahl Sektoren/Cluster

– Lesen des ersten Cluster des Hauptverzeichnisses: • PartitionStart+BootBereich+Anzahl FAT*LängeFat+erstercluster*Sektoren/Cluster

– Ausgabe der Verzeichnisdaten des ersten Clusters – Mit Hilfe der FAT weitere Cluster finden und lesen (wenn vorhanden)

• Das Betriebssystem speichert viele Informationen intern ab, so daß nicht jedesmal alle Parameter neu gelesen werden

Dateisystem: Unterverzeichnisse • Ein Unterverzeichnis wird im Prinzip wie eine Datei gespeichert: – Im Hauptverzeichnis z.B. steht ein Eintrag mit WINDOWS, und der Startcluster ist 1234. – Die Dateinamen des Verzeichnis WINDOWS stehen dann ab Cluster 1234 (mit der selben Struktur wie das Hauptverzeichnis) Hauptverzeichnis Name

Cluster

MSDOS.SYS

321

… WINDOWS

1234

0100101010101010 0100101001001010 WINDOWS Name

Cluster

WINDOWS\SYSTEM

WIN.COM

10023

Name

… SYSTEM

Cluster

VGA.DRV 14023 4921



9

Dateisystem: File Attribute • Wodurch ist feststellbar, ob eine Verzeichniseintrag ein Verzeichnis oder eine Datei ist? – Nachschauen in Byte 11 des Eintrags: File Attribute • • • • • • •

Bit 6/7: reserviert Bit 5: Archive Flag Bit 4: Directory Flag Bit 3: Volume Label Flag Bit 2: System Datei Flag Bit 1: Versteckte Datei Flag Bit 0: Read Only Flag

• Ist Bit 4=1, dann ist es ein Verzeichnis! – Sonst keine Unterschiede. Datei Größe wird auf 0 gesetzt.

Dateisystem: Freier Speicher • Wenn eine neue Datei gespeichert, oder eine vorhandene vergrößert werden soll wird freier Speicher benötigt: – Möglicherweise reicht der Restplatz in dem letzten Cluster aus – Falls nicht: Freien Cluster suchen und FAT entsprechend modifizieren – Problem: Wie kann ein freier Cluster (FAT Eintrag=0) gefunden werden, ohne die ganze FAT zu durchsuchen? – Lösung: Gar nicht! Es stehen keine weiteren Strukturen zur Verfügung, die dieses Problem lösen – Betriebssystem sollte intern entsprechende Strukturen anlegen

10

Dateisystem: Defragmentieren • Eine Datei ist fragmentiert, wenn ihre Daten in mehreren Teilen auf der Festplatte gespeichert ist anstatt alle Daten hintereinander – Passiert, wenn eine Festplatte lange Zeit nicht formatiert wurde – Angfangs nicht fragmentierte Dateien • Datei 1: Cluster 1-5, Datei 2: Cluster 6, Datei 3: Cluster 7-9

– Jetzt Datei 2 löschen und Datei 4 mit 3 Clustern schreiben: • Datei 1: Cluser 1-5, Datei 4: Cluster 6/10/11, Datei 3: Cluster 7-9

– Datei 4 ist jetzt fragmentiert! Lösung: Defragmentieren: • Dateien werden so angeordnet, daß alle Datencluster hintereinander stehen • Datei 1: Cluster 1-5, Datei 3: Cluster 6-8, Datei 4: Cluster 9-11

Dateisystem: Zusammenfassung • FAT32 kann auch große Festplatten verwalten, FAT16 nicht • Einfaches Dateisystem mit allen notwendigen Eigenschaften: – Dateien – Unterverzeichnisse

• Keine moderne Konzepte enthalten wie – Links – Mounten von Speichergeräten – Redundante Daten speichern um Datenverlust zu vermeiden

11