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?
|
|
|
|
=======
|