Folien

Transcription

Folien
Implementierung von
Dateisystemen
Teil 2
Prof. Dr. Margarita Esponda
WS 2011/2012
M. Esponda-Argüero
44
Effizienz und Leistungssteigerung
Festplatten sind eine wichtige Komponente in jedem
Rechnersystem und gleichzeitig der wichtigste Engpass.
Was ist wichtig für eine effiziente Verwendung von
Festplatten?
- Allokations-Strategie
- Verzeichnis-Algorithmen
- Datentypen in Verzeichniseintrag
- Cluster-Größe
- Attribute
M. Esponda-Argüero
45
Disk-Caching
I/O ohne unifizierten Buffer-Cache
- Solaris, Linux, Windows NT, 2000, XP
M. Esponda-Argüero
46
Disk-Caching
Probleme
- Prozesse mit vielen
Ein-/AusgabeOperationen.
• priority paging
• Grenzen für die maximale Anzahl
von Seiten des Dateisystems
und für die maximale Anzahl von
Prozessor-Seiten.
unifizierter Buffer-Cache
- Unix, Linux
M. Esponda-Argüero
47
Schreibe-Operation
Kann synchron oder asynchron sein
Synchrone Schreibe-Operation
• Findet genau in der Reihenfolge statt, in der das DateiSubsystem die Operationen bekam.
• Die aufrufende Routine wartet, bis die Schreibe-Operation
den Plattentreiber erreicht hat.
M. Esponda-Argüero
48
Schreibe-Operation
Asynchrone Schreibe-Operation
• Die Daten werden im Cache gespeichert, und die
Kontrolle geht zurück an die aufrufende Routine.
• Ein explizites Flag wird in das open-Systemcall gesetzt,
um synchrone Schreibe-Operationen zu erzwingen. Das
ist oft sinnvoll für die Konsistenz der Information in
Datenbanken.
M. Esponda-Argüero
49
Scheduling-Algorithmen
Wenn Daten in das Dateisystem geschrieben werden,
werden diese im Puffer zwischengespeichert.
Der Plattentreiber kann die Schreibe-Operationen nach
verschiedene Kriterien sortieren, um die mechanischen
Bewegungen des Schreibe-Kopfs auf der Festplatte zu
minimieren.
M. Esponda-Argüero
50
Wiederherstellung (Recovery)
Ein Systemabsturz verursacht
- Inkonsistenzen zwischen Verzeichnisstrukturen, Verweise
auf freie Blöcke und Verweise auf freie FCBs
Feststellung von Inkonsistenzen
Bei Veränderungen von Metadaten des Dateisystems kann ein
Bit gesetzt werden, das dann zurückgesetzt wird, wenn die
Veränderungen erfolgreich beendet worden sind.
M. Esponda-Argüero
51
Wiederherstellung (Recovery)
Konsistenzprüfung
Ein Systemprogramm (fsck in UNIX oder chkdsk in Windows)
vergleicht Daten der Verzeichnisstrukturen mit der Belegung der
Datenblöcke auf der Festplatte und versucht, Inkonsistenzen zu
beheben.
Probleme
- nicht alle Fehler können korrigiert werden
- besonders schwer ist es, Fehler in Indextabellen zu beheben
- UNIX-cache-Verzeichnisse nur für Lese-Operationen.
- Schreibe-Operationen, die Speicherbelegung oder
Veränderungen von Metadaten verursachen, werden nur
synchron durchgeführt.
M. Esponda-Argüero
52
Konsistenz-Prüfung
Was kann alles passieren?
• Ein Block ist verloren gegangen
• Bedeutet Speicherplatz-Verschwendung
⇒ Die Liste der freie Blöcke muss aktualisiert werden
• Ein Datenblock ist doppelt als frei ausgewiesen
⇒ Die Liste der freie Blöcke muss korrigiert werden
• Ein Block kommt in zwei Dateien vor
• sehr problematischer Fall
⇒ Eine Datei wird gelöscht, damit der Block als frei
gekennzeichnet wird
⇒ der Block wird kopiert, damit beide Dateien einen
eigenen Block haben.
Der Benutzer muss benachrichtig werden, da eventuell keine
von beide Korrekturen richtig ist.
M. Esponda-Argüero
53
Backup
Automatische Datensicherung auf redundante Speichermedien
Wiederherstellung der Daten anhand der Backup-Kopien nach
Festplattencrash und anderen Katastrophen ist wichtig
Zwei Möglichkeiten:
- Vollständige Sicherung
• Alle Daten werden auf Backup-Medium kopiert
- Inkrementelle Sicherung (z.B.)
• Tägliche Sicherung der Daten, die sich in den letzten 24 Stunden
verändert haben.
• Sicherung (etwa am Wochenende) der Daten, die in der Woche
verändert worden sind.
• Die Daten werden erst nach einem Zyklus überschrieben.
• Von Zeit zu Zeit ⇒ Vollständige Sicherung, die nicht überschrieben
wird.
M. Esponda-Argüero
54
Log-basierte Dateisysteme
LFS Log-structured File System
Motivation
• Festplattenzugriffszeit ist ein Leistungsengpass.
• Eine große Anzahl von Lesezugriffen können direkt auf den
Platten-Cache stattfinden.
• Nach vielen Lesezugriffen folgen leider Schreibezugriffe
meistens in kleinen Stückchen.
• Schreibezugriffe sind sehr ineffizient.
M. Esponda-Argüero
55
Log-basierte Dateisysteme
LFS Log-structured File System
Grundlegende Idee ist:
• die gesamte Platte als Log zu strukturieren
• alle Schreibaufträge werden zuerst im Arbeitsspeicher gepuffert
• in regelmäßigen Abständen in Form eines einzelnen Segments unter Ausnutzung der vollen Festplattenbandbreite – auf die
Platte geschrieben
• das Segment kommt an das Ende des Logs
• Thread-Cleaner entfernen von hinten alte Segmente und legen
aktive Daten in den Speicher, damit diese erneut mit dem
nächsten Segment beschrieben werden.
• Die Buchhaltung ist nicht trivial, I-Nodes, I-Node-Map müssen
ständig aktualisiert werden.
M. Esponda-Argüero
56
Log-basierte Dateisysteme
In zeitlichen Abständen oder nach bestimmter Segmentgröße
Ein Segment (I-Nodes + Verzeichnis + Dateiblöcke) wird im das
Logbuch aufgeschrieben
Segmentanfang
Zusammenfassung des Segment-Inhaltes
I-Nodes
sind verstreut über das gesamte Logbuch
I-Node-Map
für schnellere Auffindung der I-Nodes
Nach Auffinden des I-Nodes
Auslesen der Blöcke wie gewohnt
M. Esponda-Argüero
57
Log-basierte Dateisysteme
LFS Log-structured File System
• Erstaunlich gute Ergebnisse
• Interessantes Konzept
• Leider sehr inkompatibel mit den existierenden
Dateisystemen
• nicht sehr weit verbreitet
Der Grundgedanke kann bei konventionellen Dateisystemen
verwendet werden.
• Robustheit gegenüber Fehler
• Protokoll (Log) über Aktionen wird geführt
Journaling-Dateisysteme
M. Esponda-Argüero
58
Journaling-Dateisysteme
Motivationsbeispiel:
Löschen einer Datei:
1. Löschen aus Ihrem Verzeichnis
2. Eintragen des I-Node in den Pool der freien I-Nodes
3. Eintragen aller Plattenblöcke in den Pool der freien
Plattenblöcke
Was passiert, wenn das System nach Schritt 1 abstürzt?
1. Eintragen des I-Node in den Pool der freien I-Nodes
2. Löschen aus Ihrem Verzeichnis
3. Eintragen aller Plattenblöcke in den Pool der freien
Plattenblöcke
Was passiert, wenn das System nach Schritt 1 abstürzt?
M. Esponda-Argüero
59
Journaling-Dateisysteme
Dateilöschen in Journaling-Dateisystem
1. Ein Log-Eintrag mit allen drei aufgelisteten Aktionen wird auf
die Platte geschrieben
2. Der Log-Eintrag wird von der Platte zurückgelesen, um
Integrität zu überprüfen
3. Dann beginnt die Ausführung der Operationen
4. Wenn alles erfolgreich durchgeführt wurde, wird der LogEintrag gelöscht.
Die Operationen im Log müssen idempotent sein. D.h. beliebige
Wiederholungen dürfen keine Fehler verursachen.
M. Esponda-Argüero
60
Log-basierte Dateisysteme
LFS Log-structured File System
Thread Cleaner
• durchsucht das Logbuch und räumt es auf
• liest das erste Segment des Logbuchs aus und vergleicht die INodes mit dem I-Node-Map
• noch aktive Elemente werden in den Speicher geladen und bei der
nächsten Aktualisierung auf die Platte geschrieben
• Eintragungen bereits gesicherter Elemente werden gelöscht
Zirkulärer Puffer
Schreiber fügt neue Segmente vorne an
Cleaner entfernt alte Segmente hinten
Ständige Aktualisierung der I-Nodes und des I-Node-Map notwendig
M. Esponda-Argüero
61
Journaling-Dateisysteme
• Log-aufzeichnende Dateisysteme behandeln jede Aktualisierung
des Dateisystems als eine Transaktion.
• Alle Transaktionen werden zuerst in eine Log-Datei geschrieben.
Eine Transaktion gilt als abgeschlossen, wenn sie in die Log-Datei
geschrieben wurde.
• Das Dateisystem ist zu diesem Zeitpunkt noch nicht aktualisiert.
• Danach wird das Dateisystem asynchron geändert. Nach
Vollendung der Aktualisierung wird die Transaktion vom Log
entfernt.
• Bei Systemabsturz müssen noch alle im Log eingetragenen
Transaktionen durchgeführt werden.
M. Esponda-Argüero
62
Journaling-Dateisysteme
NTFS
New Technology File System
Microsoft
- Metadaten-Journaling
- automatische Fehlerkorrektur
ext3 Linux
journal
• Geplante Veränderungen von Metadaten und Dateiinhalten
werden gespeichert.
ordered
• nur Metadaten-Veränderungen werden gespeichert
• Aktualisierungen werden aber erst nach dem Veränderungen
der Dateiinhalte abgeschlossen.
writeback
• nur Veränderung der Metadaten werden gespeichert
• Veränderungen der Dateiinhalte können auch nach der
Aktualisierung des Journals stattfinden.
M. Esponda-Argüero
63