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