---
author: Carl Kittelberger
title: Dateisysteme
date: 2017-06-02

papersize: a4
documentclass: report
classoption: oneside
#classoption: draft
mainfont: Arial
sansfont: Arial
fontsize: 12pt

toc: true

header-includes:
    # For \textcolor
    - \usepackage{xcolor}
    
    # Long tables (used by pandoc latex template itself)
    - \usepackage{longtable}
    
    # Localization to German for all package injections
    - \usepackage[ngerman]{babel}

    # Fancy header!
    - \usepackage{fancyhdr}
    - \usepackage{graphicx}
    - \pagestyle{fancy}
    - \fancyhf{}
    - \fancyhead[L]{\bfseries{\large{ITS \\ Dateisysteme}}}
    - \fancyhead[R]{\raisebox{-0.1\height}{\includegraphics[height=32pt]{img/steinbeis.png}}}
    - \fancyfoot[L]{\textcolor{gray}{Carl Kittelberger}}
    - \fancyfoot[R]{\textcolor{gray}{\bfseries{Seite \thepage}}}
    - \renewcommand{\headrulewidth}{0.4pt}
    - \renewcommand{\footrulewidth}{0.4pt}
    - \setlength\headheight{36pt}
    - \fancypagestyle{plain}{}
---

\newpage

# Strukturierung einer Festplatte

![Einteilung einer Festplatte in Spuren und Sektoren](img/00-dateisysteme/abbildung_a.png)

Eine Festplatte wird an sich so aufgeteilt, dass die Daten darauf für den Computer zuverlässig addressierbar werden. Dies geschieht dadurch, dass die Festplatte zuerst in Datenringe eingeteilt wird, die sich dann **Datenspuren** nennen. Diese Spuren wiederum werden in jeweils gleich lange Segmente eingeteilt, das sind dann die **Datensektoren**.

# Begriffsklärung

Ein Dateisystem ist eine Verwaltungsabstraktion der Daten auf einer Festplatte mittels Zeigereinträgen und weiteren Metadaten wie Dateinamen und Dateigrößen. Jedes Dateisystem macht auf unterschiedliche Art und Weise Nutzen von dem zur Verfügung stehenden Speicher, hat daher eine eigene Stärke und kann unterschiedliche Aspekte eines Betriebssystems zum eigenen Vorteil nutzen.

In der Regel können mehrere Dateisysteme auf der gleichen Festplatte durch Partitionierung gleichzeitig existieren, andere Dateisystem erlauben auch die Verbindung mehrerer Festplatten oder verschiedener Partitionen auf mehreren Festplatten zu einem großen Speicher.

![Auflistung einer SSD-Partitionierung mit `parted`](img/00-dateisysteme/abbildung_b.png)

# Oft verwendete Dateisysteme

## FAT

Das FAT-Dateisystem (kurz für *File Allocation Table*) ist einer der ältesten Dateisysteme und wird hauptsächlich seit DOS auf Computern eingesetzt. Auch bei modernen Betriebssystemen wird FAT immer noch oft zur portablen und weitestgehend kompatiblen Speicherung von Dateien auf USB-Sticks verwendet.

FAT teilt den gesamten Speicher in so genannte Cluster ein, welche abgegrenzte Datensegmente darstellen. Die maximale Anzahl solcher Cluster ist limitiert, somit kann es vor allem bei vielen großen Dateien dazu kommen, dass trotz ungenutztem echten Speicherplatz ein Speichern von Daten nicht mehr möglich ist.

Es gibt zwei oft anzutreffende Variationen von FAT, FAT16 und FAT32, die jeweils mit unterschiedlichen maximalen Partitionsgrößen und Clusteranzahlen arbeiten und somit unterschiedliche Dateianzahlen und -größen zulassen. Heutzutage kommt eigentlich nur noch FAT32 zum Einsatz, vor allem auf portablen Medien wie USB-Speichersticks, SD-Karten u. Ä.

## NTFS

Das NTFS-Dateisystem (*New Technology File System*) wurde von Microsoft im Zuge der Entwicklung des NT-Kernels für ihr Windows-Betriebssystem entwickelt. Ein Hauptvorteil von NTFS gegenüber von vor allem FAT ist die Möglichkeit, einzelnen Dateien oder Verzeichnissen fein festgelegte Berechtigungen zuzuweisen. So ist es zum Beispiel möglich, auf einen Ordner bestimmten Benutzern Vollzugriff zu geben, während andere Benutzer eventuell nur Lesezugriff oder gar keinen Zugriff erhalten. Dieses Berechtigungssystem nennt sich auch ACL (*Access Control List*).

Das NTFS-Dateisystem ist bis heute sehr aktiv bei allen modernen Windows-Betriebssystemen inkl. Windows 10 im Einsatz.

## ext2/3/4

ext2/3/4 (*second/third/fourth extended filesystem*) sind hauptsächlich auf Linux-Installationen verwendete Dateisysteme. ext2 is dabei die älteste Version, mit ext3 als größere Erweiterung zu ext2 mit Journaling-Funktionalitäten. Die neueste Version ext4 hebt die Einschränkungen der vorherigen Versionen an indem es größere Dateien und Partitionsgrößen zulässt und die maximale Anzahl von Unterverzeichnissen in einem Verzeichnis erhöht. Außerdem wurden weitere Optimierungen eingeführt die die Performance des Dateisystems insgesamt verbessern. Die ext-Dateisysteme erlauben einfache Rechteverwaltung auf Basis von Informationen über den Besitzer und die Gruppe des Besitzers. Das Setzen der Rechte geschieht unter Linux üblicherweise über den `chmod` Befehl der die Rechte für den Besitzer, die Besitzergruppe und alle anderen in Zahlenform entgegennimmt.

ext4 ist heutzutage Standard bei neuen Linuxinstallationen und verbreitet sich daher zügig.

# Spezielle Dateisysteme

Die folgenden Dateisysteme sind Beispiele die für spezielle Zwecke oder Anforderungen zum Einsatz kommen.

## zfs

zfs (*Zettabyte File System*) ist ein für extrem große Festplattengrößen optimiertes Dateisystem. Zur Laufzeit erstellt der zfs-Treiber auf dem entsprechenden Betriebssystem im RAM einen recht großen Cachespeicher, den dieser dann mit Verlinkungen zu oft verwendeten Daten auf der Festplatte befüllt, während diese Verlinkungen auch auf der Festplatte selbst aufgezeichnet werden. Dadurch, dass diese Daten komplett im RAM bereitstehen, entsteht ein immenser Geschwindigkeitsvorteil, vor allem bei per RAID zusammengeschalteten Festplatten, allerdings ist der offensichtliche Nachteil die riesige Menge an RAM die benötigt wird. Diese Menge hängt auch von der insgesamten Speichergröße ab.

## VMFS

VMFS (*Virtual Machine File System*) wurde von VMware entwickelt als Dateisystem zur Verwaltung von Festplattendaten von virtuellen Maschinen. Im Speziellen kann dieses Dateisystem sicherstellen, dass der Betrieb virtueller Maschinen nicht dadurch gestört wird, dass ein Programm oder eine zweite virtuelle Maschine gleichzeitig auf die gleichen Daten zugreift. Es erlaubt außerdem das Anlegen virtueller Festplatten über Festplattengrenzen hinweg, solange weitere Festplatten existieren die den zusätzlichen benötigten Speicher anbieten können.

## OverlayFS/Overlay2

OverlayFS ist ein quelloffenes Dateisystem das auf Linux verwendet wird um logische Kombinationen verschiedener vorher existierender Dateisysteme anzubieten. Dieses Dateisystem wird vor allem in Zusammenhang mit so genannten Linux-Containern verwendet, da Containerverwaltungssoftware oft über das Internet bereitgestellte Dateisystemschichten zusammensetzen muss um eine komplette Betriebssystemumgebung für zu betreibende Software automatisiert bereitstellen zu können. Dies wiederum ermöglicht das reproduzierbare und portable Ausführen von jeglicher Software ohne den oft nervigen und komplexen Installationsaufwand.

# Anlegen eines Dateisystems auf der Festplatte

Um ein Dateisystem auf Festplatten anlegen zu können benötigt es immer eine entsprechende Softwareimplementierung. Die Implementierung ist für jedes Betriebssystem unterschiedlich. Allgemein muss jedoch bevor das Dateisystem angelegt werden kann immer zumindest eine leere Rohpartition auf der Festplatte vorangelegt sein.

## Windows

Unter Windows übernimmt das Betriebssystem selbst die Erstellung des Dateisystems. In der grafischen Benutzeroberfläche muss im Windows Explorer die entsprechende Partition mit der rechten Maustaste angeklickt und darauf der Unterpunkt **Formattieren...** aufgerufen werden. Über die Eingabeaufforderung kann die Formattierung mit dem `format`-Tool durchgeführt werden. Um zum Beispiel ein FAT32-Dateisystem auf der Partition die `F:` benannt wurde anzulegen, kann der Befehl `format /FS:FAT32 /Q`, wobei der `/Q`-Parameter optional ist und die Formattierung beschleunigt indem es die komplette Überschreibung der vorherigen Daten mit Null-Bytes überspringt.

## Linux

Unter Linux existieren für die meisten Dateisysteme jeweilige `mkfs`-Werkzeugprogramme. Diese Programme benötigen einen Pfad zu der Partition auf der das Dateisystem angelegt werden soll. So kann zum Beispiel mit `mkfs.ext4 /dev/sda1` die erste Partition auf der ersten erkannten Festplatte auf dem System mit einem leeren ext4-Dateisystem beschrieben werden.

Im Gegensatz zu Windows können unter Linux sehr oft Softwarepakete nachinstalliert werden die es erlauben auf weitere Dateisysteme zuzugreifen.

\clearpage

# Quellenangaben

Alle Quellen wurden zuletzt am 15.07.2017 geprüft.

- [http://www.allround-pc.com/artikel/wissen/2009/fat32-ntfs-exfat-was-man-ueber-diese-dateisysteme-wissen-sollte](http://www.allround-pc.com/artikel/wissen/2009/fat32-ntfs-exfat-was-man-ueber-diese-dateisysteme-wissen-sollte)
- [http://www.informatik.uni-ulm.de/ni/Lehre/WS03/TechInf2/2003w-TI2-D3-4.pdf](http://www.informatik.uni-ulm.de/ni/Lehre/WS03/TechInf2/2003w-TI2-D3-4.pdf)
- [https://de.wikipedia.org/wiki/Dateisystem](https://de.wikipedia.org/wiki/Dateisystem)
- [https://de.wikipedia.org/wiki/Ext4](https://de.wikipedia.org/wiki/Ext4)
- [https://opensource.com/article/17/5/introduction-ext4-filesystem](https://opensource.com/article/17/5/introduction-ext4-filesystem)
- [https://wiki.ubuntuusers.de/ext/](https://wiki.ubuntuusers.de/ext/)
- [https://www.heise.de/ct/artikel/Das-Linux-Dateisystem-Ext4-221262.html](https://www.heise.de/ct/artikel/Das-Linux-Dateisystem-Ext4-221262.html)
- [http://www.admin-magazin.de/Online-Artikel/ZFS-Snapshots-RAID-und-Datensicherheit](http://www.admin-magazin.de/Online-Artikel/ZFS-Snapshots-RAID-und-Datensicherheit)
- [http://www.searchstorage.de/definition/VMware-VMFS-Virtual-Machine-File-System](http://www.searchstorage.de/definition/VMware-VMFS-Virtual-Machine-File-System)
- [https://www.heise.de/open/meldung/Linux-Kernel-mit-OverlayFS-Dateisysteme-uebereinander-lagern-2432269.html](https://www.heise.de/open/meldung/Linux-Kernel-mit-OverlayFS-Dateisysteme-uebereinander-lagern-2432269.html)
