42
Systeme 1 Kapitel 3 Dateisysteme

Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Embed Size (px)

Citation preview

Page 1: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Systeme 1

Kapitel 3Dateisysteme

Page 2: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Dateisysteme• Hauptaufgaben: – Organisation programmexterner Daten

• Progamminterne Daten werden direkt von Anwendungsprogrammen im zur Verfügung stehenden Arbeitsspeicher verwaltet.

– Definiert ein Ordnungs- und Zugriffssystem– Erlaubt den (gleichzeitigen) Zugriff mehrerer

Programme• Beispiel für ein einfaches Dateisytem:– RamFS / TempFS (Linux):

• Bereiche des Arbeitsspeichers werden als logisches Ordnungssystem genutzt.

Page 3: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Dateisysteme• Persistente Dateisysteme– Daten werden persistent gesichert

• Daten sind von Lebensdauer von Programmen unabhängig.– Nutzung von externen Medien

• z.B. Platten, CD-ROM, Bänder– Erlaubt die Organisation von großen Datenmengen

• Daten müssen nicht vollständig in den Arbeitsspeicher geladen werden.

• Beispiele:– (V)FAT, NTFS (MS-DOS / Windows)– ext3, XFS, ReiserFS (Linux)– ISO 9660 (CD-ROM), UDF (ISO 13346) (DVD)

Page 4: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Dateien• Dateien– Kleinste logische Einheit eines Dateisystems– Aus Sicht des Betriebssystems eine Sequenz von

Daten einer gegebenen Länge– Zugriff über Namen (Dateiname)

• Regeln variieren von System zu System– Beispiel: MS-DOS (FAT):

» Name: maximal 8 Zeichen» Dateierweiterung: maximal 3 Zeichen» Keine Unterscheidung zwischen Groß- und Kleinbuchstaben

– Beispiel: Linux (ext3)» Unterscheidung zwischen Groß- und Kleinbuchstaben » 255 Zeichen (ohne '/' und NUL ('\0'))

Page 5: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Dateitypen• Reguläre Dateien

– beinhalten Benutzerdaten• Verzeichnisse (Directory)

– Systemdatei zur hierarchischen Organisation– beinhalten reguläre Dateien

• Gerätedateien – Blockbasiert

• Lesen und schreiben in Blöcken • z.B. Platten, Diskettenlaufwerke, ...

– Zeichenbasiert• Modellierung von Seriellen- und E/A-Geräten • z.B. Maus, Tastatur, Modem

• Symbolische Links • Pipes, Sockets ...

Page 6: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Dateiattribute• Dateiattribute speichern Metadaten über Dateien• Beispiele:– Entstehungszeitpunkt (Datum, Uhrzeit)– Dateigröße– Zugriffsrechte:

Wer darf in welcher Weise auf die Datei zugreifen?• Zugriffsarten:

– Lesender Zugriff– Schreibender Zugriff– Ausführung

• Zugreifender– Dateieigentümer– Benutzergruppe des Dateieigentümers

Page 7: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Beispiel: Dateiattribute unter Linux

$ ls –ldrwxr-x--- 6 admin users 4096 Dec 02 08:10 verzeichnis-rw-r----- 1 ann users 1804 Dec 05 19:30 datei1-rwxr--r-- 1 bob users 1804 Dec 01 20:22 datei2

• Bedeutung der Felder:– Typ des Eintrags: Datei, Verzeichnis– Rechte für Besitzer, Gruppenbesitzer, alle anderen– Anzahl Einträge (Verzeichnis), Anzahl Referenzen (Datei)– Besitzer, Gruppenbesitzer– Speicherplatzverbrauch– Datum der letzten Modifikation– Name

Page 8: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Dateiattribute (Beispiele)

Page 9: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Exkurs: Rechteverwaltung unter UNIX

• Standardrechte für Verzeichnisse und Dateien:– Dateien

• „r“: Datei darf gelesen werden• „w“: Datei darf geändert werden• „x“: Datei darf als Programm ausgeführt werden

– Verzeichnisse• „r“: Der Inhalt des Verzeichnisses darf gelesen werden• „w“: Der Inhalt des Verzeichnisses darf geändert werden:

Dateien anlegen, umbenennen, löschen• „x“: Man darf in das Verzeichnis wechseln und seine Objekte

benutzen

Page 10: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Exkurs: Rechteverwaltung unter UNIX

• Sonderrechte:• Optische Notation bei ls:• -rwsr-s--- und drwxrwxrwt– Dateien:

• SUID-Prozess läuft unter der UID des Programmbesitzers• SGID-Prozess läuft mit der GID des

Programmgruppenbesitzers– Verzeichnisse:

• SUID: Ohne Verwendung• SGID: Neu angelegte Dateien gehören der Gruppe, der auch

das Verzeichnis gehört• SVTX: Jeder darf nur löschen, was ihm gehört

Page 11: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Exkurs: Rechteverwaltung unter UNIX

• Beispiel SUID:-r-s--x--x … root root … /usr/bin/passwd

– Beim Aufruf von 'passwd' läuft das Programm mit der UID des Besitzers (in dem Fall root).

– SUID-root-Programme sind sicherheitskritisch!

• Beispiel SVTX:drwxrwxrwt … root root … /tmp

– SVTX verhindert, dass jeder alles löschen darf.

Page 12: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Verzeichnisbaum• Baumartige hierarchische Strukturierung• Ausgangspunkt Wurzelverzeichnis (UNIX: '/')• Restliche Verzeichnisse baumartig angehängt

• Absolute Pfade beginnen mit '/', z.B. '/home/meier'• Relative Pfade beginnen nicht mit '/', z.B. 'schulze'• Relative Pfade beziehen sich auf ein aktuelles

Arbeitsverzeichnis (working directory).

Page 13: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Dateizugriff• Sequentieller Zugriff:

– Alle Bytes einer Datei können nur nacheinander vom Anfang beginnend gelesen werden.

– Kein Überspringen– Zurückspulen möglich– Beispiel: (serielle) E/A-Gerätedateien, Bandlaufwerke

• Random-Access-Dateien (Dateien mit wahlfreiem Zugriff):– Lesen erfolgt von der gerade aktuellen Position– Beliebiges Festlegen der aktuellen Position durch Seek-

Operation möglich– Beispiel: Dateien auf Festplatten

Page 14: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Dateienoperationen• Operationen entsprechen Systemaufrufen

– Create: Erzeugen– Delete: Löschen– Open: Öffnen– Close: Schließen– Read: Lesen von aktueller Position– Write: Schreiben an aktuelle Position– Append: Anhängen an Dateiende– Seek: Bei Random-Access-Dateien aktuelle Position bestimmen– Get attributes: Lesen der Dateiattribute– Set attributes: Verändern der Dateiattribute– Rename: Umbenennen

Page 15: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Verzeichnisoperationen• Operationen entsprechen Systemaufrufen

– Create: Erzeugen– Delete: Löschen– Opendir: Öffnen– Closedir: Schließen– Readdir: Nächsten Verzeichniseintrag lesen– Get attributes: Lesen der Verzeichnisattribute– Set attributes: Verändern der Verzeichnisattribute– Rename: Umbenennen

• Aber: kein Write!– Verzeichniseinträge werden nur geschrieben bei Create etc. auf

Dateien.

Page 16: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Systeme 1

Kapitel 3.1Implementierung von

Dateisystemen

Page 17: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Festplatten

• Dateisystem z.B. auf Festplatten• Festplatten bestehen aus mehreren Platten

• Platte ist eingeteilt in Sektoren

Page 18: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Festplatten Layout

• Sektor 0 der Platte enthält MBR (Master Boot Record).– Verwendet beim Booten– Partitionstabelle mit Anfangs- und Endadresse jeder Partition– Eine aktive Partition

• Bootvorgang:– BIOS liest MBR ein.– Lokalisierung der aktiven Partition– Einlesen und Ausführen des Bootblocks der aktiven Partition– Bootblock enthält den Bootloader, dieser lädt das Betriebssystem (-> hat Kenntnis über

Dateisystem).

Page 19: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Festplatten Layout

• Bootblock lädt Dateisystem der Partition.• Superblock des Dateisystems enthält Schlüsselparameter des

Dateisystems (z.B. Schreibschutzmarkierung, Name des Dateisystemtyps etc.).

• Freispeicherverwaltung: Informationen über freie Blöcke im Dateisystem• I-Nodes:

– Liste von Datenstrukturen– Eine Datenstruktur pro Datei mit wesentlichen Informationen über Datei

• Datenblöcke: Eigentliche Inhalte der Dateien.

Page 20: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Dateien

• 3 verschiedene Alternativen zur Realisierung von Dateien:– Zusammenhängende Belegung– Belegung durch verkettete Listen– I-Nodes

Page 21: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Dateien

• Abspeicherung von Dateien als zusammen-hängende Menge von Plattenblöcken:

Page 22: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Dateien• Abspeicherung von Dateien als

zusammenhängende Menge von Plattenblöcken:

• Vorteil: schnelles sequentielles Lesen einfache Implementierung

Page 23: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Dateien• Abspeicherung von Dateien als zusammenhängende Menge von

Plattenblöcken:Problem: Löschen von Dateien D und F

Fragmentierung der Platte!• Verschiebung der Blöcke?• Verwaltung der entstehenden Löcher in Freilisten?• Was passiert, wenn man eine Datei erzeugt, deren Größe aber noch

unbekannt ist? Zusammenhängende Belegung im Allgemeinen - keine gute Idee!• Aber: Wird benutzt in Spezialfällen wie Dateisysteme für CD-ROMs.

Page 24: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Dateien

• Speichere Dateien als verkettete Listen von Platten-blöcken– Dateiinhalt wird auf Blöcke gleicher Größer verteilt

Page 25: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Dateien

• Speichere Datei als verkettete Listen von Plattenblöcken– Dateiinhalt wird auf Blöcke gleicher Größer verteilt

• Vorteile– Keine Fragmentierung– Sequentielles Lesen

• Nachteile– Wahlfreier Zugriff

• Zugriff auf Block n: Starte bei Block 0 und verfolge alle Blöcke n-1 Blöcke

=> n-1 langsame Lesezugriffe auf die Platte

Page 26: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Dateien (FAT)Speichere Datei als verkettete Listen von Plattenblöcken• Verbesserung:– Halte Information über Verkettung der Blöcke im

Hauptspeicher– Ersetze bei wahlfreiem Zugriff Plattenzugriffe durch

(schnellere) Hauptspeicherzugriffe Datei-Allokationstabelle bzw. FAT im Hauptspeicher

• Methode benutzt in – MS-DOS (FAT-12, FAT-16, FAT-32)– Windows 95, Windows 98 (FAT-32)– Windows 2000 (u.a. FAT-32)

Page 27: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Dateien (FAT)

Page 28: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Dateien (FAT)Speichere Datei als verkettete Listen von Plattenblöcken• Vorteil:

– Da FAT im Hauptspeicher abgelegt, muss bei wahlfreiem Zugriff auf Block n nur eine Kette von Verweisen im Hauptspeicher verfolgt werden.

• Nachteil:– Größe der FAT im Speicher!– Anzahl der Einträge = Gesamtzahl der Plattenblöcke– Auch wenn Platte fast komplett unbelegt!

• Beobachtung:– Man braucht Verkettung der Plattenblöcke nur für aktuell bearbeitete

Dateien!-> I-Node-Konzept (UNIX, LINUX)

Page 29: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Dateien (I-Node)

• Zu jeder Datei gehört eine Datenstruktur der sog. I-Node (Index-Node)

• I-Node ermöglicht Zugriff auf alle Blöcke der Datei.

• I-Node muss nur dann im Speicher sein, wenn eine Datei offen ist.– Wenn k Dateien offen und I-Node n Bytes

benötigt, dann nur k * n Byte insgesamt.

Page 30: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Bsp.: UNIX System VI-Node einer Datei enthält– alle Attribute der Datei– m Adressen von Plattenblöcken– (UNIX System V: m = 10)

Page 31: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Dateien (I-Node)

• Kleine Dateien bis 10 x 1 KByte (bei Blockgröße 1 KByte):

Page 32: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Dateien (I-Node)

• Für größere Dateien werden Datenblöcke zur Speicherung von weiteren Plattenadressen genutzt

• Bsp.: – Blockgröße 1 KByte– Größe eines Zeigers auf Plattenblock: 4 Byte

-> 256 Zeiger passen in einen Plattenblock– Nach 10 (direkten) Plattenadressen gibt es im I-Node

Zeiger auf Block mit 256 weiteren Plattenadressen -> Insgesamt Dateien bis zu

(10 + 256) x 1 KByte = 266 KByte möglich.

Page 33: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Dateien (I-Node)

Page 34: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Dateien (I-Node)

• Noch größere Dateien.

Page 35: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Dateien (I-Node)

• Bei – Blockgröße 1 KB,– Zeigergröße 4 Byte – erhält man über doppelt indirekten Block 256 x 256 =

65536 Zeiger auf Datenblöcke.• Zusätzlich noch dreifach indirekter Block …

• Frage: Wie groß ist mit diesen Parametern die maximale Dateigröße?Übung

Page 36: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Dateien (I-Node)

• Attribut-Informationen von I-Nodes

* Hier 3-Bytes für eine Adresse

*

Page 37: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Verzeichnissen

• Verzeichnisse sind ebenfalls Dateien!• Sie liefern eine Abbildung von – Datei- bzw. Verzeichnisnamen – auf I-Node-Nummern.• Jeder Verzeichniseintrag ist ein Paar aus Name und I-

Node-Nummer.

• Über I-Nodes kommt man dann zu Dateiinhalten.

Page 38: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Realisierung von Verzeichnissen

tmp etc var usr lib home

bin man lib meier mueller schulze

games mail news work

/

Page 39: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Verwaltung freier Plattenblöcke• Datenblöcke im Dateisystem an beliebigen

Stellen genutzt.• Nicht notwendigerweise aufeinander folgend.• Verwaltung freier Blöcke:– Über Freibereichsliste als verkettete Liste:

• Speichere Nummern von freien Plattenblöcken• Benutze zum Speichern der Nummern freie Plattenblöcke,

die miteinander verkettet werden– Bitmap

• Bitmap mit 1 Bit für jeden Plattenblock• Plattenblock frei , entsprechendes Bit = 1

Page 40: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Verwaltung freier Plattenblöcke

Page 41: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Belegung des Dateisystems• Belegung gegeben durch Anzahl genutzter I-Nodes und

Datenblöcke.• Dateisystem voll, wenn

– Keine I-Nodes mehr frei oder– Keine Datenblöcke mehr frei.

• Überprüfung mittels df:

$ df -iFilesystem Inodes IUsed IFree IUse% Mounted on/dev/hda2 64512 6437 58075 10% //dev/hda1 6024 33 5991 1% /boot

Page 42: Systeme 1 Kapitel 3 Dateisysteme. Hauptaufgaben: – Organisation programmexterner Daten Progamminterne Daten werden direkt von Anwendungsprogrammen im

Zusammenfassung• Objekte zur Datenspeicherung werden meist in

Verzeichnisbäumen in Form von Dateieinträgen verwaltet.

• Dateien und Verzeichnisse werden vom Dateisystem bereitgestellt.

• Der Verzeichnisbaum wird aus mehreren Dateisystemen zusammengebaut.

• Verschiedene Implementierungsvarianten für Dateisysteme

• Unterschiede liegen in Effizienz (Speicher und Laufzeit).• Geeignete Wahl des Dateisystems wird bestimmt durch

Eigenschaften des physikalischen Speichermediums.