Dateisystem: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 11: | Zeile 11: | ||
* ob eine [[Defragmentierung]] notwendig ist | * ob eine [[Defragmentierung]] notwendig ist | ||
Aufgrund der immer grösser werdenden [[ | Aufgrund der immer grösser werdenden [[Festplatten]] werden die Anforderungen an Dateisysteme immer anspruchsvoller: | ||
* Fehlertoleranz und Fähigkeit zur "Selbstheilung". | * Fehlertoleranz und Fähigkeit zur "Selbstheilung". |
Version vom 10. April 2009, 09:40 Uhr
Das Dateisystem (engl. file system) ist in gewisser Hinsicht die Grundlage, auf der das Betriebssystem arbeitet. Es 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.
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.
Es wird zwischen folgenden Dateisystemkategorien unterschieden.
- Physisches Dateisystem, konventionell: Verwaltung der Informationen auf einem Massenspeicher, damit diese in der Verzeichnisstruktur verfügbar sind (z. B. EXT2, FAT32).
- Journaling-Dateisystem (Physisches Dateisystem mit Journaling): Verwaltung der Informationen auf einem Massenspeicher, damit diese in der Verzeichnisstruktur (z. B. EXT3, Reiserfs, NTFS).
- Netzwerkdateisystem: Verfügbarmachung von Massenspeicher über das Rechnernetz (z. B. NFS, SMBFS).
- Pseudodateisystem: Wird nicht zum Verwalten von Massenspeichern eingesetzt, aber dennoch in die Verzeichnisstruktur integriert (z. B. procfs, tmpfs, devpts, devfs).
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 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 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 bytes 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-Treiber) | Linux | Linux | Irix, Linux, BSD | Linux, OS/2, AIX |
FAQ
Einbinden einer neuen Festplatte in ein bestehendes Linux-System
- Hardwareerkennung im BIOS
- Partitionierung
- Geräteverwaltung unter Linux
- Anlegen eines Dateisystems
- Einhängen in die Verzeichnisstruktur
- notwendige Wartung
- Tuning