So in dem Abschnitt will ich jetzt einfach mal Beispiele von in der Realität existierenden
oder früher existierenden Dateisystemen geben und will mich jetzt erstmal so auf ein paar sehr
simple Dateisystemen beschränken. Gut, FAT-Dateisystem hatte ich ja im Prinzip schon skizziert, wie das
läuft. Ein anderes wären die Unix-Dateisysteme, so das erste ab den 1970er Jahren eigentlich in
den ersten Unix-Systemen bereits entworfen worden und bis zur Unix System 5 in den 80er Jahren
durchaus verbreitet gewesen. Also das System 5.5 System ist so organisiert, dass man am Anfang in
den ersten Blöcken ein Bootblock hat. Da ist also die Information, um das Betriebssystem zu laden
drin und wenn ein Rechner hochgefahren wird, dann liest die Firmware des BIOS eben aus diesem
Block erstmal die Informationen und startet den Code, der da drin steht. Danach kommt der Superblock,
der enthält die Metainformationen oder die Verwaltungsinformationen für das Dateisystem.
Da steht also zum Beispiel drin, wie viele Blöcke das Dateisystem hat, wie viel Einnutz es in dem
Dateisystem gibt. Die Anzahl und auch eine Liste freier Blöcke und freier Einnutz ist da drin und
einige Attribute noch, zum Beispiel ein Modified Flag, das eben anzeigt, ob dieser Superblock
verändert worden ist. Also der wird in Hauptspeicher dann reingeladen und ob er verändert worden ist
oder nicht. Das ist einfach eine Frage, zum Beispiel wenn der Rechner abstürzt und der Superblock ist
unmodifiziert, ist das ein Indikator dafür, dass das Dateisystem unmodifiziert ist und dass man
eben die Konsistenz nicht prüfen muss. Beziehungsweise wenn er modifiziert wurde, dann muss sichergestellt
sein, dass eben auch alle Informationen des Dateisystems wirklich auf der Platte sind,
damit es konsistent ist. Im Anschluss daran kommen die Einnutz und am Ende, was heißt am Ende,
nach den Einnotblöcken kommen dann die eigentlichen Datenblöcke. Das große Problem bei dieser Art von
Dateisystem ist vor allem, dass die Einnutz nun ganz innen oder ganz außen, je nachdem wie man das
anordnet, typischerweise ganz innen auf den inneren Spuren der Platte liegen. Und wenn ich jetzt auf
der Datei zugreifen möchte, dann brauche ich jetzt erst mal den Einnutz, um die Nummern der
Datenblöcke zu finden. Das heißt, ich muss mit dem Plattenarm erstmal ganz nach innen gehen, muss
mir den Einnot lesen und dann mir die Datenblöcke zusammensuchen. Das heißt, ich habe alleine auf
grund dieser Verteilung Einnutz vorne, Datenblöcke danach, schon mal unvermeidbare Plattenarmbewegungen
und unter Umständen auch sehr große Plattenarmbewegungen, weil ich muss ja immer nach ganz
innen für die Einnutz und dann möglicherweise sehr weit nach außen für die Datenblöcke. Und
die Datenblöcke wurden damals tatsächlich in solchen verketteten Listen abgespeichert. Das
heißt, ich habe da in der Praxis wirklich auch so eine Fragmentierung bekommen, was durchaus
ungünstig war. Das war also seit den 1970er Jahren so in den ersten Unix-Systemen eben durchaus
weit verbreitet. Und man hatte 1980, um 1980, um an der Universität Berkeley ein Projekt, wo man sich
mit diesem Unix-System genauer beschäftigt hat, unter anderem auch mit dem Dateisystem und hat
da auch mal analysiert, wo sind da so die Probleme beim Dateisystem. Und das Ergebnis davon war
letztlich eine neue Dateisystemarchitektur, das Berkeley Fast File System mit der Unix-Version
BSD 4.2 erstmalig eingeführt. Und da hat man sich eben so ein paar Dinge überlegt, wie man das
Ganze optimieren kann. Man hat auf jeden Fall mal die Platte in Zylindergruppen unterteilt,
also jeweils so 10 bis 30 Zylinder werden zusammen verwaltet. Und pro Zylindergruppe gibt es dann
als erstes mal eine Kopie des Superblocks in jeder Zylindergruppe. Das ist letztendlich aus
Redundanzgründen, weil wenn der Superblock verloren geht, ist das immer besonders ungünstig,
weil dann hat man überhaupt keine Informationen mehr über die Plattengeometrie oder die
Dateisystemgeometrie. Und dann gibt es in jeder Zylindergruppe so ein Zylindergruppe Block,
der beschreibt letztendlich, wie viele Spuren das sind, wie viele Blöcke das sind und so weiter,
wie viel Einutz es da drin gibt. Und dann kommt pro Zylindergruppe erst mal eine Menge von Einutz
und dann eine Menge von Datenblöcken. Und das Dateisystem verwaltet also die freien Einutz und
auch die freien Datenblöcke einer jeder Zylindergruppe in diesem Zylindergrupp Block. Man kann also mit
wenig Plattenarmbewegung feststellen, wo habe ich freie Datenblöcke. Die freien Datenblöcke werden
als Bitterray verwaltet und dann wird vor allem versucht, eine Datei möglichst innerhalb einer
Zylindergruppe zu speichern. Das heißt, der Einut einer Datei und auch alle Datenblöcke einer Datei
werden innerhalb einer Zylindergruppe gehalten, sodass ich also auch beim Zugriff auf eine Datei
Presenters
Zugänglich über
Offener Zugang
Dauer
00:07:25 Min
Aufnahmedatum
2021-01-26
Hochgeladen am
2021-01-26 22:48:58
Sprache
de-DE