ext3 + WinFS = ext3++?!

Hallo Leute,

der Feind, :) (bitte keine Micosoft-versus-Linux-Diskussion, das war nur ein Scherz), Mircrosoft, arbeitet , wie ihr sicher wisst (mal abgesehen von denen die nicht mehr über den eigenen Tellerand schauen, ja solche Leute soll es geben), an einem neuen Betriebssystem namens Windows Longhorn (Rööhhhr).

Natürlich habe auch ich mich darüber informiert, ehrlich gesagt kann ich dem System aber nichts besonders tolles abgewinnen. Es ist, so wie ich finde eine noch überspitztere Windows-XP-Variante. Alles ist noch viel Bunter und mit tollen Effekten belegt (die einen risiegen Batzen Rechenleistung verbrauchen).
Auch sind alle Funktionen durch überdimensionale Buttons erreichbar, welches den Rechts-Klich der bisher nötig war, überflüssig macht. Was der Übersichtlichkeit dienen soll, dummerweise aber genau das nicht macht, weil man nun permanent die dummen risiegen Funktionsbuttons eingeblendet hat und diese viel Bildschirmplatz verbrauchen und damit kein Platz für den eigentliche Inhalt bleibt. Außerdem soll es ja das umstrittene TCPA, so wie das DRM (Digital Right Managment) enthalten.


Naja, aber das wollte ich gar nicht sagen, viel interessanter finde ich, die Idee des WinFS. Zumindest teiweise, weil ich nicht verstehe, wozu Adressdaten dort gespeichert werden, aber na meinet wegen.
Ich find den Ansatz, statt einer FAT (File Allocation Table) oder dem entsprechenden Gegenstück unter den NT-Systemen, eine Datenbank als zentrale Dateitabelle zu nutzen einen guten Gedanken.

Wenn man überlegt, eine Tabelle ist etwas sehr staatisches, man kann sie, auf Grund dessen, dass sie zumeist aus einer sequentiellen Datei (ein Datensatz nach dem anderen und wenn man etwas ändern will, muss man die gesamte Datei neu schreiben) schlecht verwalten. Das anlegen bzw. ändernvon Einträgen geht auf Grund des kompletten neu schreibens der Datei nur sehr langsam und auch das Suchen, nach dem Datensatz in welchem steht an welchem Ort sich die Datei auf der Festplatte befindet und welche Attribute sie aufweist, welches ja bei jedem Dateizugriff statt finden muss, ist auf Grund das alle Datensätze mit dem Suchstring verglichen werden müssen (Top-Down-Methode, oben anfangen, den ersten Datensatz vergleichen, ob er mit dem gesuchten übereinstimmt, dann den nächsten und den nächsten un den nächsten) auch nicht grad der schnellste.

Eine Datenbank hingegen ist so angelegt, dass sie all diese Probleme nicht hat. Sie besteht (wenn man von MS Access absieht) in der Regel nicht aus einer Datei, sondern aus mehreren. Sie verfügt über Mechanismen, die es ermöglichen neu angelegte bzw. geänderte Datensätze zu cachen und die enstprechenden Dateien, was ja etwas mehr Zeit in Anspruch nimmt, später, wenn es sich anbietet und das System nicht am arbeiten hindert zu ändern. Darüber hinaus verfügt eine Datenbank, im Gegensatz zu einer sequentiellen Datei, die Datenbestände nach verschiedenen Kriterien zu indizieren und auch aufzubereiten, so dass ein Suchen nach einer bestimmten Datei aber auch nach Kriterien einer Datei viel schneller von Statten gehen kann. Auch lässt sich eine Datenbank, je nach Einsatzzweck optimieren, damit lässt sich auch das Dateisystem an den jeweiligen Verwendungszweck anpassen und optimieren (auch wenn ich nicht weiß in wie weit dies Microsoft nutzt).

Aber wir sind hier ja nicht in einem Windows- sondern in einem Linuxforum (Dieser Thread wurde ursprünglich in einem mpuren Linux-Forum gepostet). Allso kommen wir zum Kern. Eines der häufigst eingesetzten Dateisteme unter Linux ist ext2 bzw. ext3. Dieses Dateisystem basiert, wie hier sicher die meisten wissen (für alle anderen erkläre ich es jetzt), nicht wie die jetzigen Microsoft-Dateisysteme auf einer Tabelle, welche am Anfang jeder Partition steht und die Informationen über die Dateien enthält (also Name, Flags, Änderungsdatum, Erstellungsdatum, so wie wo auf der Festplatte die jeweilige Datei beginnt), sondern aus Indodes welche auf der Festplatte verteilt sind und die Dateiinformationen enthalten, gefolgt von den Bitmaps, welche dann die eigentlichen Dateien enthalten.

Sollte an diesem Exkurs etwas falsch sein, bitte informoeren (Irren und unwissen ist schließlich menschlich).

Ich habe, wie viele andere sicher auch, schon längere Zeit darüber nachgedacht, ob man ext2 bzw. ext3 nicht mit einer optionalen Dateitabelle ausrüsten sollte, eventuell auch auf Basis einer Datenbank. Denn das jetzt verwendete Prinzip hat zwar den Vorteil, dass man keine zentrale Tabelle hat, welche bei Beschädigung eventuell das gesamte Dateisystem in den Eimer treten würde (was bei Windows ab un zu der Fall ist) und sich bei Servern sehr schlecht machen würde. Anderer Seits erkauft man sich diesen Vorteil durch (jedenfalls meinen logischen Schlussfolgerungen zu Folgem, ich habe es nicht per Benchmark ausprobiert) einen langsameren Dateizugriff, weil die Informationen zu den Dateien nicht an einem bestimmten Ort, sondern irgendwo, verteilt auf der Festplatte herum geistern.
Nun kann man auch vom "Feind" lernen, zumal die Devise bei Linux auch Lautet "alles was Gut ist wird integriert". Meine Idee wäre den Vorteil von dem zukünftigen WinFS (den der schnellen, sebstorganisierenden zentralen Dateidatenbank) mit denen von ext2 bzw. ext3 zu kombinieren und sozusagen ext3++ zu kreieren.

Dieses neue Dateisystem bzw. vielmehr diese Dateisystemerweiterung hätte gegenüber WinFs den Vorteil, dass es zwar über die schnelle zentrale Datebank verfügt, wie WinFs auch, aber nicht so verletzbar ist. Denn die verteilten Dateiinformationen in den Inodes würden ja bestehen bleiben, so dass bei irreperabler Beschädigung der Datenbank, bei der WinFS die Gretsche machen würde, weiter gearbeitet werden könnte. Das hätte vorallem bei Servern große Vorteile, der Dateisystemtreiber würde die Beschädigung fest stellen und auf den alten Inode-Modus wecheln und das (je nach dem wie man das gestaltet) on-demand. Es würde zwar langsamer werden, aber der Server würde weiter arbeiten. Wenn dann, zum Besipiel nachts, nicht mehr so viel Betrieb auf dem Server wäre, könnte dieser die Datenbank, anhand der Inodes, wieder herrstellen.
Ja und gegenüber normalen ext3 hätte es eben den Gescwindigkeitsvorteil.

O.K. lange Rede, sehr kurzer Sinn, was denk ihr darüber? Ist sowas realistisch? Dent ihr sowas wäre umsetzbar?

Mit freundlichen (visionären) Grüßen

Mailerdemon
 
Ich halte absolut nichts von WinFS. Datenbanken gehören nicht in die Dateisystem-Schicht, sie sind zu aufgeblasen und unhandlich. Jemand hat es mal so ausgedrückt:
"Wenn man es nicht schafft, eine anständige Suche für das eigene Dateisystem zu implementieren, pfropft man eben eine Datenbank drauf".

Der Vorteil von ext3 ist die direkte Kompatibilität zu ext2, was die Migration auf ein journaling fs einfach macht und was eine solide sehr lang erprobte Basis bietet. Etwas an der internen Verwaltungsstruktur zu ändern würde gewissermaßen den Sinn von ext3 zerstören.
Für Performance-Probleme hingegen gibt es bereits eine wesentlich bessere Lösung mit einer einfachen Datenstruktur: B*-Bäume. Hier sind die Inodes in einem binären Baum organisiert, dessen Blätter zusätzlich sequentiell verkettet sind. Diese Technik wird z.B. von ReiserFS, JFS und XFS benutzt, alle 3 Dateisysteme sind für Linux verfügbar.

Greets, Ziri
 
Zurück
Oben