presentation-dateisysteme/dateisysteme.md

353 lines
6.7 KiB
Markdown
Raw Permalink Normal View History

2019-03-25 16:52:24 +01:00
Dateisysteme
============
Inhalt
------
- Was sind Dateisysteme
- Grundbegriffe
- Arten von Dateisystemen
- Beispiele
- Fragen?
Was sind Dateisysteme
=====================
Was sind Dateisysteme
---------------------
- Abstraktionsebene zwischen unstrukturiertem Speicher und Anwender /
Applikation
- angereichert um Verwaltungsdaten
- Dateiname
- Zugriffsrechte
- Interaktions-Zeiten
- Index der belegten / freien Speicherbereiche
2019-03-25 17:35:21 +01:00
Wozu Dateisysteme?
------------------
- Ohne Dateisysteme muss jede Applikation den Speicher selbst
organisieren
- Konsistenz und Integrität können ausgelagert werden
- Können für bestimmte Speicher optimiert werden, ohne alles andere zu
adaptieren
- Beispiel: F2FS/yaffs2 für NAND-Speicher (SSD, SD-Karten, …),
ISO9660 für CDs, …
2019-03-25 16:52:24 +01:00
Grundbegriffe
=============
Grundbegriffe
-------------
<dl>
<dt>
Blöcke
</dt>
<dd>
Zusammenfassung von Bytes im Speicher, die zusammen gelesen/geschrieben
werden
</dd>
<dt>
Speicher
</dt>
<dd>
Addressierbare Ablage für Daten
</dd>
<dt>
IOPS
</dt>
<dd>
I/O Operations Per Second, also Lese-/Schreiboperationen Pro Sekunde
</dd>
</dl>
<aside class="notes">
- Blöcke: Typischerweise 512 oder 4096 Bytes
- IOPS: Gezählt wird üblicherweise die Anzahl der Anweisungen an den
Controller, einen bestimmten Datenbereich zu schreiben.
</aside>
Grundbegriffe
-------------
<dl>
<dt>
Datei
</dt>
<dd>
Logische Gruppe von zusammengehörigen Daten
</dd>
<dt>
Verzeichnis
</dt>
<dd>
Logische Gruppe von Dateien
</dd>
</dl>
Arten von Dateisystemen
=======================
Lineare Dateisysteme
--------------------
- Älteste Form
- Typischer Einsatz: Lochkarten und Bandspeicher
- Kein zentraler Index der freien Blöcke, sondern verteilt
Flache Dateisystem
------------------
- Die frühesten Platten-Dateisysteme
- Keine Verzeichnisse
- Frei/Belegt-Index eine einfache Bitmap
- Alle Dateinamen + Metainformationen in der Master File Table
Hierarchische Dateisysteme
--------------------------
- Erweiterung der flachen Dateisysteme
- Bereits relativ früh
- Verezichnisse zur logischen Strukturierung
- Unter \*NIX oft nur eine spezielle Art Datei
Netzwerk Dateisysteme
---------------------
- „Speicher“ muss nicht lokal sein
- Zusätzliche Abstraktion von Netzwerk-Zugriffen
- Bekannteste Vertreter: NFS und CIFS („Windows Dateifreigabe“)
Verteile Dateisysteme
---------------------
- Speicher muss nicht lokal und nicht auf nur einem Host sein
- Verteilung meist Redundant und für den Client unsichtbar
- Beispiele: CephFS oder GlusterFS
- Vorteil oft erhebliches Durchsatzplus bei Leseoperationen
- Skalierung in die Breite leicht
Begriffe Teil 2
===============
Begriffe Teil 2
---------------
<dl>
<dt>
Cluster / Inode / Record
</dt>
<dd>
Zusammenfassung von Blöcken unabhängig von der Hardware
</dd>
<dt>
Bitmap
</dt>
<dd>
Teil innerhalb des Superblocks in dem über einzelne Bits markiert wird
welche Inodes frei/belegt sind
</dd>
<dt>
Master File Table / Superblock
</dt>
<dd>
Informationen zum Dateisystem: Größe, Größe der Inodes, Ort der
Backup-Superblöcke, …
</dd>
</dl>
Begriffe Teil 2
---------------
<figure>
<img src="linked-list-fs.svg">
<figcaption>
Beispiel des Aufbaus eines Linked List FS
</figcaption>
</figure>
Begriffe Teil 2
---------------
<figure>
<img src="indexed-fs.svg">
<figcaption>
Beispiel des Aufbaus eines Indexed FS
</figcaption>
</figure>
Begriffe Teil 2
---------------
<figure>
<img src="b-tree-fs.svg">
<figcaption>
Beispiel des Aufbaus eines B-Tree FS
</figcaption>
</figure>
Beispiele
=========
Alt: FAT12
----------
- Das erste Dateisystem von MS-DOS
- 8.3 Dateinamen
- 2 MFTs mit Bitmaps
- Linked List System, jeder Datenblock verweist auf den nächsten
- Maximale Volume-Größe: 32 MiB
Neuer: NTFS
-----------
- „New Technology File System“, Standard der NT-Familie seit Windows
NT 3.1
- 255 Zeichen Dateinamen
- Bitmap
- B-Tree
Linux: ext4
-----------
- Quasi-Nachfolger von ext2 und ext3
- Journalling
- B-Tree statt Indexed wie die Vorgänger
- Quasi-Default auf Linux
Ohne Inodes: ReiserFS
---------------------
- Ganzes FS großer B+-Tree
- Hohe Geschwindigkeit bei zufälligen Zugriffen
- Sehr schnell bei Verzeichnissen mit vielen Dateien
- Reiser3 leider veraltet, Reiser4 nicht fertig
Integrierter Volume Manager: ZFS
--------------------------------
- Ursprünglich auf Solaris, inzwischen auf fast jedem unixoiden OS
- Maximale Größe
- Volume: 2<sup>128</sup> Bytes
- Datei: 2<sup>64</sup> Bytes
- Eingebaut: Kompression, Deduplikation, RAID, Snapshots, …
- CDDL nicht mit GPLv3 kompatibel, darf deshalb nicht als Binary
und/oder teil des Linux-Kernels ausgeliefert werden
<aside class="notes">
ZFS komplett wäre noch mal eigener Vortrag
</aside>
Verteilter Speicher: CephFS
---------------------------
- CERN mit CephFS: 65 PB, 10.800 Disken
- Daten u.a. aus den LHC Experimenten
- ~ 300Gbps Schreibgeschwindigkeit
- Nutzt Ceph im Hintergrund
- Ceph: objekt-basierter, verteilter, redundanter Netzwerkspeicher
<aside class="notes">
Ceph: wäre noch mal eigener Vortrag
</aside>
Pseudo: procfs
--------------
- Dateispeicher dahinter ist der (Linux-)Kernel
- Interface zu `Proc`ess Informationen
- Jeder Prozess in der Form `/proc/<pid>` abgebildet, inkl. offene
Dateien, Kommandozeile, Umgebung, …
- Begrenzt können auch System-Settings bearbeitet werden
- Treiber-Zugriff inzwischen nach `/sys` per `sysfs` ausgelagert
<aside class="notes">
- Auch für FreeBSD verfügbar
</aside>
Links
=====
Links
-----
<dl>
<dt>
NTFS
</dt>
<dd>
https://de.wikipedia.org/wiki/NTFS
</dd>
<dt>
ext4
</dt>
<dd>
https://de.wikipedia.org/wiki/Ext4
</dd>
<dt>
Ceph
</dt>
<dd>
https://de.wikipedia.org/wiki/Ceph
</dd>
<dt>
Präsentation "Storage at CERN"
</dt>
<dd>
https://indico.cern.ch/event/649159/contributions/2761965/attachments/1544385/2423339/hroussea-storage-at-CERN.pdf
</dd>
</dl>
Links
-----
<dl>
<dt>
ZFS on Linux
</dt>
<dd>
https://zfsonlinux.org/
</dd>
<dt>
CDDL and GPL
</dt>
<dd>
https://en.wikipedia.org/wiki/License\_compatibility\#CDDL\_and\_GPL
</dd>
<dt>
Synthetic file system
</dt>
<dd>
https://en.wikipedia.org/wiki/Synthetic\_file\_system
</dd>
<dt>
exFAT
</dt>
<dd>
https://de.wikipedia.org/wiki/exFAT
</dd>
<dt>
Apple File System
</dt>
<dd>
https://de.wikipedia.org/wiki/Apple\_File\_System
</dd>
</dl>
Links
-----
<dl>
<dt>
Präsentation
</dt>
<dd>
https://gitlab.usrspace.at/everyone/presentation-dateisysteme
</dd>
<dt>
Verein `/usr/space`
</dt>
<dd>
https://usrspace.at
</dd>
</dl>
Präsentation ist [CC-BY-SA
4.0](https://creativecommons.org/licenses/by-sa/4.0/legalcode.de)
Fragen?
=======