Warum gibt es so viele konkurrierende Dateisystem-Designs? [geschlossen]


27

Nur eine kurze Frage, aber warum gibt es heute noch so viele konkurrierende und verwendete Dateisysteme? (ntfs, fat32, ext3 (ffs) usw.)

Es scheint, dass sich Dateisystemdesigner auf die besten Aspekte jedes Systemtyps einigen und ein "bestes" Dateisystem implementieren könnten, nicht wahr? Nur ein Gedanke, da es diese Dateisysteme schon eine Weile gibt, und es sollte zumindest ein wenig offensichtlich sein, welche gute Eigenschaften gegenüber anderen haben, und wir könnten einfach das Gute in jedem kombinieren und ein ultimatives System schaffen, das viel besser ist


39
Sollten wir versuchen, einen Ferrari auch mit einem Bagger zu kombinieren? Design basiert auf einer Reihe von Kompromissen. Perfekt existiert nicht.
Pubby

7
@ Pubby8 Ich fahre einen.
The Muffin Man

8
Die wahre Antwort darauf ist nicht nur eine technische, sondern auch eine rechtliche Diskussion.
Detly

38
Diese Frage erinnert mich an xkcd.com/927
dan04

7
Wir machen das ungefähr zur selben Zeit, in der wir eine Kamera herstellen, die ein großes, langes, hochwertiges Objektiv hat, sehr leicht ist, in eine Tasche oder Handtasche passt und sehr kostengünstig ist. Die Idee, dass Sie alle guten Teile zu einem Guten kombinieren können, funktioniert in der Praxis nicht wirklich. Eine Liste mit guten Dingen ist entweder unvollständig oder voll von Gegenständen, die sich widersprechen .
Eric Lippert

Antworten:


32

Lassen Sie uns einen Moment über die Besonderheiten nachdenken, indem wir Beispiele verwenden, die Sie zitiert haben:

  • ntfs - Eigentum von Microsoft. Jeder, der nicht Microsoft ist, kann dies nicht verwenden, daher müsste etwas anderes verwendet / erstellt werden. Wenn Sie Microsoft sind, möchten Sie dies aufgrund der Probleme des nächsten Aufzählungspunkts über FAT verwenden.

  • fat32 - Nicht modern genug. Die maximale Dateigröße beträgt 4 GB. Die Verzeichniseintragssuche lautet O (n). Die Zuordnungstabelle ist eine verknüpfte Liste, anstatt etwas Effizienteres wie eine Zuordnungsbitmap (bei der es sehr schnell geht, zusammenhängenden freien Speicherplatz zu finden). Unterstützt keine Berechtigungen. Unterstützt keine festen oder symbolischen Links. Unterstützt kein Journaling.

  • ext3 - Dies war eine Erweiterung von ext2, die hauptsächlich das Journaling unterstützte.

Es scheint also ein paar Gründe zu geben:

  1. Einem früheren Dateisystem fehlt etwas. Bei FAT fehlt es an viel: sowohl an (1) Merkmalen als auch an (2) Leistung. Im Fall von ext2 gab es keine Journale für Updates, daher dauerte die Wiederherstellung nach einem Absturz länger.

  2. Ein vorhandenes Dateisystem würde wahrscheinlich funktionieren, aber es gehört nicht Ihnen. (zB NTFS, wenn Sie nicht Microsoft sind). In diesem Fall haben Sie eigentlich keine andere Wahl, als sich Ihre eigenen auszudenken.


2
Nitpick: Eigentlich ist die maximale Dateigröße für FAT32 (gemäß den von Microsoft selbst veröffentlichten offiziellen Spezifikationen) 2 GiByte, aber niemand, nicht einmal Microsoft, setzt sie so dumm um :-)
Jörg W Mittag

16
Nitpick 2: Das NTFS-Dateiformat wurde von Microsoft erfunden, es ist jedoch ein veröffentlichtes Format und es sind keine Patentbelastungen bekannt. Verschiedene Nicht-Microsoft-Betriebssysteme implementieren NTFS, einschließlich Linux.
Stephen C

6
XFS - zum schnellen Streaming-Abrufen großer Dateien (für Video-Workstations). ZFS - ein Dateisystem für das 21. Jahrhundert. ReiserFS - ein Versuch, ein "Killer" -Dateisystem zu erstellen. Jedes Dateisystem hat seine Stärken und Schwächen, jedes wurde entwickelt, um eine bestimmte Anforderung zu erfüllen.
Timothy Baldridge

3
@Stephen C: NTFS wurde nicht genau von Microsoft "erfunden". en.wikipedia.org/wiki/NTFS#History
Secure

1
@StephenC Bist du dir da sicher? Soweit ich weiß, ist NTFS nicht dokumentiert. Die meisten Open-Source-Implementierungen warnen Sie vor schwerwiegenden Schäden, wenn Sie versuchen, mit diesem Treiber auf sie zu schreiben, wenn Windows die Festplatte in bestimmten Zuständen verlassen hat.
Asveikau

24

Kurze Antwort: Eine Größe passt nicht für alle.

Es gibt Kompromisse. Wenn Sie zum Beispiel eine aufgezeichnete FS möchten, müssen Sie dafür bezahlen (Effizienz, Komplexität usw.), aber etwas daraus ziehen. Einige haben nicht das Bedürfnis nach einem aufgezeichneten FS und wollen nicht dafür bezahlen, andere tun es. Gleiches gilt für andere "Features" des FS.


Wann haben Sie das letzte Mal entschieden, welcher FS Ihren spezifischen Anforderungen entspricht? Ich bin eher auf der Codierungsseite als auf der Operationsseite, aber eine solche Entscheidung habe ich nie gesehen. Zumal es oft keine wirkliche Wahl gibt: MS-> Ntfs. Linux: Ext (aktuell), vielleicht Reiser.
Keppla

@keppla: Entscheidungen werden oft von den OS-Designern getroffen. Dateisysteme werden vom Endbenutzer nicht balkanisiert.
Zano

2
@keppla: Jedes Mal, wenn ich mich entscheide, ein Flash-Laufwerk zu formatieren, deaktiviere ich das Journaling und entscheide, ob es nur für meinen eigenen Gebrauch (dann ext2, da es über POSIX-Dateiberechtigungen verfügt) oder zum Teilen mit anderen (dann fat32) bestimmt ist. Für Festplatten verwende ich jedoch
normalerweise

1
@keppla Fast alle Linux-Systeme können mehrere verschiedene Dateisysteme verwenden, nicht nur ext [2..4]. Wenn ich eine Linux-Box einrichte, schaue ich auf den Zweck der Box. Zum Beispiel: Auf meinem Linux-DVR-Computer wird JFS auf dem Videospeicherlaufwerk ausgeführt, da große Dateien viel eleganter als mit ext3 verarbeitet werden und weniger CPU-Overhead als mit XFS verbraucht wird. Aber für die Benutzerkonten und Systemdateien auf demselben Computer führe ich EXT3 aus, da es sich um kleinere Dateien handelt.
jwernerny

@keppla: Außerdem können Sie auch unter Mac OS X zwischen verschiedenen Kombinationen der Funktionen ihres FS wählen. Außerdem wollte ich ursprünglich den Ton von jemandem haben, der den FS entwirft. Weil das OP fragte, warum ein Designer nicht einen FS entwirft, der das Beste von allem hat. Und ich versuche darauf hinzuweisen, dass das Beste im Verhältnis zu dem Ort ist, an dem es verwendet wird. An einigen Stellen ist ein Feature nützlich, an anderen Stellen ist dasselbe Feature ein unnötiger Aufwand.
Jungle Hunter

14

Es kann niemals ein "Bestes" von irgendetwas geben, weil es so viele Meinungen darüber gibt, was "Bestes" ist. Die Entscheidung richtet sich nach den Bedürfnissen und Einschränkungen des Benutzers. Entwürfe basieren immer auf ihrer Fähigkeit, sich in Einschränkungen einzufügen.

Auf einem einfachen Mobiltelefon müssen einige hundert Kontakte, der Verlauf von Kurzmitteilungen und einige kleine Apps gespeichert sein. Muss das Dateisystem eine hierarchische Verzeichnisstruktur auf Multi-Terabyte-Laufwerken in einer RAID-Konfiguration unterstützen? Ist auf dem Gerät genügend RAM vorhanden, um ein solches Dateisystem auszuführen? Benötigt das Dateisystem komplexe ACLs? Wahrscheinlich nicht - für all diese Fragen - so würde ein einfaches, ressourcenschonendes Dateisystem ausreichen.

Unternehmen werden auch verschiedene Produkte entwickeln, um sich einen Wettbewerbsvorteil zu sichern. Zum Beispiel wirbt Apple mit der Fähigkeit seines HFS + -Dateisystems, zu verfolgen, welche Dateien in letzter Zeit geändert wurden, damit Backups schnell durchgeführt werden können. Auf der anderen Seite können die Treiber für ein Disketten-Dateisystem (FAT) in nur wenigen KB Arbeitsspeicher passen.


1
Das Problem ist NICHT, dass sich niemand darauf einigen kann, was "am besten" bedeutet. Das Problem ist, dass es kein "bestes" geben kann ...
Stephen C

1
@Stephen: Natürlich kann es einen "Besten" geben. Wir müssen nur zuerst die Messmetrik festlegen.
Donal Fellows

Nur wenn Sie alle einverstanden sind .
Stephen C

11

Zu viel hängt davon ab, was Sie optimieren möchten.

Betrachten Sie FAT für einen Moment: Die Unterstützung für lange Dateinamen ist klug (um es gut auszudrücken), und das Durchsuchen von Dateien in einem Verzeichnis ist linear, sodass es sehr schnell langsam wird , wenn ein Verzeichnis viele Dateien enthält. Zur gleichen Zeit hat es ein Minimum an Metadaten, um rohe Schreibgeschwindigkeit ist sehr gut, und da es insgesamt so einfach ist, Code zu implementieren, kann es ziemlich klein sein.

Etwas wie ext2 oder ext3 fügt viele Funktionen und Fähigkeiten hinzu, die in FAT einfach nicht vorhanden sind. Die Suche nach Dateien ist auch viel schneller. Gleichzeitig ist die Raw-Schreibgeschwindigkeit wahrscheinlich etwas langsamer, und der Code zum Implementieren des Dateisystems ist zweifellos viel größer.


9

Nur eine kurze Frage, aber warum gibt es heute noch so viele konkurrierende und verwendete Dateisysteme? (ntfs, fat32, ext3 (ffs) usw.)

Es scheint, dass sich Dateisystemdesigner auf die besten Aspekte jedes Systemtyps einigen und ein "bestes" Dateisystem implementieren könnten, nicht wahr?

Nehmen wir an, es gab keine Kompromisse, und Dateisystemdesigner implementierten ein "bestes" Dateisystem, das frei von Patentproblemen war und als BSD / GPL mit doppelter Lizenz veröffentlicht wurde, so dass es für MS und Debian gleichermaßen akzeptabel wäre. Was lässt Sie denken, dass die anderen Dateisysteme über Nacht verschwinden würden?

Ich glaube nicht, dass jemand FAT32 seit 10 Jahren auf einer neuen Festplatte verwendet, aber es ist immer noch der De-facto-Standard für die Formatierung von USB-Laufwerken, SD-Karten usw. Hersteller von Kameras und Mobiltelefonen haben Firmware für die Verwendung getestet. Arduino-Bastler haben stabile Bibliotheken, um es zu verwenden. Sie alle werden große Anreize brauchen, um sich zu ändern.

Und dann haben Sie Probleme mit der Abwärtskompatibilität mit älteren Betriebssystemen (insbesondere Windows, dessen Benutzer keine neuen Dateisystemtreiber installieren möchten).


5
Es ist schön, ein externes Gerät für plattformübergreifende Funktionen auf FAT32 formatiert zu haben. Aus diesem Grund sehen Sie viele externe Geräte, die mit FAT32 formatiert sind.
Matt

@Matt, ist das nicht eine Teilmenge dessen, was ich gesagt habe?
Peter Taylor

3
Und für kleine Mikros passt der Code zur Implementierung der grundlegenden FAT-Unterstützung auf nur wenige KB. Dies ist wichtig, wenn Sie nur ein paar KB insgesamt zum Spielen haben.
quick_now

2
@ Peter Ich habe es eher gesagt, weil man es ohne Probleme auf verschiedenen Betriebssystemen verwenden kann.
Matt

4

Wie so oft bei der Berechnung ist die Antwort (a) aufgrund historischer Umstände und der Notwendigkeit, die Abwärtskompatibilität aufrechtzuerhalten, und (b) weil einige Methoden für einige Aufgaben besser geeignet sind als andere.

Auf (a) müssen Sie sich daran erinnern, dass das "Winchester-Laufwerk" - ich bin gerade so alt, dass ich mich daran erinnern kann, dass sie so genannt wurden - (was der Rest der Welt eine "Festplatte" nennt) nur etwa die Hälfte der Zeit existiert hat Zeit des elektronischen Rechnens und selbst dann war es aus Kostengründen für die meisten Benutzer nicht einmal so lange zugänglich. Das FAT-Dateisystem funktionierte gut auf Disketten und auch auf den ursprünglichen kleinen Festplatten, da es einigermaßen effizient war und einen geringen Overhead erforderte. Sobald es in Betrieb genommen wurde - und seine Verwendung weit verbreitet war, weil es einfach zu implementieren war -, konnten die Hersteller seinen Benutzern nicht mitteilen, dass ihre alten Daten plötzlich ungültig waren.

Für Linux-Benutzer beispielsweise ließ die Entwicklung eines stabilen NTFS-Treibers nicht lange auf sich warten, sodass Geräte, die als FAT formatiert waren, systemübergreifend gelesen und geschrieben werden konnten.

Zu (b) - Denken Sie an die Unterschiede zwischen einem System, in dem beispielsweise Milliarden von textbasierten Datenbankeinträgen gespeichert sind, und einem System, in dem Mediendateien in DVD-Länge gespeichert sind. Für die Datenbank kann jeder Datensatz sehr klein sein - vielleicht nur 30 oder 40 Bytes, und ein Dateisystem, das ein ganzes 'Segment' (wie auch immer Sie das definieren möchten) der Festplatte zuweist, verschwendet wahrscheinlich Speicherplatz. Nicht so bei den DVDs - größere "Segmente" (innerhalb der Vernunft offensichtlich) dürften in Bezug auf den Platz hocheffizient sein.

Unterschiedliche Dateisysteme sind also für unterschiedliche Zwecke konzipiert.


3

Ein weiteres Beispiel dafür, warum es nie ein perfektes Dateisystem für alle geben kann: Festplatten und SSDs haben sehr unterschiedliche Lese- / Schreibzugriffseigenschaften. Ein SSD-optimiertes Dateisystem funktioniert wahrscheinlich am besten, wenn Dateien wie verrückt fragmentiert werden, jedoch mit jedem Fragment die Seitengröße der SSD selbst; Dies würde auf einer Festplatte furchtbar funktionieren. Ein HDD-optimiertes Dateisystem versucht, Dateien so unfragmentiert wie möglich zu halten, und legt häufig verwendete Dateien sogar im "heißen" Bereich auf dem sich schneller drehenden äußeren Teil des Plattentellers ab. Diese Eigenschaften würden der Lesegeschwindigkeit von SSD überhaupt nicht helfen und stellen eine enorme Belastung für die Art und Weise dar, in der sie geschrieben werden.


2

Ich denke, eine sehr wichtige Tatsache fehlt. Meistens denken Programmierer, dass ihre Arbeitsweise allen anderen überlegen ist, und schauen sich daher ein Dateisystem-Design an und finden Probleme und Lösungen, die allgemeiner, eleganter, schneller und korrekter zu sein scheinen. Und wenn dieses Gefühl stark genug ist, können sie ihr eigenes Dateisystem erstellen.

Dies führt zu Konkurrenz, Zersplitterung, Konfusion und ich hoffe am Ende bessere Lösungen und mehr Optionen, um eine passende Lösung für Sie zu wählen.


1

Hier ist ein weiteres konkretes Beispiel dafür, warum Sie ein separates Dateisystem benötigen oder die Funktionalität eines vorhandenen FS erweitern würden.

  1. Angenommen, Sie sind ein Datenbankanbieter und möchten die Komplexität der Verwaltung von Striping / Spiegelung von Daten reduzieren, um die E / A zu verbessern. Sie werden das Bedürfnis verspüren, die Funktionalität grundlegender Dateisysteme zu erweitern, wie dies Oracle mit ASM (Automated Storage Manager) getan hat, das einem Logical Volume Manager gleicht.

1

In Ihrer Liste erwähnen Sie ein altes Dateisystem, das verwendet wird, weil ein besseres nicht verfügbar ist, es jedoch schnell ist.

Es gibt andere Dateisysteme. Ich habe gehört, dass das Google-Dateisystem hauptsächlich für die schnelle Duplizierung / Redundanz gedacht ist, wenn eine Festplatte oder ein Server ausfällt. Ich erinnere mich, dass ich von einem anderen Dateisystem gehört habe, das für viele kleine Dateien gemacht wurde und auf einem System für viele Anfragen für kleine Dateien (Thumbnails) verwendet werden sollte.

Im Wesentlichen haben sie unterschiedliche Ziele und / oder können Anstand gegenüber Open Source sein.


0

Ich denke, dass ZFS (von Solaris im Sun-System [jetzt Oracle] verwendet) DIE Lösung für das Dateisystem ist.

Leider hat Oracle OpenSolaris für Discoverer geschlossen und getestet.

ZFS ist Open Source, einige Linux-Benutzer versuchen es zu integrieren. Weitere Informationen finden Sie in Wikipedia.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.