Dateisystem: Unterschied zwischen den Versionen

Aus Mikiwiki
Zur Navigation springen Zur Suche springen
 
(41 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Das <b>Dateisystem</b> (engl. file system) ist in gewisser Hinsicht die Grundlage, auf der das [[Betriebssystem]] arbeitet. Es entscheidet
Das <b>Dateisystem</b> (engl. file system) ist die Ablageorganisation auf einem [[Datenträger]] eines [[Rechners]]. Dateien müssen gelesen, gespeichert oder verschoben werden. Für den Menschen müssen Dateiname und rechnerinterne Dateiadressen in Einklang gebracht werden. Das leichte Wiederfinden und das sichere Abspeichern sind wesentlich. Das Ordnungs- und Zugriffssystem berücksichtigt die Geräteeigenschaften und ist normalerweise Bestandteil eines [[Betriebssystems]].
* ob eine hierarchische (baumartige) Speicherung der Daten möglich ist
 
Dateien haben in einem Dateisystem fast immer mindestens einen [[Dateinamen]] sowie Attribute, die nähere Informationen über die Datei geben. Die Dateinamen sind in speziellen Dateien (den [[Verzeichnissen]]) abgelegt. Über diese Verzeichnisse kann ein Dateiname und damit eine Datei vom System gefunden werden. Ein Dateisystem bildet somit einen Namensraum. Alle Dateien (oder dateiähnlichen Objekte) sind so innerhalb des Dateisystems über eine eindeutige Adresse (Dateiname mit Pfad oder [[URI]]) aufrufbar. Der Dateiname und weitere Informationen, die den gespeicherten Daten zugeordnet sind, werden als Meta-Daten bezeichnet.
 
Für unterschiedliche Datenträger (z. B. Magnetband, Festplatte, optische Datenträger wie CD oder DVD, Flashspeicher usw.) gibt es spezielle Dateisysteme.
 
Das Dateisystem stellt eine bestimmte Schicht des Betriebssystems dar: Alle Schichten darüber (Rest des Betriebssystems, Anwendungen) können auf Dateien abstrakt über deren Klartext-Namen zugreifen. Erst im Dateisystem werden diese abstrakten Angaben in physische Adressen (Blocknummer, Spur, Sektor usw.) auf dem Datenträger umgesetzt. In der Ebene darunter kommuniziert das Dateisystem dazu mit dem jeweiligen [[Gerätetreiber]] und der Firmware des Speichersystems, welche an zusätzlicher Organisation erledigen (z. B. den Ersatz fehlerhafter Sektoren durch Reservesektoren).
 
Das Dateisystem entscheidet
 
* ob eine hierarchische (baumartige) Speicherung der Daten möglich ist. Die [[Verzeichnisstruktur]] ist die logische Gestalt von Dateisystemen, die über [[Verzeichnis]]se verfügen.
* ob und wieviele Zeitmarken gespeichert werden
* ob und wieviele Zeitmarken gespeichert werden
* ob und wenn ja, welche Begrenzungen in der Dateinamenslänge vorgegeben sind
* ob und wenn ja, welche Begrenzungen in der Dateinamenslänge vorgegeben sind
* ob hardlinks möglich sind
* ob Hardlinks möglich sind
* wieviele Dateien in einem Unterverzeichnis gespeichert werden dürfen
* wieviele Dateien in einem Unterverzeichnis gespeichert werden dürfen
* wo die maximale Datei- und Partitionsgrösse liegt
* wo die maximale [[Datei]]- und [[Partition]]sgrösse liegt
* welche Zugriffsberechtigungen möglich sind
* welche Zugriffsberechtigungen möglich sind
* mit welcher Geschwindigkeit zugegriffen werden kann
* mit welcher Geschwindigkeit zugegriffen werden kann
* ob eine Defragmentierung notwendig ist
* ob eine [[Defragmentierung]] notwendig ist
 
Aufgrund der immer grösser werdenden [[Festplatten]] werden die Anforderungen an Dateisysteme immer anspruchsvoller:


Aufgrund der immer grösser werdenden [[Festplatte]]n werden die Anforderungen an Dateisysteme immer anspruchsvoller:
* Fehlertoleranz und Fähigkeit zur "Selbstheilung".
* Fehlertoleranz und Selbstheilungsfähigkeit.
* Bessere Performance durch intelligente Block-Allozierung und geringere [[Fragmentierung]] im Betrieb (z. B. durch Extents).
* Bessere Performance durch intelligente Block-Allozierung und geringere Fragmentierung im Betrieb (z. B. durch Extents).
* Höhere Kapazitäten und bessere Skalierung der Gesamtgrösse, aber gleichzeitig auch der Maximalzahl möglicher Dateien und Verzeichniseinträge.
* Höhere Kapazitäten und bessere Skalierung der Gesamtgrösse, aber gleichzeitig auch der Maximalzahl möglicher Dateien und Verzeichniseinträge.
* Mehr Datensicherheit durch Transaktionen, Redundanz und/oder Prüfsummen, damit es erst gar nicht zu einem Fehler kommen kann, der zu beheben wäre.
* Mehr Datensicherheit durch Transaktionen, Redundanz und/oder Prüfsummen, damit es erst gar nicht zu einem Fehler kommen kann, der zu beheben wäre.
* Integration von Volumemanager-Funktionen wie z. B. Snapshot-Mechanismen oder RAID-Konfigurationen in das Dateisystem.
* Integration von Volumemanager-Funktionen wie z. B. Snapshot-Mechanismen oder RAID-Konfigurationen in das Dateisystem.


Die [[Verzeichnisstruktur]] ist die logische Gestalt von Dateisystemen, die über [[Verzeichnis]]se verfügen. Als Faustregel sollten 20% des Dateisystems immer frei sein. Zur sauberen Trennung sollten eigene [[Partition]]en für folgende Bereiche eingerichtet werden.
Es wird zwischen folgenden Dateisystemkategorien unterschieden.


{| class=wikitable width=100%
{| class=wiki
! width=10% | Bereich !! width=10% | Grösse !! Beschreibung
! Dateisystemkategorie !! Beschreibung !! Beispiele
|-
| <tt>/</tt> || etwa 80 MB || nur statische Daten
|-
|-
| <tt>/tmp</tt> || etwa 50 MB ||  
| <b>Physisches Dateisystem, konventionell</b> || Verwaltung der Informationen auf einem Massenspeicher, damit diese in der Verzeichnisstruktur verfügbar sind. || [[EXT2]], [[FAT32]]
|-
|-
| <tt>/var</tt> || etwa 100 MB ||
| <b>[[Journaling-Dateisystem]]</b><br>(Physisches Dateisystem mit Journaling) || Verwaltung der Informationen auf einem Massenspeicher, damit diese in der Verzeichnisstruktur. || [[EXT3]], [[Reiserfs]], [[NTFS]]
|-
|-
| <tt>/usr</tt> || etwa 200 MB || Dazu ein separates Verzeichnis "/usr/local".
| <b>Netzwerkdateisystem</b> || Verfügbarmachung von Massenspeicher über das [[Rechnernetz]]. || [[NFS]], SMBFS
|-
|-
| <tt>/home</tt> || ||
| <b>Pseudodateisystem</b> || Wird nicht zum Verwalten von Massenspeichern eingesetzt, aber dennoch in die Verzeichnisstruktur integriert. || [[devfs]], devpts, [[procfs]], tmpfs
|-
| <tt>/usr/local</tt> || ||
|-
| <tt>swap</tt> || RAM x 2 || Etwa entsprechend der doppelten Grösse des vorhandenen [[Arbeitsspeicher]]s. Bei zwei vorhandenen Festplatten sollte die swap-Partition immer auf die zweite Platte, ansonsten nach Möglichkeit ans Ende der Platte.
|}
|}
Unter Ubuntu und Debian wird die Konsistenz des Dateisystems regelmässig mit [[tune2fs]] geprüft. Ubuntu hängt Dateisysteme beim Auftreten eines Fehlers im Lesemodus ein; das wird durch die Option "error=remount-ro" in der Datei "/etc/fstab" bewirkt.
Einzelne Datenträger können mit dem Shell-Befehl [[mount]] an beliebigen Stellen im Verzeichnisbaum eingehängt werden.


== Geschichte ==
== Geschichte ==


Die Urversionen von Linux benutzten das Dateisystem Minix. Ab 1992 wurde ein eigenes Dateisystem entwickelt, das Extended File System / ExtFS. Wegen vieler Fehler veröffentlichte Rémy Card 1993 jedoch das [[Second Extended File System]] / Ext2, das sich zu einem stabilen und erweiterbaren Dateisystem entwickelte. Da es aber kein Journaling verwendet, müssen z. B. bei einem Crash und regelmässig nach einer festgelegten Zeit langwierige Dateisystemchecks durchgeführt werden. Je nach Festplattengrösse dauern diese mehrere Stunden. Ausserdem lässt sich das Dateisystem nur mit proprietären Werkzeugen im Betrieb in der Grösse verändern. Um 2000 herum wurden die Festplatten für Ext2 zu gross und der Dateisystemcheck mit Ext2 zu langsam.
Die Urversionen von Linux benutzten das Dateisystem Minix. Ab 1992 wurde ein eigenes Dateisystem entwickelt, das Extended File System / ExtFS. Wegen vieler Fehler veröffentlichte Rémy Card 1993 jedoch das [[Second Extended File System]] / EXT2, das sich zu einem stabilen und erweiterbaren Dateisystem entwickelte. Da es aber kein Journaling verwendet, müssen beispielsweise bei einem Systemabsturz und regelmässig nach einer festgelegten Zeit langwierige Dateisystemüberprüfungen durchgeführt werden. Je nach Festplattengrösse dauern diese mehrere Stunden. Ausserdem lässt sich das Dateisystem nur mit proprietären Werkzeugen im Betrieb in der Grösse verändern. Um 2000 herum wurden die Festplatten für EXT2 zu gross und der Dateisystemcheck mit EXT2 zu langsam.


Unabhängig voneinander wurden deshalb das [[Third Extended File System]] / Ext3 als Journaling-Erweiterung für Ext2 und ReiserFS v3 als vollkommen neues Dateisystem mit nativem Journaling entwickelt. SUSE Linux 6.4 war im Frühling 2000 die erste Distribution, die mit ReiserFS ein Journaling-Dateisystem als Standard-Dateisystem verwendete. Ext3 war erstmals 2001 für Red Hat 7.2 als offizielles Dateisystem erhältlich und wurde mit Kernel 2.2.15 in den offiziellen Kernel aufgenommen. Bei ReiserFS dauerte dieser Schritt noch bis zum Kernel 2.4.1. Seither benutzen die meisten Linux-Distributionen entweder Ext3 oder ReiserFS als Standard-Dateisystem.
Unabhängig voneinander wurden deshalb das [[Third Extended File System]] / EXT3 als Journaling-Erweiterung für EXT2 und [[Reiserfs]] 3 als vollkommen neues Dateisystem mit nativem Journaling entwickelt. SUSE Linux 6.4 war im Frühling 2000 die erste Distribution, die mit Reiserfs ein [[Journaling-Dateisystem]] als Standard-Dateisystem verwendete. EXT3 war erstmals 2001 für Red Hat 7.2 als offizielles Dateisystem erhältlich und wurde mit Kernel 2.2.15 in den offiziellen Kernel aufgenommen. Bei Reiserfs dauerte dieser Schritt noch bis zum Kernel 2.4.1. Seither benutzen die meisten Linux-Distributionen entweder EXT3 oder Reiserfs als Standard-Dateisystem.


Ebenfalls 2001 wurden zwei nach Linux portierte Journaling-Dateisysteme von IBM und SGI in den offiziellen Kernel aufgenommen. XFS von SGI ist inzwischen eines der besten Dateisysteme für Dateigrössen von 1 MB und mehr. JFS von IBM konnte sich dagegen nie richtig etablieren und wird z. B. von SUSE nicht mehr offiziell unterstützt.
Ebenfalls 2001 wurden zwei nach Linux portierte Journaling-Dateisysteme in den offiziellen Kernel aufgenommen: XFS von Silicon Graphics ist inzwischen eines der besten Dateisysteme für Dateigrössen von 1 MB und mehr. JFS von IBM konnte sich dagegen nie richtig etablieren und wird etwa von SUSE Linux nicht mehr offiziell unterstützt.


== Dateisysteme unter Linux ==
== Dateisysteme unter Linux ==


[[Linux]] kann mit sehr vielen Dateisystemen arbeiten, darunter den folgenden:
[[Linux]] kann mit sehr vielen Dateisystemen arbeiten, darunter den folgenden.
* [[BTRFS]]
* Ext
* [[EXT2]]
* [[EXT3]]
* [[EXT4]] (Betaversion, die sich ausdrücklich nicht für den produktiven Betrieb eignet)
* [[Reiserfs]]
* [[JFS]]
* [[XFS]]
* proc
* afs
* [[NFS]]
* [[FAT]]
* [[VFAT]]
* [[HPFS]]
* [[ISO9660]]
* [[SMBFS]]


Der überwiegende Teil der Linuxrechner benutzt [[Ext3]] oder [[ReiserFS]] als Hauptdateisystem, da dies die Standardvorschläge wichtiger Distributionen sind. Beide sind <b>Journaling-Dateisysteme</b>. Journaling bedeutet dabei, dass das Dateisystem alle Daten zweimal schreibt: zunächst ins Journal und dann an den vorgesehenen Platz. Um die dadurch entstehende Geschwindigkeitseinbusse zu vermindern, schreiben beide Dateisystem in der Grundeinstellung nur die sogenannten Metadaten - also die Informationen über die Bewegungen im Dateisystem - ins Journal, die eigentlichen Daten nicht.
{| class=wiki
 
! Dateisystem !! Jahr !! Hersteller !! Ursprüngliches<br>Betriebssystem !! Maximale<br>Grösse !! Dateisystemkategorie
Folgende Journaling-Optionen existieren sowohl in [[Ext3]] wie in [[ReiserFS]]
|-
{| class=wikitable
| AFS || || || || || [[Netzwerkdateisystem]]
! Option || Bedeutung
|-
| [[BTRFS]] || 2007 || [[Oracle Corporation]] || [[Linux]] || 16 EB ||
|-
| Coda || || || || || [[Netzwerkdateisystem]]
|-
| Ext || || || || || Physisches Dateisystem, konventionell
|-
| [[EXT2]] || || Open Source || || || Physisches Dateisystem, konventionell
|-
| [[EXT3]] || 2001 || Open Source || [[Linux]] || 32 TB || [[Journaling-Dateisystem]]
|-
| [[EXT4]] || 2006 || Open Source || [[Linux]] || 1 EB || [[Journaling-Dateisystem]]
|-
| [[FAT]] ||
|-
| [[FAT32]] || || || || || Physisches Dateisystem, konventionell
|-
| [[HPFS]] || || || || || [[Journaling-Dateisystem]]
|-
| [[ISO9660]] || || || || ||
|-
| [[JFS]] || 1990 || [[IBM]] || || || [[Journaling-Dateisystem]]
|-
| Minix || || || || || Physisches Dateisystem, konventionell
|-
| NCPFS || || || || || [[Netzwerkdateisystem]]
|-
| [[NFS]] || || [[Sun Microsystems]] || || || [[Netzwerkdateisystem]]
|-
| [[NTFS]] || || [[Microsoft Corporation]] || [[Microsoft Windows]] || 256 TB || [[Journaling-Dateisystem]]
|-
| [[Reiserfs]] 3 || 2001 || Namesys || [[Linux]] || || [[Journaling-Dateisystem]]
|-
| [[Reiserfs]] 4 || || Namesys || [[Linux]] || 16 TB || [[Journaling-Dateisystem]]
|-
|-
| <tt>data=ordered</tt> || Grundeinstellung. Das Dateisystem schreibt zuerst die Daten an den Bestimmungsort und trägt dann die Informationen über den abgeschlossenen Vorgang ins Journal ein.
| [[SMBFS]] || || || || || [[Netzwerkdateisystem]]
|-
|-
| <tt>data=journal</tt> || Garantiert höchste Datensicherheit. Die Daten werden zunächst in den Journal-Bereich kopiert und erst danach an den eigentlichen Bestimmungsort. Daraus resultiert ein Performanceverlust bis zu 50 Prozent, bei grösseren Dateien beträgt der Unterschied rund 20 Prozent. Diese Option ist also nicht für die Root- oder Home-Partition gedacht, sondern eher für eigene Datenpartitionen.
| [[VFAT]] ||
|-
|-
| <tt>data=writeback</tt> || Das Dateisystem darf bereits darf bereits ins Journal schreiben, bevor alle Daten an ihrem Bestimmungsort angelangt sind. Das bewirkt einen Performancegewinn von 10 (Ext3) bzw. 30 Prozent (ReiserFS)  und eignet sich gut für das Root-Dateisystem, da hier normalerweise nicht viele Schreibvorgänge stattfinden und kaum Datenverlust zu befürchten ist. Allerdings ist dann ein eigenes Home- oder Datenverzeichnis zu empfehlen. Bei einem CRash kann es allerdings vorkommen, dass durch den Dateisystemcheck alte Daten in Dateien auftauchen.
| [[XFS]] || 1994 || [[Silicon Graphics]] || [[Irix]] || 8 EB || [[Journaling-Dateisystem]]
|-
|-
| <tt>data=notail</tt> || Nur bei ReiserFS. ReiserFS benutzt Leerraum in Blöcken, um darin Teile von Daten zu speichern, die nicht in einen Block passen. Der Schwanz (engl. tail) der Datei wird also abgeschnitten und in einem anderen Block gespeichert. ReiserFS speichert damit 10-20 Prozent mehr Dateien auf derselebn Partition sls beispielsweise Ext3. Damit ist ein Performanceverlust von rund 5 Prozent verbunden, deshalb kann diese Eigenschaft durch die Option "data=notail" ausgeschaltet werden kann.
| ZFS || || [[Sun Microsystems]] || [[Solaris]] || 16 EB ||  
|}
|}
Der überwiegende Teil der Linuxrechner benutzt [[EXT3]] oder [[Reiserfs]] als Hauptdateisystem, da dies die Standardvorschläge wichtiger Distributionen sind. Beide sind [[Journaling-Dateisysteme]]. Journaling bedeutet dabei, dass das Dateisystem alle Daten zweimal schreibt: zunächst ins Journal und dann an den vorgesehenen Platz. Um die dadurch entstehende Geschwindigkeitseinbusse zu vermindern, schreiben beide Dateisystem in der Grundeinstellung nur die sogenannten Metadaten - also die Informationen über die Bewegungen im Dateisystem - ins Journal, die eigentlichen Daten nicht.


Das [[Magnetband]] ist ein Massenspeicher <i>ohne</i> Dateisystem und verfügt nur über einfachste Ein- und Ausgabefunktionen.
Das [[Magnetband]] ist ein Massenspeicher <i>ohne</i> Dateisystem und verfügt nur über einfachste Ein- und Ausgabefunktionen.
Zeile 84: Zeile 111:
Die rotierenden Magnetplatten einer [[Festplatte]] lassen sich als übereinander gestapelte [[Diskette]]n vorstellen, zwischen denen die <b>Lese- und Schreibköpfe</b> (engl. heads) hineinragen. Diese Köpfe lassen sich zwar einzeln ansteuern, aber nur gemeinsam bewegen. Die einzelnen Spuren einer Festplatte durch alle Ebenen hindurch werden als einander umhüllende <b>Zylinder</b> bezeichnet. Diese Parameter Zylinder, Köpfe und Sektoren pro Zylinder (<b>CHS</b>) bilden zusammen die <b>Plattengeometrie</b>.
Die rotierenden Magnetplatten einer [[Festplatte]] lassen sich als übereinander gestapelte [[Diskette]]n vorstellen, zwischen denen die <b>Lese- und Schreibköpfe</b> (engl. heads) hineinragen. Diese Köpfe lassen sich zwar einzeln ansteuern, aber nur gemeinsam bewegen. Die einzelnen Spuren einer Festplatte durch alle Ebenen hindurch werden als einander umhüllende <b>Zylinder</b> bezeichnet. Diese Parameter Zylinder, Köpfe und Sektoren pro Zylinder (<b>CHS</b>) bilden zusammen die <b>Plattengeometrie</b>.


Die im BIOS für die Anzahl Zylinder reservierten zehn Bits, mit denen Werte bis 1024 darstellbar sind, wurden schon bald zum begrenzenden Faktor. Ausserdem konnte mit der starren CHS-Codierung das zone bit recording (ZBR), das den äusseren Zylindern mehr Sektoren zuordnet als den weiter innen liegenden, nicht mehr abgebildet werden. Da die alte BIOS-Schnittstelle noch Bestand haben muss, werden dem BIOS falsche Werte vorgegaukelt. Entscheidend ist, dass das Produkt der drei Werte und damit die Anzahl der gesamten
Die im BIOS für die Anzahl Zylinder reservierten zehn Bit, mit denen Werte bis 1024 darstellbar sind, wurden schon bald zum begrenzenden Faktor. Ausserdem konnte mit der starren CHS-Codierung das zone bit recording (ZBR), das den äusseren Zylindern mehr Sektoren zuordnet als den weiter innen liegenden, nicht mehr abgebildet werden. Da die alte BIOS-Schnittstelle noch Bestand haben muss, werden dem BIOS falsche Werte vorgegaukelt. Entscheidend ist, dass das Produkt der drei Werte und damit die Anzahl der gesamten
Sektoren der Festplatte gleich bleiben muss. Die tatsächliche Zugehörigkeit der einzelnen Sektoren zu bestimmten Zylindern ist ohnehin nicht mehr nachzuvollziehen und für die Funktion inzwischen auch unerheblich geworden.
Sektoren der Festplatte gleich bleiben muss. Die tatsächliche Zugehörigkeit der einzelnen Sektoren zu bestimmten Zylindern ist ohnehin nicht mehr nachzuvollziehen und für die Funktion inzwischen auch unerheblich geworden.


<b>Beispiel:</b> Das BIOS (LBA-Modus) zeigt zu einer 20 GB-Festplatte die folgenden Werte an:<br>
<b>Beispiel:</b> Das BIOS (LBA-Modus) zeigt zu einer 20 GB-Festplatte die folgenden Werte an:<br>
<tt>38792 Zylinder, 16 Köpfe und 63 Sektoren je Zylinder</tt><br>
<tt>38792 Zylinder, 16 Köpfe und 63 Sektoren je Zylinder</tt><br>
Die Plausibilität der Werte kann leicht nachgeprüft werden, da jeder Sektor 512 bytes gross ist:<br>
Die Plausibilität der Werte kann leicht nachgeprüft werden, da jeder Sektor 512 Byte gross ist:<br>
<tt>(C*H*S) 38792*16*63*512 = 20.020 MB</tt><br>
<tt>(C*H*S) 38792*16*63*512 = 20.020 MB</tt><br>
Das in GNU/Linux enthaltenene Partitionierungsprogramm [[fdisk]] zeigt jedoch folgende Werte an:<br>
Das in GNU/Linux enthaltenene Partitionierungsprogramm [[fdisk]] zeigt jedoch folgende Werte an:<br>
Zeile 99: Zeile 126:


== Übersicht Dateisysteme ==
== Übersicht Dateisysteme ==
{| class=wikitable
! Dateisystemkategorie !! Verwendung !! Beispiele
|-
| physisches Dateisystem, konventionell
| Verwaltung der Informationen auf einem Massenspeicher, damit diese in der Verzeichnisstruktur verfügbar sind.
| Minix, Ext, [[Ext2]], [[FAT32]]
|-
| physisches Dateisystem, journaling
| Verwaltung der Informationen auf einem Massenspeicher, damit diese in der Verzeichnisstruktur verfügbar sind.
| [[Ext3]], [[ReiserFS]], JFS, HPFS, NTFS
|-
| Netzwerkdateisysteme
| Verfügbarmachung von Massenspeicher über das Netzwerk.
| [[NFS]], AFS, Coda, SMBFS, NCPFS
|-
| Pseudodateisysteme
| Werden nicht zum Verwalten von Massenspeichern eingesetzt, aber dennoch in die Verzeichnisstruktur integriert.
| [[procfs]], tmpfs, devpts, [[devfs]]
|}


{| class=wikitable
{| class=wikitable
!
!
! [[Ext3]]
! [[EXT3]]
! [[Ext4]]
! [[EXT4]]
! [[ReiserFS]] 3
! [[Reiserfs]] 3
! [[XFS]]
! [[XFS]]
! [[JFS]] 2
! [[JFS]] 2
Zeile 131: Zeile 138:
| [[Open Source]]
| [[Open Source]]
| [[Open Source]]
| [[Open Source]]
| Hans Reiser / Namesys
| Namesys
| [[SGI]]
| [[Silicon Graphics]]
| [[IBM]]
| [[IBM]]
|-
|-
Zeile 241: Zeile 248:
|-
|-
| <b>Unterstützte Betriebssysteme</b>
| <b>Unterstützte Betriebssysteme</b>
| Linux, BSD, Windows (3rd-Party-Treiber)
| Linux, BSD, Windows (3rd-Party-Gerätetreiber)
| Linux
| Linux
| Linux
| Linux
Zeile 248: Zeile 255:
|}
|}


Maximale Grösse von Dateisystemen.
== FAQ ==
 
=== Dateiduplikate finden ===


{| class=wikitable
* [[Fslint]]
! Dateisystem !! Ursprüngliches Betriebssystem !! Maximalgrösse
 
|-
=== Dateisystemtypen anzeigen ===
| Reiser 4 || Linux || 16 Terabyte
|-
| Ext3 || Linux || 32 Terabyte
|-
| NTFS || Microsoft Windows || 256 Terabyte
|-
| Ext4 || Linux || 1 Exabyte
|-
| XFS || Linux || 8 Exabyte
|-
| ZFS || Solaris || 16 Exabyte
|-
| Btrfs || Linux || 16 Exabyte
|}


== FAQ ==
* https://www.tecmint.com/find-linux-filesystem-type/


=== Einbinden einer neuen Festplatte in ein bestehendes Linux-System ===
=== Einbinden einer neuen Festplatte in ein bestehendes Linux-System ===
Zeile 279: Zeile 274:
* notwendige Wartung
* notwendige Wartung
* Tuning
* Tuning
=== Auffinden von Dateiduplikaten ===
* [[Fslint]]


== Weblinks ==
== Weblinks ==


{{Weblinks1|{{url_dewikipedia|Dateisystem|Dateisystem}}
{{Weblinks}}
}}
{{url_dewikipedia|Dateisystem|Dateisystem}}
{{Fuss}}




{{cat|Datei}}
{{cat|Datei}}
{{cat|Verzeichnis}}
{{cat|Dateisystem}}
{{cat|Betriebssystem}}
{{cat|Betriebssystem}}
{{cat|Formatierung}}
{{cat|Partition}}
{{cat|Partition}}
{{cat|Verzeichnis}}

Aktuelle Version vom 21. Dezember 2023, 20:05 Uhr

Das Dateisystem (engl. file system) ist die Ablageorganisation auf einem Datenträger eines Rechners. Dateien müssen gelesen, gespeichert oder verschoben werden. Für den Menschen müssen Dateiname und rechnerinterne Dateiadressen in Einklang gebracht werden. Das leichte Wiederfinden und das sichere Abspeichern sind wesentlich. Das Ordnungs- und Zugriffssystem berücksichtigt die Geräteeigenschaften und ist normalerweise Bestandteil eines Betriebssystems.

Dateien haben in einem Dateisystem fast immer mindestens einen Dateinamen sowie Attribute, die nähere Informationen über die Datei geben. Die Dateinamen sind in speziellen Dateien (den Verzeichnissen) abgelegt. Über diese Verzeichnisse kann ein Dateiname und damit eine Datei vom System gefunden werden. Ein Dateisystem bildet somit einen Namensraum. Alle Dateien (oder dateiähnlichen Objekte) sind so innerhalb des Dateisystems über eine eindeutige Adresse (Dateiname mit Pfad oder URI) aufrufbar. Der Dateiname und weitere Informationen, die den gespeicherten Daten zugeordnet sind, werden als Meta-Daten bezeichnet.

Für unterschiedliche Datenträger (z. B. Magnetband, Festplatte, optische Datenträger wie CD oder DVD, Flashspeicher usw.) gibt es spezielle Dateisysteme.

Das Dateisystem stellt eine bestimmte Schicht des Betriebssystems dar: Alle Schichten darüber (Rest des Betriebssystems, Anwendungen) können auf Dateien abstrakt über deren Klartext-Namen zugreifen. Erst im Dateisystem werden diese abstrakten Angaben in physische Adressen (Blocknummer, Spur, Sektor usw.) auf dem Datenträger umgesetzt. In der Ebene darunter kommuniziert das Dateisystem dazu mit dem jeweiligen Gerätetreiber und der Firmware des Speichersystems, welche an zusätzlicher Organisation erledigen (z. B. den Ersatz fehlerhafter Sektoren durch Reservesektoren).

Das Dateisystem entscheidet

  • ob eine hierarchische (baumartige) Speicherung der Daten möglich ist. Die Verzeichnisstruktur ist die logische Gestalt von Dateisystemen, die über Verzeichnisse verfügen.
  • ob und wieviele Zeitmarken gespeichert werden
  • ob und wenn ja, welche Begrenzungen in der Dateinamenslänge vorgegeben sind
  • ob Hardlinks möglich sind
  • wieviele Dateien in einem Unterverzeichnis gespeichert werden dürfen
  • wo die maximale Datei- und Partitionsgrösse liegt
  • welche Zugriffsberechtigungen möglich sind
  • mit welcher Geschwindigkeit zugegriffen werden kann
  • ob eine Defragmentierung notwendig ist

Aufgrund der immer grösser werdenden Festplatten werden die Anforderungen an Dateisysteme immer anspruchsvoller:

  • Fehlertoleranz und Fähigkeit zur "Selbstheilung".
  • Bessere Performance durch intelligente Block-Allozierung und geringere Fragmentierung im Betrieb (z. B. durch Extents).
  • Höhere Kapazitäten und bessere Skalierung der Gesamtgrösse, aber gleichzeitig auch der Maximalzahl möglicher Dateien und Verzeichniseinträge.
  • Mehr Datensicherheit durch Transaktionen, Redundanz und/oder Prüfsummen, damit es erst gar nicht zu einem Fehler kommen kann, der zu beheben wäre.
  • Integration von Volumemanager-Funktionen wie z. B. Snapshot-Mechanismen oder RAID-Konfigurationen in das Dateisystem.

Es wird zwischen folgenden Dateisystemkategorien unterschieden.

Dateisystemkategorie Beschreibung Beispiele
Physisches Dateisystem, konventionell Verwaltung der Informationen auf einem Massenspeicher, damit diese in der Verzeichnisstruktur verfügbar sind. EXT2, FAT32
Journaling-Dateisystem
(Physisches Dateisystem mit Journaling)
Verwaltung der Informationen auf einem Massenspeicher, damit diese in der Verzeichnisstruktur. EXT3, Reiserfs, NTFS
Netzwerkdateisystem Verfügbarmachung von Massenspeicher über das Rechnernetz. NFS, SMBFS
Pseudodateisystem Wird nicht zum Verwalten von Massenspeichern eingesetzt, aber dennoch in die Verzeichnisstruktur integriert. devfs, devpts, procfs, tmpfs

Unter Ubuntu und Debian wird die Konsistenz des Dateisystems regelmässig mit tune2fs geprüft. Ubuntu hängt Dateisysteme beim Auftreten eines Fehlers im Lesemodus ein; das wird durch die Option "error=remount-ro" in der Datei "/etc/fstab" bewirkt.

Einzelne Datenträger können mit dem Shell-Befehl mount an beliebigen Stellen im Verzeichnisbaum eingehängt werden.

Geschichte

Die Urversionen von Linux benutzten das Dateisystem Minix. Ab 1992 wurde ein eigenes Dateisystem entwickelt, das Extended File System / ExtFS. Wegen vieler Fehler veröffentlichte Rémy Card 1993 jedoch das Second Extended File System / EXT2, das sich zu einem stabilen und erweiterbaren Dateisystem entwickelte. Da es aber kein Journaling verwendet, müssen beispielsweise bei einem Systemabsturz und regelmässig nach einer festgelegten Zeit langwierige Dateisystemüberprüfungen durchgeführt werden. Je nach Festplattengrösse dauern diese mehrere Stunden. Ausserdem lässt sich das Dateisystem nur mit proprietären Werkzeugen im Betrieb in der Grösse verändern. Um 2000 herum wurden die Festplatten für EXT2 zu gross und der Dateisystemcheck mit EXT2 zu langsam.

Unabhängig voneinander wurden deshalb das Third Extended File System / EXT3 als Journaling-Erweiterung für EXT2 und Reiserfs 3 als vollkommen neues Dateisystem mit nativem Journaling entwickelt. SUSE Linux 6.4 war im Frühling 2000 die erste Distribution, die mit Reiserfs ein Journaling-Dateisystem als Standard-Dateisystem verwendete. EXT3 war erstmals 2001 für Red Hat 7.2 als offizielles Dateisystem erhältlich und wurde mit Kernel 2.2.15 in den offiziellen Kernel aufgenommen. Bei Reiserfs dauerte dieser Schritt noch bis zum Kernel 2.4.1. Seither benutzen die meisten Linux-Distributionen entweder EXT3 oder Reiserfs als Standard-Dateisystem.

Ebenfalls 2001 wurden zwei nach Linux portierte Journaling-Dateisysteme in den offiziellen Kernel aufgenommen: XFS von Silicon Graphics ist inzwischen eines der besten Dateisysteme für Dateigrössen von 1 MB und mehr. JFS von IBM konnte sich dagegen nie richtig etablieren und wird etwa von SUSE Linux nicht mehr offiziell unterstützt.

Dateisysteme unter Linux

Linux kann mit sehr vielen Dateisystemen arbeiten, darunter den folgenden.

Dateisystem Jahr Hersteller Ursprüngliches
Betriebssystem
Maximale
Grösse
Dateisystemkategorie
AFS Netzwerkdateisystem
BTRFS 2007 Oracle Corporation Linux 16 EB
Coda Netzwerkdateisystem
Ext Physisches Dateisystem, konventionell
EXT2 Open Source Physisches Dateisystem, konventionell
EXT3 2001 Open Source Linux 32 TB Journaling-Dateisystem
EXT4 2006 Open Source Linux 1 EB Journaling-Dateisystem
FAT
FAT32 Physisches Dateisystem, konventionell
HPFS Journaling-Dateisystem
ISO9660
JFS 1990 IBM Journaling-Dateisystem
Minix Physisches Dateisystem, konventionell
NCPFS Netzwerkdateisystem
NFS Sun Microsystems Netzwerkdateisystem
NTFS Microsoft Corporation Microsoft Windows 256 TB Journaling-Dateisystem
Reiserfs 3 2001 Namesys Linux Journaling-Dateisystem
Reiserfs 4 Namesys Linux 16 TB Journaling-Dateisystem
SMBFS Netzwerkdateisystem
VFAT
XFS 1994 Silicon Graphics Irix 8 EB Journaling-Dateisystem
ZFS Sun Microsystems Solaris 16 EB

Der überwiegende Teil der Linuxrechner benutzt EXT3 oder Reiserfs als Hauptdateisystem, da dies die Standardvorschläge wichtiger Distributionen sind. Beide sind Journaling-Dateisysteme. Journaling bedeutet dabei, dass das Dateisystem alle Daten zweimal schreibt: zunächst ins Journal und dann an den vorgesehenen Platz. Um die dadurch entstehende Geschwindigkeitseinbusse zu vermindern, schreiben beide Dateisystem in der Grundeinstellung nur die sogenannten Metadaten - also die Informationen über die Bewegungen im Dateisystem - ins Journal, die eigentlichen Daten nicht.

Das Magnetband ist ein Massenspeicher ohne Dateisystem und verfügt nur über einfachste Ein- und Ausgabefunktionen.

Die rotierenden Magnetplatten einer Festplatte lassen sich als übereinander gestapelte Disketten vorstellen, zwischen denen die Lese- und Schreibköpfe (engl. heads) hineinragen. Diese Köpfe lassen sich zwar einzeln ansteuern, aber nur gemeinsam bewegen. Die einzelnen Spuren einer Festplatte durch alle Ebenen hindurch werden als einander umhüllende Zylinder bezeichnet. Diese Parameter Zylinder, Köpfe und Sektoren pro Zylinder (CHS) bilden zusammen die Plattengeometrie.

Die im BIOS für die Anzahl Zylinder reservierten zehn Bit, mit denen Werte bis 1024 darstellbar sind, wurden schon bald zum begrenzenden Faktor. Ausserdem konnte mit der starren CHS-Codierung das zone bit recording (ZBR), das den äusseren Zylindern mehr Sektoren zuordnet als den weiter innen liegenden, nicht mehr abgebildet werden. Da die alte BIOS-Schnittstelle noch Bestand haben muss, werden dem BIOS falsche Werte vorgegaukelt. Entscheidend ist, dass das Produkt der drei Werte und damit die Anzahl der gesamten Sektoren der Festplatte gleich bleiben muss. Die tatsächliche Zugehörigkeit der einzelnen Sektoren zu bestimmten Zylindern ist ohnehin nicht mehr nachzuvollziehen und für die Funktion inzwischen auch unerheblich geworden.

Beispiel: Das BIOS (LBA-Modus) zeigt zu einer 20 GB-Festplatte die folgenden Werte an:
38792 Zylinder, 16 Köpfe und 63 Sektoren je Zylinder
Die Plausibilität der Werte kann leicht nachgeprüft werden, da jeder Sektor 512 Byte gross ist:
(C*H*S) 38792*16*63*512 = 20.020 MB
Das in GNU/Linux enthaltenene Partitionierungsprogramm fdisk zeigt jedoch folgende Werte an:
2434 Zylinder, 255 Köpfe und 63 Sektoren je Zylinder
(C*H*S) 2434*255*63*512 = 20.020 MB

Dieses Umrechnen von Plattengeometrien [engl. mapping] existiert in mehreren Varianten. Es dient dazu, die Grenzen des BIOS zu überwinden, um grössere Massenspeicher ansprechen zu können.

Unter Linux sind Festplattengeometrie und BIOS-Werte der Festplatte jedoch nur für den Bootvorgang und die Partitionierung von Bedeutung. Im laufenden Betrieb bedient sich Linux des logical block addressing (LBA), bei dem jedem 512 bytes grossen Sektor, mit 0 beginnend, eine Blocknummer zugeordnet wird, wodurch die dreidimensionalen CHS-Koordinaten auf lineare Adressen abgebildet werden. Während SCSI-Festplatten schon immer im LBA-Modus betrieben wurden, verfügten die ersten IDE-Festplatten um 1990 noch nicht über diese Technologie. Ist noch eine 486er Hauptplatine im Einsatz, so kann nicht zwangsläufig von einer LBA-Unterstützung des BIOS ausgegangen werden. Für die Repräsentation der Blocknummern im LBA Modus werden 28 bit verwendet, womit immerhin 2e28 Sektoren oder 128 GB grosse Festplatten ansprechbar sind. Für grössere Festplatten ist eine 64 bit-LBA-Variante vonnöten, womit dann Massenspeicher von bis zu 8 PB ansprechbar sind.

Übersicht Dateisysteme

EXT3 EXT4 Reiserfs 3 XFS JFS 2
Entwickler Open Source Open Source Namesys Silicon Graphics IBM
Lizenz GPL GPL GPL GPL GPL
Erstveröffentlichung 2001.11 2006.10 (Testversion) 2001.01 1994 1990
seit Linux-Kernel 2.4.15 2.6.19 2.4.1 2.4.25
Max. Dateisystemgrösse 16 TB (32 Bit) 1 EB (48 Bit) 16 TB (32 Bit) 16 EB (64 Bit) 4 PB (64 Bit)
Max. Dateigrösse 2 TB 1 EB 1 EB (Version 3.6) 8 EB 1 PB (4 KB-Blöcke)
Journaling ja ja ja ja ja, transaktionsorientiert
Online-Resizing ja ja ja nur Vergrössern, kein Verkleinern nur Vergrössern, kein Verkleinern
Online-Defragmentierung nein ja ja ja nein
Prüfsummensicherung nein ja nein nein nein
Transparente Komprimierung nein optional nein nein nein
Transparente Verschlüsselung nein nein nein nein nein
Integrierte Snapshots nein nein nein nur mit Volumemanager (für Irix) nein
Quotas ja ja ja für Benutzer und Gruppen erst ab Kernel 2.6.9
Unix-Dateirechte ja POSIX ja ja ja
Zugriffskontrolllisten (ACLs) ja ja ja ja ja
Unterstützte Betriebssysteme Linux, BSD, Windows (3rd-Party-Gerätetreiber) Linux Linux Irix, Linux, BSD Linux, OS/2, AIX

FAQ

Dateiduplikate finden

Dateisystemtypen anzeigen

Einbinden einer neuen Festplatte in ein bestehendes Linux-System

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen
Wikipedia ger Dateisystemwbm Enzyklopädischer Artikel