[[Vorlage(Getestet, general)]] [[Inhaltsverzeichnis(2)]] Dateisysteme sind die Schnittstellen zwischen dem Betriebssystem und den Partitionen auf [:Datenträger:Datenträgern]. Sie organisieren die geordnete Ablage von Daten. Als Benutzer bekommt man von der Arbeit eines Dateisystems nicht viel mit. Man sieht nur, dass Dateien oder Verzeichnisse vorhanden sind, nicht aber wo und wie diese Daten auf dem Datenträger organisiert, gespeichert werden. Diese Arbeit übernimmt das Dateisystem. Es richtet eine Art Inhaltstabelle ein, in der alle Dateien (auch Verzeichnisse) und ihre Speicheradressen verwaltet werden. Neben einer solchen grundlegenden Datenorganisation stellen die verschiedenen Dateisysteme noch unterschiedliche zusätzliche Möglichkeiten zur Verfügung. Dieser Artikel verdeutlicht einige der Unterschiede zwischen den verschiedenen Dateisystemen. Das Dateisystem ist nur eine Ebene im Bereich der Datenhaltung. Daneben gibt es zum Beispiel noch „Geräte“ und „Partitionen“. Für einen Überblick wird der Artikel [:Datenverwaltung:] empfohlen. Dieser Artikel beschreibt nicht die [:Verzeichnisstruktur:] von Linux! = Was macht ein Dateisystem? = Neben der Datenorganisation auf dem Datenträger kann ein Dateisystem zusätzliche Möglichkeiten zur Verfügung stellen. Beispiele sind: * Verzeichnisse und Unterverzeichnisse anlegen * Datumsinformationen speichern (Erstellungsdatum, letzte Änderung, Zugriff) * Lange Dateinamen verwenden * Groß- und Kleinschreibung für Dateinamen berücksichtigen * Sonderzeichen für Dateinamen ermöglichen (z.B.: Leerzeichen) * [:Rechte: Rechteverwaltung] zur Zugriffssteuerung auf Dateien/Verzeichnisse * [wikipedia:Journaling:]-Funktionen = Dateisystem und Formatierung = Ein Dateisystem wird einer Partition durch Formatierung zugewiesen, „''man formatiert mit einem Dateisystem''“. Hierbei werden auf einer Partition bestimmte Stellen für die Verwaltung reserviert und mit vordefinierten Werten überschrieben (was zu Datenverlust führt). Außerdem wird eine Inhaltstabelle angelegt und die ersten Werte (für die reservierten Stellen) eingetragen. {{{#!vorlage Hinweis Besonderheit '''/swap''':\\ Obwohl die Swap-Partition kein Dateisystem im eigentlichen Sinne enthält, ist auch hier ein Formatieren notwendig. Wird bei der Installation von Ubuntu eine Swap-Partition erstellt, so wird die Formatierung automatisch durchgeführt. Siehe auch: [:Swap:] }}} Die [:Formatieren:Formatierung] kann entweder mit grafischen Programmen wie [:GParted:] durchgeführt werden oder man benutzt die Terminalprogramme '''mke2fs''' bzw. '''mkfs''' (Für Beschreibungen der Terminalbefehle siehe die entsprechenden [:man:manpages]). {{{#!vorlage Warnung Da eine Formatierung unweigerlich einen Datenverlust mit sich bringt, sollte man die Daten vorher [:Datensicherung: sichern]! }}} {{{#!vorlage Experten Durch die Formatierung mit einem Dateisystem sind eventuell vorhandene alte Daten nicht mehr direkt lesbar, weil die alte Inhaltstabelle überschrieben wird. Die Daten selber sind in der Regel aber noch vorhanden. Will man seine Daten wirklich löschen (unbrauchbar machen), muss die gesamte Partition überschrieben werden. Siehe [:Daten_sicher_löschen:]. Wer versehentlich eine Partition formatiert hat, kann versuchen, diese mit [http://www.cgsecurity.org/wiki/TestDisk_DE Testdisk] {de} wiederherzustellen. Siehe auch [:Datenrettung#Partitionen-retten:] }}} = Warum braucht Linux ein spezielles Dateisystem? = Linux nutzte bis ca. 1992 das Dateisystem [wikipedia:Minix-Dateisystem:Minix], was aber aus unterschiedlichen Gründen ( max. Partitionsgröße 64 MB, Dateinamen durften nur 14 Zeichen lang sein) nicht mehr den Ansprüchen genügte. Als Alternative bot sich das ext-Dateisystem an, welches (fast) allen Anforderungen gerecht wurde. Moderne Linux-Dateisysteme müssen unter anderem folgende Eigenschaften besitzen: * [:Rechte: Rechteverwaltung]: Linux wurde von vornherein als Mehrbenutzer- Serverbetriebssystem konzipiert. Damit nicht ein Nutzer auf die Daten eines anderen Benutzers zugreifen kann, ist eine Rechteverwaltung nötig, die solche Zugriffe unterbindet. Ebenso verhindert die Rechteverwaltung, dass ein Nutzer direkten Zugriff auf das Betriebssystem hat. Somit kann ein Nutzer nicht ungewollt die Betriebssystemeinstellungen „verbiegen“. * [:ln#Symbolische-Verknuepfungen: symbolische Verknüpfungen]: Dateisysteme, die diese Fähigkeiten nicht bieten, scheiden von vornherein aus. * Linux ist ein offenes, freies Betriebssystem. Die verwendeten Komponenten sollen auch diesen Maßstäben entsprechen. {{{#!vorlage Hinweis Dateisysteme, die diese Eigenschaften nicht besitzen (wie z.B.: FAT oder NTFS), sind für eine Installation von Ubuntu/Linux nicht geeignet! }}} = Unterschiede = == Grundlegende Merkmale == || Dateisystem || technischer Stand || Von Betriebssystem unterstützt || [:Rechte: Rechteverwaltung] || [wikipedia:Journaling:] || ||<-2> '''[:Btrfs:]''' || Standard in Suse Linux, optional bei allen Distributionen seit 2014 || Linux,ReactOS ||<:> ✅ ||<:> [wikipedia_en:Journaling_file_system#Metadata-only_journaling: Nur Metadaten] || ||<|3 > '''[:ext: ext...]'''|| '''...2''' || Ehemaliges Standarddateisystem, sehr ausgereift, aber aufgrund fehlender Journal-Funktion sehr langsam bei den Dateisystem-Checks || Linux; BSD; Windows mit [sourceforge2:ext2fsd:ext2fd] {en} oder [http://www.paragon-software.com/de/home/extfs-windows/ ExtFS für Windows] {de}; MacOS X mit [http://www.paragon-software.com/de/home/extfs-mac/index.html ExtFS-Treiber] {de} ||<:> ✅ ||<:> ❌ || || '''...3''' || Ehemaliges Standarddateisystem || Linux; BSD; Windows mit [sourceforge2:ext2fsd:] {en} oder [http://www.paragon-software.com/de/home/extfs-windows/ ExtFS für Windows] {de}; MacOS X mit [http://www.paragon-software.com/de/home/extfs-mac/index.html ExtFS-Treiber] {de} ||<:> ✅ ||<:> ✅ || || '''...4''' || Aktuelles Standarddateisystem für Ubuntu || Linux; Windows mit [sourceforge2:ext2fsd:ext2fd] {en} oder [http://www.paragon-software.com/de/home/extfs-windows/ ExtFS für Windows] {de}; MacOS X mit [http://www.paragon-software.com/de/home/extfs-mac/index.html ExtFS-Treiber] {de} ||<:> ✅ ||<:> ✅ || ||<-2> '''JFS''' || Kompromiss aus Schnelligkeit und Sicherheit || Linux; Unix; OS/2 ||<:> ✅ ||<:> [wikipedia_en:Journaling_file_system#Metadata-only_journaling: Nur Metadaten] || ||<-2> '''ReiserFS''' || war lange Standarddateisystem vieler Distributionen ||Linux; BSD; Windows mit kommerz. Zusatztreiber ||<:> ✅ ||<:> ✅ || ||<-2> '''Reiser4''' || experimentell, schon sehr lange in der Entwicklung || Linux (nur mit Kernelpatch) ||<:> ✅ ||<:> ✅ || ||<-2> '''XFS''' || ausgereift und stabil, im Desktop-Bereich aber nicht sehr verbreitet || Linux; Unix; BSD ||<:> ✅ ||<:> ✅ || ||<|3 > '''FAT...''' || '''...12''' ||<|3> Dateisysteme von Microsoft, als Installationsdateisystem für Linux nicht geeignet ||<|3> Windows; Linux; BSD; Mac OS ||<:> ❌ ||<:> ❌ || || '''...16''' ||<:> ❌ ||<:> ❌ || || '''...32''' ||<:> ❌ ||<:> ❌ || ||<-2> '''[:exFAT:]''' || proprietär, speziell für [wikipedia:Flash-Speicher:Flash-Speicher], als Installationsdateisystem für Linux nicht geeignet || Windows; Linux, FreeBSD via FUSE-Treiber; Mac OS ||<:> ❌ ||<:> ❌ || ||<-2> '''NTFS''' || das Standarddateisystem von Windows ab Windows XP, als Installationsdateisystem für Linux nicht empfohlen || Windows; Linux; BSD; Mac OS ||<:> [:Windows-Partitionen_einbinden/NTFS-3G#UNIX-Dateirechte-und-POSIX-ACL:in Linux bedingt verwendbar]^^(*)^^ ||<:> [wikipedia_en:Journaling_file_system#Metadata-only_journaling: Nur Metadaten] || ||<-2> '''[:Archiv/ZFS_on_Linux:ZFS]''' || Standarddateisystem unter Solaris || Solaris; Linux; BSD ||<:> ✅ ||<:> ✅ || ^^(*)^^ NTFS besitzt zwar ein Rechte-System, dies funktioniert aber standardmäßig nur unter Windows. Optional bietet der Dateisystem-Treiber [:Windows-Partitionen_einbinden/NTFS-3G:NTFS-3G] jedoch die Möglichkeit, Linux-Dateirechte und sogar auch POSIX-ACL in NTFS-Partitionen zu verwalten. Eine Synchronisation der Linux-Dateirechte mit dem Rechte-System für Windows ist (mit gewissen Einschränkungen) über ''ntfs-user-mapping'' möglich. Der seit Ubuntu 22.04 optional verwendbare Kernel-Treiber NTFS3 erlaubt ebenfalls eine Verwaltung von Linux-Dateirechten. Diese ist aber mit der von NTFS-3G nicht kompatibel. == Weitere Merkmale == || Dateisystem || max. Dateigröße [#Datei-Partitionsgroesse Hinweis] || max. Partitionsgröße [#Datei-Partitionsgroesse Hinweis] || Nicht erlaubte Zeichen || Max. Dateinamenlänge [#Hinweise Hinweise] || erweiterte Attribute [:ACL:] || ||<-2> '''[:Btrfs:]''' || 16 EiB || 16 EiB ||<:> / || Bis zu 255 Zeichen (255 Bytes) ||<:> ✅ || ||<|3 > '''[:ext: ext...]'''|| '''...2''' || 16 GiB bis 2 TiB, je nach Blockgröße. Siehe:[wikipedia:Ext2#Dateisystemgrenzen:] || 2 TiB bis 32 TiB, je nach Blockgröße. Siehe [wikipedia:Ext2#Dateisystemgrenzen:] || <:> / || Bis zu 255 Zeichen (255 Bytes) ||<:> ✅ || || '''...3''' || 16 GiB bis 2 TiB, je nach Blockgröße. Siehe:[wikipedia:Ext2#Dateisystemgrenzen:] || 2 TiB bis 32 TiB, je nach Blockgröße. Siehe [wikipedia:Ext2#Dateisystemgrenzen:] || <:> / || Bis zu 255 Zeichen (255 Bytes) ||<:> ✅ || || '''...4''' || 16 GiB bis 16 TiB || 2 TiB bis 1 EiB ||<:> / || Bis zu 255 Zeichen (255 Bytes) ||<:> ✅ || ||<-2> '''JFS''' || 4 PiB || 32 PiB ||<:> / || Bis zu 255 Zeichen (255 Bytes) ||<:> ✅ || ||<-2> '''ReiserFS''' || 8 TiB (v3.6), 4 GiB (v3.5) || 16 TiB ||<:> / || Bis zu 255 Zeichen (4032 Bytes) ||<:> ✅ || ||<-2> '''Reiser4''' || 8 TiB || Unbekannt ||<:> / || Bis zu 255 Zeichen (3976 Bytes) ||<:> ✅ || ||<-2> '''XFS''' || 8 EiB || 8 EiB ||<:> / || Bis zu 255 Zeichen (255 Bytes) ||<:> ✅ || ||<|3 > '''FAT...''' || '''...12''' || 32 MiB || 1 MiB bis 32 MiB ||<:> \ / : * ? " < > | || Bis zu 255 Zeichen (512 Bytes) ||<:> ❌ || || '''...16''' || 4 GiB - 1 TiByte || 16 MiB bis 4 GiB ||<:> \ / : * ? " < > | || Bis zu 255 Zeichen (512 Bytes) ||<:> ❌ || || '''...32''' || 4 GiB || 512 MiB bis 8 TiB ||<:> \ / : * ? " < > | || Bis zu 255 Zeichen (512 Bytes) ||<:> ❌ || ||<-2> '''[:exFAT:]''' || ca. 128 PiB || ca. 128 PiB || <:> \ / : * ? " < > | || Bis zu 255 Zeichen (255 Bytes) ||<:> ✅ || ||<-2> '''NTFS''' || 16 EiB || 16 EiB ||<:> / [[BR]]Windows verbietet zusätzlich auch noch \ : * ? " < > | ||Bis zu 255 Zeichen (255 Bytes) ||<:> ✅ || ||<-2> '''[:Archiv/ZFS_on_Linux:ZFS]''' || 16 EiB || 16 EiB ||<:> / || Bis zu 255 Zeichen (255 Bytes) ||<:> ✅ || == Sonstige Informationen == || Dateisystem || Veröffentlicht || Entwickler || Entwickelt für Betriebssystem || Links || || '''[:Btrfs:]'''|| 2007 || Oracle || Linux || [wikipedia:btrfs:] || || '''ext2''' || 1993 || Rémy Card u.a. || Linux || [wikipedia:ext2:] || || '''ext3''' || 2001 || Stephen Tweedie u.a. || Linux || [wikipedia:ext3:] || || '''ext4''' || 2008 || verschiedene || Linux || [wikipedia:ext4:] || || '''JFS''' || 1990 || IBM || AIX || [wikipedia:Journaled_File_System:JFS] || || '''ReiserFS''' || 2001 || Namesys || Linux || [wikipedia:ReiserFS:] || || '''Reiser4''' || 2004 || Namesys || Linux || [wikipedia:ReiserFS#Reiser4:] || || '''XFS''' || 1994 || SGI || Unix || [wikipedia:XFS_(Dateisystem):XFS] || || '''FAT''' || 1980 || Microsoft || MS-DOS || [wikipedia:File_Allocation_Table:FAT] || || '''[:exFAT:]''' || 2006 || Microsoft || Windows || [wikipedia:File_Allocation_Table#exFAT:exFAT] || || '''NTFS''' || 1993 || Microsoft || Windows || [wikipedia:NTFS:] || || '''[:Archiv/ZFS_on_Linux:ZFS]''' || 2006 || Sun || Solaris || [wikipedia:ZFS_(Dateisystem):ZFS] || || '''[:SquashFS:]''' || 2002 || Phillip Lougher || Linux || [wikipedia:SquashFS:] || Siehe dazu auch [wikipedia_en:Comparison of file systems:]. === Hinweise === ==== Wieviele Bytes benötigt ein Zeichen? ==== Je nach [wikipedia:Zeichenkodierung: Kodierung] werden Zeichen durch unterschiedlich viele Bytes repräsentiert. Beispielsweise werden bei der Kodierung [wikipedia:UTF-8:] einige Zeichen mit einem Byte (z.B: a, b, c, A, B, C), mit zwei Bytes (z.B. ü, ö, ä, ß) oder auch drei oder vier Bytes (z.B.: asiatische Schriftzeichen) kodiert. Bei Angabe von „255 Bytes“ kann ein Dateiname aus 255 1-Byte-kodierten Zeichen bestehen. Werden auch Mehr-Byte-kodierte Zeichen für den Dateinamen verwendet, verkürzt sich die maximale Länge entsprechend. FAT-Dateisysteme verwenden als Kodierung [wikipedia:UTF-16:]. Diese Kodierung benötigt auch für normale Zeichen wie „a, b, A, B“ mindestens zwei Bytes. {{{#!vorlage Hinweis Unter Linux/Ubuntu ist darauf zu achten, FAT-Dateisysteme mit der [:mount:]-Option `utf8` einzuhängen. Siehe: [:Windows-Partitionen_einbinden:] und [:mount#Windows-Dateisysteme: Mountoptionen für Windowsdateisysteme] }}} ==== Dateinamenlänge ==== Die Länge von Dateinamen unter Linux-Systemen wird in erster Linie vom [#Links VFS] (Virtual File System) begrenzt. Das VFS ist eine weitere Schicht zwischen Betriebssystem und Dateisystem. Sie dient dazu, den Zugriff auf die verschiedenen Dateisysteme zu vereinheitlichen, und ermöglicht erst das Einhängen ([:mount: mounten]) derselben. Das VFS kann keine Dateinamen länger als 255 Bytes verwalten, auch wenn das Dateisystem mehr ermöglichen würde (z.B.: ReiserFS). FAT-Dateisysteme können längere Dateinamen als das [wikipedia:8.3:]-Format nur mit Hilfe von [wikipedia:VFAT:] verwirklichen (VFAT ist Standard ab Windows95). Die maximal mögliche Dateinamenlänge hängt zudem mit der Pfadlänge zusammen (siehe folgenden Abschnitt). ==== Pfadlänge ==== Allgemein ist die Länge eines Dateipfades, also Verzeichnis(se) plus Dateiname (z.B.: '''/home/USER/Musik/Rock/guteMusik.mp3''') wie folgt definiert: * Unter Linux ist die Pfadlänge auf 4096 Bytes beschränkt * Unter Windows ist die Pfadlänge auf 255 Zeichen beschränkt Diese Werte können jedoch unter bestimmten Bedingungen sowohl größer als auch kleiner ausfallen. (Siehe Diskussionsbeiträge zu [http://forum.ubuntuusers.de/post/2023345/ Linux], [http://forum.ubuntuusers.de/post/2022567/ Windows Dateinamenlänge] und [http://forum.ubuntuusers.de/post/2025181/ Windows Pfadlänge]) {{{#!vorlage Warnung Unter Linux können ohne weiteres Dateipfade auf FAT-formatierten Datenträgern erstellt werden, die länger als 255 Zeichen sind. Unter Windows ist ein Zugriff mit dem Explorer auf so einen Dateipfad nicht möglich, da hier die Beschränkung auf 255 Zeichen besteht! }}} === Datei-/Partitionsgröße === Die maximalen Datei-/Partitionsgrößen hängen direkt von der maximalen Größe der vom Dateisystem genutzten Zuordnungseinheit ab. Die in der Tabelle genannten Werte orientieren sich dabei hinsichtlich der Linux-Dateisysteme an der kleinsten bzw. größten Blockgröße: Die kleinere Zahl gibt die Größe bei 1 KiB-Blöcken, die größere Zahl bei 8 KiB-Blockgröße an. {{{#!vorlage Hinweis Eine Blockgröße von 8 KiB ist nur auf bestimmten Architekturen (z.B. [wikipedia:Alpha-Prozessor#Architektur: Alpha]) möglich! }}} Wer mehr über den Zusammenhang von Blockgröße und Dateigröße erfahren möchte, sollte den Artikel [wikipedia:Inode:] lesen. {{{#!vorlage Hinweis Bei der Erstellung eines Dateisystems ohne expliziter Angabe der Blockgröße, wird je nach Partitionsgröße automatisch eine passende Blockgröße gewählt. In der Regel ist die automatisch eingestellte Größe völlig ausreichend! }}} = Dateisysteme für optische Datenträger = ISO 9660 und UDF werden auf CD-ROMs, DVDs und BDs verwendet. [wikipedia:ISO_9660: ISO 9660] kennt keine Rechteverwaltung. [:UDF:] bietet ab Version 1.5 Funktionen, die besonders nützlich für [:DVD-RAM:]s sind. = Weitere Dateisysteme = Linux bzw. der Linux-Kernel unterstützt noch eine Vielzahl weiterer Dateisysteme, z.B. HFS/HFS+, Read-only Dateisysteme, komprimierte Dateisysteme etc. Da diese aber nur bei speziellen Anwendungsfällen (z.B. bei manchen Linux Live-CDs) zum Einsatz kommen, wird darauf hier nicht weiter eingegangen. Mit [:exFAT:] gibt es ein weiteres für [wikipedia:Flash-Speicher:Flash-Speicher] optimiertes Dateisystem. Seit Ubuntu 20.04 ist für dieses ein [:FUSE:]-Treiber in den Paketquellen verfügbar, und seit Ubuntu 22.04 wird es mit einem Kernel-Treiber nativ unterstützt. = Links = * [:Datenverwaltung:] - Grundlegendes zur Datenverwaltung * [:Datenträger:] - Bezeichnungen von Partitionen und Datenträgern unter Linux * [:ext:] - Einführung in ext-Dateisysteme * [:Upgrade_auf_ext4:] - Dateisystem-Upgrade von ext3 auf ext4 * [:Btrfs:] {Übersicht} * [:Partitionierung/Grundlagen:] - Datenträger in unabhängige Bereiche einteilen * [:Festplatten_Problembehebung:] * [:Dateisystemcheck:] * [https://www.kernel.org/doc/html/next/filesystems/vfs.html Linux Virtual File System] {en} – VFS in der offiziellen Dokumentation des Linux Kernels auf [https://www.kernel.org/] {en} * [wikipedia:Virtuelles_Dateisystem:] * [http://www.selflinux.de/selflinux/html/dateisysteme_journaling03.html Journaling Dateisysteme] {de} * [https://learn.microsoft.com/en-us/windows/win32/fileio/filesystem-functionality-comparison Hilfeseite] {en} von Microsoft zum NTFS, exFAT, FAT32 und UDF Dateisystem * [http://www.tuxera.com/community/release-history/ NTFS-3G Release History] {en} # tag: Einsteiger, System, Dateisystem