Vergleich von Dateisystemen
Da diese Frage anscheinend noch nicht hinreichend beantwortet war, ich aber die Mail von eben nicht mehr finde, da sie irgendwo in einem Mailordner verschluckt wurde und der Poster eine "falsche" Zeit eingestellt hat, so dass eine chronologische Recherche eben nichts brachte, hier ein Vergleichsversuch unter neuem Topic: <zit> Was bedeutet Journaling-Filesystem? Welches Dateisystem ist das beste? Journaling funktioniert so: Jeder Schreibzugriff auf das Dateisystem wird zuerst im Journal bzw. Transaktionslog vorgemerkt, wenn die Daten später wirklich ins Dateisystem eingetragen wurden, wird der entsprechende Eintrag im Journal als erledigt markiert. Das Transaktionslog wird nicht gecacht sondern synchron geschrieben. Wenn der Computer jetzt mittendrin abstürzt, geht der fsck (File System Check) viel schneller und einfacher: Man schaut einfach im Journal nach, welche Daten noch zu schreiben sind, und macht das. Unvollständige Einträge im Journal werden entfernt. Beim klassischen fsck muss man dagegen das ganze Dateisystemen darauf untersuchen, ob noch irgendwo durch halbfertige Schreibvorgänge kaputte Daten liegen. Der Nachteil ist, dass diese zusätzliche Komplexität ein wenig Platz auf der Festplatte und Rechenzeit kostet. Die Frage nach dem besten Dateisystem ist schwer zu beantworten, alle haben ihre Vor- und Nachteile: * ext2: Es ist das Älteste und daher ohne Zweifel das am Besten getestete, daher ist es extrem stabil, außerdem gibt es mit fsck.ext2 ein funktionierendes Reparaturprogramm. Ext2 ist aber kein Journaling-FS. Ext2 und ext3 sind bei Verzeichnissen mit sehr vielen Dateien wesentlich langsamer als die anderen Dateisysteme. * ext3: Das ist einfach ext2+Journaling. Es ist daher geringfügig langsamer als ext2. Die großen Vorteile im Vergleich den anderen J-FS sind, dass es gegenüber ext2 nur ganz wenig neuen (und daher möglicherweise fehlerträchtigen) Code enthält und dass es kompatibel zu ext2 ist: Man kann ohne Datenverlust von ext2 zu ext3 konvertieren, außerdem kann man ext3-Dateisysteme z.B. mit älteren Kerneln einfach auch als ext2 mounten. * ReiserFS http://www.namesys.com/: Es ist das Journalling-FS, das schon am längsten im Linux-Kernel enthalten ist und daher auch über eine recht große Anwenderbasis verfügt. Weil es gänzlich anders als ext2 ist, gab es etliche Inkompabilitäten z.B. im Zusammenhang mit NFS. Quota-Support liegt nur als separater Kernelpatch vor. ReiserFS kann bei sehr vielen kleinen Dateien viel Platz sparen, da es nicht für jede einzelne Datei eine ganze Anzahl Blöcke belegt. * XFS/Linux http://oss.sgi.com/projects/xfs/: Port des bewährten Dateisystem XFS von IRIX auf Linux. XFS bietet alles was das Herz begehrt (inklusive Quota und ACL) und ist auf IRIX seit 1994 im Einsatz. Das Projekt liegt als externer Kernelpatch vor, der Linux Port ist noch recht jung, über seine Stabilität kann man daher noch keine definitiven Aussagen machen. * JFS http://oss.software.ibm.com/developerworks/opensource/jfs/: Port des Dateisystems JFS von OS/2 auf Linux. Auf Grund seines Entwicklungsstandes nur mäßig interessant. Lesetipps: * mount (8) * http://bulmalug.net/body.phtml?nIdNoticia=642 http://bulmalug.net/body.phtml?nIdNoticia=642 * http://freshmeat.net/articles/view/212/ http://freshmeat.net/articles/view/212/ * http://www.redhat.com/support/wpapers/redhat/ext3/why.html http://www.redhat.com/support/wpapers/redhat/ext3/why.html _________________________________________________________________ </zit> -- Registrierter Linuxuser #275535 http://aussatz.antville.org FREIE TEXT IN FREIEN NETZEN Diskussion + Ideen + Brainstorming
On Sun, Feb 16, 2003 at 07:51:34PM +0100, Thorsten von Plotho-Kettner wrote:
Journaling funktioniert so: Jeder Schreibzugriff auf das Dateisystem wird zuerst im Journal bzw. Transaktionslog vorgemerkt, wenn die Daten später wirklich ins Dateisystem eingetragen wurden, wird der entsprechende Eintrag im Journal als erledigt markiert.
Puristen unterscheiden drei Arten von Journal: Metadaten-Log und Daten-Log sowie logfreie ordered-writes. Bei einem Daten-Log funktioniert das so, wie Du es schreibst: Alle Writes gehen zunächst in das Journal, und danach wird das Journal abgearbeitet und in das Dateisystem comitted. ext3 kann so arbeiten, und das inzwischen nicht mehr so richtig unterstützte BSD LFS arbeitet zum Beispiel NUR mit einem Daten-Log und hat gar kein normales Dateisystem-Area im engeren Sinne mehr (das hat in bestimmten Bereichen Vorteile, ist aber so spezialisiert, dass es im allgemeinen Fall schlechter performt). Bei einem Metadaten-Log werden die Datenblöcke selber nicht geloggt, sondern nur die Änderungen an Verwaltungsstrukturen (Inode- und Datenzeiger-Blöcke). Dies ist, was Reiserfs und XFS machen, und für ext3 gibt es ebenfalls einen solchen Modus. Bei ordered writes existiert kein Log im engeren Sinne, sondern die Schreiboperationen im Cache des betriebssystems werden in so einer Reihenfolge ausführt ("baumaufwärts" in einer Datei und im Dateisystem), daß das Dateisystem immer in einem konsistenten oder wiederherstellbaren Zustand ist. BSD ufs macht das so, und kann obendrein ein nicht gechecktes Dateisystem mounten und dann im Hintergrund recovern ("background fsck"). Diese Form der Organisation kommt ohne ein explizites Log aus, hat aber für alle praktischen Zwecke denselben Effekt.
separater Kernelpatch vor. ReiserFS kann bei sehr vielen kleinen Dateien viel Platz sparen, da es nicht für jede einzelne Datei eine ganze Anzahl Blöcke belegt.
Reiserfs und XFS organisieren Verzeichnisse außerdem in Baumstrukturen und nicht als lineare Listen. Beide Dateisysteme sind daher bei Verzeichnissen mit vielen Einträgen (mehr als 1000 Einträge pro Verzeichnis) sehr viel schneller und skalieren sich leicht bis zu Verzeichnisgrößen mit 10E6-10E9 Einträgen.
* XFS/Linux http://oss.sgi.com/projects/xfs/: Port des bewährten Dateisystem XFS von IRIX auf Linux. XFS bietet alles was das Herz begehrt (inklusive Quota und ACL) und ist auf IRIX seit 1994 im Einsatz. Das Projekt liegt als externer Kernelpatch vor, der Linux Port ist noch recht jung, über seine Stabilität kann man daher noch keine definitiven Aussagen machen.
In Suse Linux ist es ab Werk enthalten. XFS in Irix hat außerdem eine ganze Reihe von weiteren Eigenschaften, die es sehr interessant für große Datei- und Dateisystemstrukturen machen. Ich weiß nicht, wieviel davon auf Linux portiert worden ist. XFS mapped Plattenblöcke für Dateien nicht in dem Moment auf eine physikalische Position auf der Platte, in dem der Platz benötigt wird, sondern erst in dem Moment, in dem die Datei auf das Medium geflushed wird. Das ist bei kleinen Dateien der Moment, in dem die Datei geschlossen wird. Der Block Allocator im Dateisystem hat so mehr Informationen als bei herkömmlichen Dateisystemen und könnte die Datei im Grunde genommen unfragmentiert allozieren, wenn es denn überhaupt noch eine Allokation gibt, die groß genug für die Datei ist. XFS entnimmt freien Speicher nicht aus einer großen Bitmap mit einem einzigen Lock, sondern unterteilt die Platte in jeweils Gigabyte große Allocation Regions. Während bei anderen Dateisystemen also jeweils nur eine Datei zur Zeit wachsen kann, können bei XFS Dateien in unterschiedlichen Allocation Regions parallel wachsen. Dies ist für Dateisysteme, in denen eine große Anzahl kleiner Dateien gleichzeitig erzeugt oder vergrößert wird, von großem Vorteil. In Unix garantiert das Betriebssystem, daß jeder write in eine Datei atomar ist, auch wenn er über mehr als einen Block geht. Wenn ich also 10 Blöcke ab Position 102400 in die Datei schreibe, dann kann ein Read nicht 5 geänderte und 5 ungeänderte Blöcke ab dieser Position vorfinden, sondern er findet entweder 10 geänderte oder 10 alte Blöcke vor. Unix implementiert das mit einem Lock in der Inode der Datei, d.h. es kann überhaupt immer nur ein Write zur Zeit aktiv sein, und wenn dies der Fall ist, dann kann kein Read auf die Datei aktiv sein. In einer großen Datenbankdatei, an der an vielen Stellen zur Zeit gleichzeitig geändert werden muß, ist dies ein Bottleneck und verlangsamt den Zugriff. XFS erzeugt an der Inode der Datei stattdessen eine Liste von Writes (eigentlich einen Baum, alles in XFS sind Bäume), mit Startadresse und Länge. XFS erlaubt jetzt beliebig viele nichtüberlappende Writes zu, und verzögert nur die Reads, die Bereiche berühren, die gerade geschrieben werden. Auf diese Weise können sehr viele parallele Schreibzugriffe auf eine einzelne Datei stattfinden. Für eine Technologie von 1994 ist XFS heute noch allen anderen Dateisystemen weit voraus.
* JFS http://oss.software.ibm.com/developerworks/opensource/jfs/: Port des Dateisystems JFS von OS/2 auf Linux. Auf Grund seines Entwicklungsstandes nur mäßig interessant.
JFS und LVM sind Technologien, die aus der Welt von AIX, nicht von OS/2, stammen. HPFS von OS/2 ist etwas anderes.
Registrierter Linuxuser #275535
Kristian (Registrierter Linuxuser #70337, Registrierter Slashdotuser #824 :-) -- http://www.amazon.de/exec/obidos/wishlist/18E5SVQ5HJZXG
Kristian Koehntopp wrote:
On Sun, Feb 16, 2003 at 07:51:34PM +0100, Thorsten von Plotho-Kettner wrote:
Journaling funktioniert so: Jeder Schreibzugriff auf das Dateisystem wird zuerst im Journal bzw. Transaktionslog vorgemerkt, wenn die Daten später wirklich ins Dateisystem eingetragen wurden, wird der entsprechende Eintrag im Journal als erledigt markiert.
[ ... viel viel Info ] Hallo Leute, im SuSE 8.1 Prof.-Handbuch steht auf den Seiten 519-528 einiges über die verschiedenen Dateisysteme. Wird wahrscheinlich so ähnlich sein, wie die Infos von Kristian. Viele Grüsse Joachim
* Am Mon, 17 Feb 2003 schrieb Joachim Kieferle:
Kristian Koehntopp wrote:
On Sun, Feb 16, 2003 at 07:51:34PM +0100, Thorsten von Plotho-Kettner wrote:
Journaling funktioniert so: Jeder Schreibzugriff auf das Dateisystem wird zuerst im Journal bzw. Transaktionslog vorgemerkt, wenn die Daten später wirklich ins Dateisystem eingetragen wurden, wird der entsprechende Eintrag im Journal als erledigt markiert.
[ ... viel viel Info ]
Hallo Leute,
im SuSE 8.1 Prof.-Handbuch steht auf den Seiten 519-528 einiges über die verschiedenen Dateisysteme. Wird wahrscheinlich so ähnlich sein, wie die Infos von Kristian.
Na, das glaube ich nicht, das würde der SuSE-Handbuch-Praxis doch sehr widersprechen, da so gepackte technische Information unterzubringen... Gruß Christoph -- Christoph Maurer - 52072 Aachen - Tux#194235 mailto:christoph-maurer@gmx.de - http://www.christophmaurer.de Auf der Homepage u.a.: Installation von SuSE 7.0 auf Notebook Acer Travelmate 508 T, Elektrotechnik an der RWTH Aachen
participants (4)
-
Christoph Maurer
-
Joachim Kieferle
-
Kristian Koehntopp
-
Thorsten von Plotho-Kettner