Journaled File System

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
JFS
Hersteller IBM
Vollständige Bezeichnung Journaled File System
Erstveröffentlichung 1990 (AIX)
Technische Umsetzung
Verzeichnisse JFS: Linear, JFS2: B+-Baum
Dateien JFS: Bitmap (2 Kachelgrößen auf Fragments), JFS2: B⁺-Baum aus Extents(Adresse, Länge)
Maximalwerte
Größe einer Datei 1 PiB
Anzahl aller Dateien 263
Länge des Dateinamens 255 Bytes
Größe des Dateisystems 4 PiB
Erlaubte Zeichen im Dateinamen Alle Unicode-Zeichen außer NUL
Eigenschaften
Datumsangaben einer Datei geändert (modification, mtime)
Metadaten geändert (ctime)
letzter Zugriff (atime)
Forks ja
Dateiattribute noatime
Dateirechte-Verwaltung Unix-Dateirechte, ACLs und JFS Security Labels
Transparente Komprimierung nur JFS
Transparente Verschlüsselung nein
Unterstützende Betriebssysteme AIX, OS/2, Linux

Das Journaled File System (JFS) wurde im Jahr 1990 von IBM für ihr eigenes Betriebssystem AIX veröffentlicht. Die re-implementierte Variante JFS2 oder Enhanced Journaled Filesystem wurde 1999 mit dem Betriebssystem OS/2 veröffentlicht und ist seit 2000 auch für Linux verfügbar. In AIX ersetzte JFS2 die ältere Variante ab der 2001 veröffentlichten Version 5.1.

Im Rahmen von Linux ist JFS2 als quelloffene Software unter der GNU General Public License freigegeben.

JFS für AIX sollte nicht mit dem Veritas File System verwechselt werden, das unter HP-UX ebenfalls als JFS bezeichnet wird.

JFS1[Bearbeiten | Quelltext bearbeiten]

Retronym als JFS1 bezeichnet, war die erste Version des Dateisystems ab AIX-Version 3.1 in IBM’s Unix-Betriebssystem enthalten. Hintergrund war eine weitgehende Virtualisierung der Hardwareschicht in dieser damals neu vorgestellten Version 3 von AIX: Ein ebenso neu vorgestellter Logical Volume Manager (LVM) löste die starren Zugriffsschemata auf Datenträgern ab, ein neuer Speichermanager brachte die Virtualisierung des Speicherraumes, also die Auslagerung von Hauptspeicher auf eine (virtuelle) Festplatte, und die PowerPC-CPU Familie, die noch heute das Herzstück unter anderem der pSeries ist, wurde eingeführt.

Das primäre Designziel von JFS war die stetige Konsistenz des Dateisystems: Änderungen am Dateisystem werden transaktionsorientiert geschrieben sowie in einem Journal protokolliert. Bei einem Absturz kann somit – ausgehend von einem Konsistenzpunkt der Transaktionen – über das Journal sehr effizient ein konsistenter Status des Dateisystems hergestellt werden. Ein voller Zugriff auf das Dateisystem ist also sehr schnell wieder erreicht. Im Fokus steht damit die Verfügbarkeit der Ressource Dateisystem, nicht die Performance oder die Integrität der Dateiinhalte (das Journaling bezieht sich nur auf Änderungen im Dateisystem, also beispielsweise Dateieinträge in Verzeichnissen, und nicht auf den eigentlichen Dateiinhalt).

Der LVM ist für die Skalierbarkeit des Dateisystems nützlich: im laufenden Betrieb und unter Last können einfach Festplatten in der Konfiguration ergänzt und in die Volume Group mit aufgenommen werden um das Dateisystem zu erweitern.

JFS2[Bearbeiten | Quelltext bearbeiten]

Ab 1995 begann IBM mit den Arbeiten an einer Neu-Implementierung, die skalierbarer sein sollte, um u. a. auf Mehrprozessorsystemen bessere Performance zu bieten. Gleichzeitig sollte die neue Version auch auf anderen Betriebssystemen als AIX nutzbar sein, dessen „historischer“ JFS-Code stark für die pSeries-Architektur optimiert war.

Die erste Veröffentlichung von JFS2 war mit dem Betriebssystem OS/2 Warp Server for e-business (OS/2 4.50, 32-Bit-x86IA-32“) im April 1999, in der Client-Version von OS/2 Warp enthalten ist es ab der Veröffentlichung vom Oktober 2000. Dieselbe Code-Basis ist auch in AIX ab Version 5L 5.1 vom Mai 2001 als Enhanced Journaled Filesystem „JFS2“ enthalten.[1]

Ab Dezember 1999 begann IBM, den Quelltext von JFS2 nach Linux zu portieren. Ab Februar 2000 waren die ersten Patches für den Linux-Kernel 2.4 verfügbar. Offiziell in den Linux-Kernel aufgenommen wurde JFS2 am 22. Februar 2002 in die Entwickler-Version 2.5.6-pre2 als „JFS“ (ohne die „2“).[2] Der Kernel-Entwickler Alan Cox integrierte das (Enhanced) Journaled Filesystem in seinen Kernel-Quellen ab Version 2.4.18-pre9-ac4 vom Februar 2002.[1] Auch von vielen Linux-Distributionen wurde JFS in den damals stabilen 2.4.x-Kernel eingepflegt, wie z. B. bei Debian GNU/Linux 3.0 vom Juli 2002.[3]

Unterschiede[Bearbeiten | Quelltext bearbeiten]

Die wichtigsten Größenunterschiede:

Unterschiede zwischen JFS1 und JFS2
Merkmal JFS1 JFS2
Maximale Dateisystemgröße 1 Tebibyte 4 Pebibyte (Empfohlen 32 Tebibyte)
Maximale Dateigröße 64 GiB 1 Pebibyte (Empfohlen 16 Tebibyte)
Anzahl der Inodes Statisch, bei Erstellung des Dateisystems festgelegt Dynamisch, begrenzt durch Plattenplatz
Verzeichnisorganisation Linear B+-Baum

Darüber hinaus wurden Optimierungen für aktuelle Server-Hardware vorgenommen; so ist die Leistung von JFS2 etwas besser als die von JFS1.

Es wird zwar Linux unterstützt, aber die Defragmentierung wurde bislang noch nicht auf Linux portiert. Dies kann dazu führen, dass durch das Anlegen und Löschen vieler kleiner Dateien (einige KiB) das Dateisystem fragmentiert und vor allem die Schreibzugriffe sich etwas verlangsamen und eine höhere CPU-Last erzeugen. Aufgrund der Extent (engl. Ausdehnung, bestehend aus einem Adresse-Länge-Paar)-basierten Allokation von Dateiblöcken und einer intelligenten Allokationsstrategie, d. h. benachbarte Extents derselben Datei werden während des Änderns von Dateien verschmolzen (dies wird wahrscheinlicher, je fragmentierter das Dateisystem wird), bleibt der Fragmentierungsgrad aber unter einem bestimmten Verhältnis. Viele andere Datei- und Datenbank-Systeme verwenden eine ähnliche Extent-basierte Dateiblock-Allokation.

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. a b Steve Best: IBM’s Journaled Filesystem. In: Linux Journal. Slashdot (ursprünglich Belltown Media), 1. Januar 2003, abgerufen am 30. Dezember 2021 (englisch).
  2. Release notes for v2.5.6. (Changelog) In: Linux-Kernel. kernel.org, 8. März 2002, abgerufen am 30. Dezember 2021 (englisch): „Summary of changes from v2.5.6-pre1 to v2.5.6-pre2 – (02/02/22 1.369.10.1) Add JFS file system“
  3. Dave Kleikamp: Who's using JFS? In: JFS for Linux. SourceForge, Dave Kleikamp und IBM, abgerufen am 30. Dezember 2021 (englisch): „The Linux distributions that ship JFS, along with the initial version in which JFS was available, are included in the following table: This table isn't being kept up to date do to the face that the filesystem is available in just about every distribution. It remains for historical reasons.“