Anmelden

Schlüsseltechnologie· Staffel 1· Folge 31

STP031: Festplatten und Dateisysteme

Donnerstag, 19. Januar 2023 · 1 h 42

MP3

Shownotes

<p>Mit dieser Episode kehrt STP zum Ursprung zurück, denn das initiale Ereignis hatte ebenfalls mit Dateisystemen zu tun.
Hier sprechen wir aber über deutlich mehr und auch andere Sachen. Darunter: Dinge, von denen Xyrill wenig bis keine Ahnung hat (physikalische Anschlüsse) und Dinge, von denen Xyrill deutlich mehr Ahnung hat (die Software dahinter und deren Verwendung). ttimeless raschelt derweil mit einer dicken Winterjacke.</p><h2>Shownotes</h2><ul>
<li>
<p><a href="de.wikipedia.org/wiki/Datenblock">bloc… Speicher ("Block Storage")</a></p>
<ul>
<li>Festplatten handeln immer nur in festen Einheiten (Blöcken)</li>
<li>traditionellerweise 512 Byte, heutzutage 4 KiB</li>
</ul>
</li>
<li>
<p>kurzer Überblick zur physikalischen Anbindungen blockbasierter Speicher</p>
<ul>
<li><a href="de.wikipedia.org/w/index.php?title=Universal_S… (Universal Serial Bus)</a>: für externe Festplatten, CD-Laufwerke, <em>*räusper*</em> Mini-Raketenwerfer <em>*räusper*</em>, etc.</li>
<li><a href="de.wikipedia.org/w/index.php?title=Serial_ATA&… (Serial AT Attachment)</a>: für interne Festplatten, kabelgebundene Punkt-zu-Punkt-Verbindungen</li>
<li><a href="de.wikipedia.org/w/index.php?title=Serial_Atta… (Serial Attached SCSI)</a>: für interne Festplatten, kabelgebundene Verbindungen auch mit Switching (mehrere Festplatten an einem Verteiler)</li>
<li><a href="de.wikipedia.org/w/index.php?title=NVM_Express… (Non-Volatile Memory Express)</a>: für interne Festplatten, direkte Steckverbindung via PCI Express</li>
<li><a href="web.archive.org/web/20220929192234/https://old… alles immer seriell?</a> Höhere Geschwindigkeiten = Synchronisierung immer schwieriger. Parallele Leitungen = Übersprechen/Interferenz = komplexe Kompensation notwendig bzw. bei flexiblen Systemen wie Kabeln nicht möglich.</li>
</ul>
</li>
<li>
<p>Rückbezug zu STP012: "Dateisysteme sind eine besondere Form von Key-Value-Datenbank"; keine Datenbank im engeren Sinne:</p>
<ul>
<li>keine widerspruchsfreie Speicherung, da keine Beziehungen zwischen verschiedenen Dateien möglich</li>
<li>keine Unterstützung für bedarfsgerechte Darstellungsformen; jede Datei hat genau ein Format</li>
</ul>
</li>
<li>
<p>alternative Perspektive als Vergleich zum blockbasierten Speicher</p>
<ul>
<li>jede Datei ist ihr eigener "kleiner Massenspeicher"</li>
<li>zusätzlich noch Metadaten (Dateiname, Erstelldatum, Zugriffsrechte, etc.)</li>
<li>Dateisystem kümmert sich um die Zuteilung des tatsächlichen blockbasierten Speichers an die einzelnen Dateien</li>
<li>Praxisbeispiel zur Zuteilung von Speicherplatz: Unix-Befehl <code>du -h</code> ("disk usage")</li>
</ul>
</li>
<li>
<p>Dateisystem-Struktur unter unixoiden Betriebssystemen: mittels <a href="de.wikipedia.org/w/index.php?title=Inode&o…;
<ul>
<li>ein Inode enthält alle Metadaten zu einem bestimmten Dateisystemeintrag (einer Datei, einem Verzeichnis, einer Verknüpfung, etc.) sowie (bei normalen Dateien) einen Verweis auf den Speicherort der tatsächlichen Daten</li>
<li>Größe eines Inodes: immer ein Vielfaches der Blockgröße (4 KiB, 8 KiB, etc.)</li>
<li>bei sehr kleinen Dateien mitunter direktes Ablegen des Dateiinhaltes im Inode</li>
<li>bei großen Dateien meist fragmentierter Inhalt: Ablage in mehreren separaten Stücken (wegen späterer Umschreibung oder wegen Platzmangel)</li>
<li>Verzeichnisse: Inode mit einer Liste von Einträgen (Name + Inode-Verweis)</li>
<li>Dateisystem = Inode-Liste + Dateiinhalte + Übersicht über noch freie Festplattenbereiche</li>
</ul>
</li>
<li>
<p>"aktuelle" Entwicklungen in Dateisystemen</p>
<ul>
<li><a href="de.wikipedia.org/w/index.php?title=Journaling-…; (in NTFS seit 1993, in ext3 seit 2001): Transaktionen werden in einem separaten Festplattenbereich vorgemerkt, bevor sie tatsächlich ausgeführt werden; ermöglicht Abgeschlossenheit und Dauerhaftigkeit analog zum Write-Ahead-Log bei Datenbanken (siehe STP012), außerdem schnelleren Start nach Systemausfall (keine Komplettprüfung des Dateisystems nötig)</li>
<li><a href="de.wikipedia.org/w/index.php?title=Fragmentier…)&oldid=201408972">Online-Defragmentierung</a> bzw. optimierte Speicherzuteilung zur Vermeidung von Fragmentierung (aber: aktives Defragmentieren = mehr Schreibzyklen = mehr Abnutzung)</li>
</ul>
</li>
<li>
<p>antiintuitive Schlussfolgerungen aus dieser Struktur</p>
<ul>
<li>"sicheres Löschen": einfaches Löschen einer Datei löscht nur den Inode, aber überschreibt nicht den Inhalt (selbst Überschreiben der Datei hilft nicht unbedingt, weil die neuen Daten vielleicht an einer anderen Stelle landen, oder weil die alten Daten trotzdem noch im Journal liegen)</li>
<li>Löschen von im Verbrauch befindlichen Dateien: kein Problem, eine "geöffnete Datei" ist nur ein Verweis auf einen Inode; "Löschen der Datei" löscht nur den Verzeichnis-Eintrag; der Inode bleibt noch so lang bestehen, wie ein Prozess einen Verweis auf den Inode hält</li>
<li>anders bei Windows: Verweis auf eine offene Datei blockiert das Löschen -> Konsequenzen für System-Updates</li>
</ul>
</li>
<li>
<p>Exkurs 1: virtuelles Dateisystem</p>
<ul>
<li>bis hier: physikalische Perspektive (Welche Bits stehen tatsächlich auf der Platte?)</li>
<li>jetzt: logische Perspektive (Was zeigt das Betriebssystem den Programmen?)</li>
<li>Unix: ein einziger Verzeichnisbaum, in das die verschiedenen Dateisysteme <a href="de.wikipedia.org/w/index.php?title=Mounten&…; werden können; anders als das System mit Laufwerksbuchstaben unter Windows</li>
<li>"Datei" und "Verzeichnis" als abstrakte Konzepte, die u.a. durch echte Dateisysteme abgebildet werden können, oder auch durch was anderes (vgl. <a href="de.wikipedia.org/w/index.php?title=Everything_… is a file."</a>)</li>
<li>Beispiel: <a href="de.wikipedia.org/w/index.php?title=Procfs&…;
<li>Beispiel: <a href="de.wikipedia.org/w/index.php?title=SSHFS&o…;
<li>Beispiel: transparente Behandlung von Zip-Archiven im Windows Explorer</li>
<li>Beispiel: <a href="de.wikipedia.org/w/index.php?title=/dev/random…; etc.</li>
</ul>
</li>
<li>
<p>Exkurs 2: Festplattenverschlüsselung</p>
<ul>
<li>Option 1: auf der Ebene des Dateisystems (einzelne Dateien oder Verzeichnisse werden verschlüsselt)</li>
<li>Option 2: auf der Ebene des blockbasierten Speichers -> Dateisystem sieht als Speichermedium einen <em>virtuellen</em> blockbasierten Speicher, der die Verschlüsselung vornimmt und erst dann auf den tatsächlichen blockbasierten Speicher schreibt -> schöne Arbeitsteilung</li>
<li>andere Anwendungsfälle für virtuelle blockbasierte Speicher: Netzwerklaufwerke, Dateisysteme innerhalb von Dateien</li>
</ul>
</li>
</ul>

Anmelden oder registrieren

Jetzt

0:00 / 0:00