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
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, …
Grundbegriffe
=============
Grundbegriffe
-------------
Blöcke
Zusammenfassung von Bytes im Speicher, die zusammen gelesen/geschrieben
werden
Speicher
Addressierbare Ablage für Daten
IOPS
I/O Operations Per Second, also Lese-/Schreiboperationen Pro Sekunde
Grundbegriffe
-------------
Datei
Logische Gruppe von zusammengehörigen Daten
Verzeichnis
Logische Gruppe von Dateien
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
---------------
Cluster / Inode / Record
Zusammenfassung von Blöcken unabhängig von der Hardware
Bitmap
Teil innerhalb des Superblocks in dem über einzelne Bits markiert wird
welche Inodes frei/belegt sind
Master File Table / Superblock
Informationen zum Dateisystem: Größe, Größe der Inodes, Ort der
Backup-Superblöcke, …
Begriffe Teil 2
---------------
Begriffe Teil 2
---------------
Begriffe Teil 2
---------------
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: 2128 Bytes
- Datei: 264 Bytes
- Eingebaut: Kompression, Deduplikation, RAID, Snapshots, …
- CDDL nicht mit GPLv3 kompatibel, darf deshalb nicht als Binary
und/oder teil des Linux-Kernels ausgeliefert werden
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
Pseudo: procfs
--------------
- Dateispeicher dahinter ist der (Linux-)Kernel
- Interface zu `Proc`ess Informationen
- Jeder Prozess in der Form `/proc/` abgebildet, inkl. offene
Dateien, Kommandozeile, Umgebung, …
- Begrenzt können auch System-Settings bearbeitet werden
- Treiber-Zugriff inzwischen nach `/sys` per `sysfs` ausgelagert
Links
=====
Links
-----