なぜ競合するファイルシステムの設計が非常に多いのですか?[閉まっている]


27

簡単な質問ですが、なぜ今日でも競合して使用されているファイルシステムが非常に多いのですか?(ntfs、fat32、ext3(ffs)など)

ファイルシステムの設計者は、各タイプのシステムの最良の側面に同意し、「最良の」ファイルシステムを実装できるようです。これらのファイルシステムはしばらく前から存在しており、どのファイルシステムが他のファイルシステムよりも優れた品質を持っているかは少なくともある程度明らかであるはずです。


39
フェラーリとバックホーも組み合わせてみるべきですか?設計は一連のトレードオフに基づいています。完璧は存在しません。
Pubby

7
@ Pubby8運転します。
マフィンマン

8
これに対する真の答えは、単なる技術的な議論ではなく、法的議論でもあります。
はっきりと

38
この質問は、xkcd.com
dan04

7
これは、大きくて長い高品質のレンズを備え、本当に軽量で、ポケットや財布に収まり、非常に安価なカメラを作るのとほぼ同時に行います。あなたがすべての良い部分を取り、それらを1つの最高のものに結合できるという考えは、実際には実際にはうまくいきません。良いもののリストは不完全である、互いに矛盾するアイテムでいっぱいです
エリックリッパー

回答:


32

引用した例を使用して、ここで詳細を少し考えてみましょう。

  • ntfs-Microsoftが所有しています。マイクロソフト以外の人はこれを使用できないため、異なるものを使用/作成する必要があります。さて、あなたがマイクロソフトなら、次の箇条書きの問題のために、これをFATよりも使いたいと思うでしょう。

  • fat32-十分に近代的ではありません。最大ファイルサイズは4GBです。ディレクトリエントリのルックアップはO(n)です。割り当てテーブルは、割り当てビットマップなどのより効率的なものではなく、リンクされたリストです(連続した空き領域を見つけるのは本当に迅速です)。権限をサポートしていません。ハードリンクまたはシンボリックリンクはサポートしていません。ジャーナリングはサポートしていません。

  • ext3-これは主にジャーナリングをサポートするためのext2の拡張機能です。

そのため、いくつかの理由があるようです。

  1. 以前のファイルシステムには何かが欠けています。FATの場合、(1)機能と(2)パフォーマンスの両方の点で多くが欠けています。ext2の場合、ジャーナリングされた更新がなかったため、クラッシュからの回復に時間がかかりました。

  2. 既存のファイルシステムはおそらくそうでしょうが、それはあなたのものではありません。(たとえば、Microsoftでない場合はNTFS)。この場合、あまり選択肢はありませんが、自分で選択する必要があります。


2
Nitpick:実際には、FAT32の最大ファイルサイズ(Microsoft自身が公開した公式仕様による)は2 GiByteですが、だれも、Microsoftでさえ馬鹿げて実装しいません:
Mittag

16
Nitpick 2:NTFSファイル形式はMicrosoftによって発明されましたが、公開された形式であり、既知の特許侵害はありません。Linuxなど、Microsoft以外のさまざまなオペレーティングシステムがNTFSを実装しています。
スティーブンC

6
Xfs-大量のファイルをすばやくストリーミング取得できるように設計されています(ビデオワークステーション用に設計されています)。ZFS-21世紀のファイルシステム。ReiserFS-「キラー」ファイルシステムを作成する試み。各ファイルシステムには長所と短所があり、それぞれ特定のニーズを満たすために作成されました。
ティモシーボールドリッジ

3
@Stephen C:NTFSはMicrosoftによって正確に「発明された」わけではありません。en.wikipedia.org/wiki/NTFS#History
セキュア

1
@StephenCそれについて確かですか?私が知る限り、NTFSは文書化されていません。ほとんどのオープンソースの実装は、Windowsが特定の状態でディスクを離れたときに、そのドライバーを使用して書き込みを行おうとすると深刻な損害が発生することを警告しています。
asveikau

24

簡単な答え:1つのサイズがすべてに適合するわけではありません。

トレードオフがあります。たとえば、ジャーナリングされたFSが必要な場合、費用(効率、複雑さなど)を支払いますが、そこから何かを得ます。ジャーナル化されたFSの必要性を感じない人もいれば、支払いをしたくない人もいます。FSの他の「機能」と同じです。


どのFSが特定のニーズに適合するかを最後に決定したのはいつですか?私は操作よりもコーディングの方が好きですが、そのような決定を見たことはありません。特に、本当の選択肢がないことが多いため、MS-> Ntfsです。Linux:Ext(latest)、多分Reiser。
ケプラ

@keppla:多くの場合、決定はOS設計者によって行われます。ファイルシステムは、エンドユーザーによって管理されていません。
ザノ

2
@keppla:フラッシュドライブをフォーマットすることにしたときはいつでも、ジャーナリングをオフにし、それが自分用(POSIXファイルのアクセス権があるためext2)に使用するか、他のユーザーと共有する(その後にfat32)かを決定します。しかし、ハードドライブにはNTFS(Windowsの場合)またはext4(Linuxの場合)を使用する傾向があります
...-liori

1
@kepplaほとんどすべてのLinuxシステムには、ext [2..4]だけでなく、いくつかの異なるファイルシステムを使用する機能が備わっています。Linuxボックスをセットアップするとき、ボックスの目的を確認します。たとえば、私のLinux DVRマシンはVideo StorageドライブでJFSを実行します。これは、ext3よりも大容量のファイルをより適切に処理し、XFSよりもCPUオーバーヘッドが少ないためです。しかし、同じマシン上のユーザーアカウントとシステムファイルについては、より小さいファイルサイズを扱っているため、EXT3を実行します。
-jwernerny

@keppla:さらに、Mac OS Xでも、FSの機能のさまざまな組み合わせから選択できます。また、もともと私は、FSを設計する人の口調になることを意図していました。なぜなら、OPは、デザイナーが何よりも優れたFSを設計しない理由を尋ねたからです。そして、私が指摘しようとしているのは、それが使用される場所に関連していることです。機能が有用な場所には、同じ機能が不必要なオーバーヘッドである場所があります。
ジャングルハンター

14

「最高」とは何かについて非常に多くの意見があるため、「最高」が存在することはありません。この決定は、ユーザーのニーズと制限に固有のものです。デザインは常に、制約内に収まる能力に基づいています。

基本的な携帯電話には、数百の連絡先、テキストメッセージの履歴、およびいくつかの小さなアプリを保存する必要があります。そのファイルシステムは、RAID構成のマルチテラバイトドライブ上の階層ディレクトリ構造をサポートする必要がありますか?そのようなファイルシステムを実行するのに十分なRAMがデバイスにありますか?ファイルシステムには複雑なACLが必要ですか?おそらくそうではありません-これらすべての質問に対して-なので、シンプルでリソースを浪費するファイルシステムで十分でしょう。

企業はまた、競争上の優位性を維持するためにさまざまな製品を開発します。たとえば、AppleはHFS +ファイルシステムが最近変更されたファイルを追跡する機能を売り込んでおり、バックアップが迅速になります。一方、フロッピーディスクファイルシステム(FAT)のドライバーは、わずか数KBのメモリに収まります。


1
問題は、「最良」の意味について誰も同意できないということではありません。問題があるということができない ...「最高」である
スティーブンC

1
@Stephen:もちろん、「最高」が存在する可能性があります。最初に測定基準を決定する必要があります。
ドナルドフェローズ

皆に同意させることができた場合のみ。
スティーブンC

11

最適化する対象に大きく依存します。

少しFATを考えてみてください:長いファイル名のサポートは(見栄えを良くするために)頭がおかしく、ディレクトリ内のファイルの検索は線形であるため、ディレクトリに多くのファイルが含まれている場合は非常に遅くなります。同時に、生の書き込み速度に対するメタデータが最小限に抑えられており、全体的に非常に単純であるため、実装するコードは非常に小さくなります。

ext2やext3のようなものは、FATにはない多くの機能を追加します。ファイルの検索も非常に高速です。同時に、生の書き込み速度はおそらく少し遅くなり、ファイルシステムを実装するコードは間違いなく非常に大きくなります。


9

簡単な質問ですが、なぜ今日でも競合して使用されているファイルシステムが非常に多いのですか?(ntfs、fat32、ext3(ffs)など)

ファイルシステムの設計者は、各タイプのシステムの最良の側面に同意し、「最良の」ファイルシステムを実装できるようです。

トレードオフはなく、ファイルシステムの設計者は、特許の心配のない「最良の」ファイルシステムを実装し、デュアルライセンスBSD / GPLとしてリリースしたため、MSとDebianが同様に受け入れられるとしましょう。他のファイルシステムは一晩で消えると思いますか?

誰もが10年間新しいハードドライブでFAT32を使用したとは思いませんが、USBドライブ、SDカードなどをフォーマットするための事実上の標準として引き続き存在します。Arduino愛好家はそれを使用するための安定したライブラリを持っています。彼らは皆、変化するために大きなインセンティブを必要としています。

そして、古いOS(特に、ユーザーが新しいファイルシステムドライバーをインストールしたくないWindows)との後方互換性の問題があります。


5
クロスプラットフォーム機能のために、何らかの種類の外部デバイスをFAT32にフォーマットしておくと便利です。そのため、多くの外部デバイスがFAT32にフォーマットされています。
マット

@Matt、それは私が言ったことのサブセットではありませんか?
ピーターテイラー

3
また、小さなマイクロコンピュータの場合、基本的なFATサポートを実装するコードはわずか数キロバイトに収まります。これは、プレイする合計
容量が

2
@Peter iは、さまざまなOSで問題なく使用できるという事実について、もっと述べていました。
マット

4

答えを計算する際によくあることは、(a)過去の状況と後方互換性を維持する必要があるためと、(b)一部のメソッドが他のタスクよりも一部のタスクに適しているためです。

(a)「ウィンチェスタードライブ」-私は彼らがそう呼ばれていることを覚えているのに十分なほど古いことを覚えておく必要があります-(世界中で「ハードドライブ」と呼ばれているもの)電子コンピューティングの時間であり、それでもコストの理由からほとんどのユーザーがアクセスできませんでした。FATファイルシステムは、かなり効率的でオーバーヘッドが少ないため、フロッピーディスクや元の小型ハードドライブでもうまく機能しました。いったん使用が開始され、実装が簡単であるためにその使用が広く普及すると、メーカーは古いデータが突然無効になったことをユーザーに伝えることができませんでした。

同様に、Linuxユーザーにとっては、安定したNTFSドライバーの登場には長い時間がかかっていたため、デバイスをFATとしてフォーマットすることで、複数のシステム間で読み書きできるようになりました。

(b)で-何十億ものテキストベースのデータベースレコードを保存するシステムと、DVD長のメディアファイルを保存するシステムの違いを考えてください。データベースの場合、各レコードは非常に小さい可能性があります-おそらくわずか30または40バイトで、ディスクの「セグメント」全体を割り当てたファイルシステム(確かに定義したい場合)はディスクスペースを浪費する可能性があります。DVDではそうではありません-大きな「セグメント」(明らかに、理由内)は、スペースの観点から非常に効率的です。

そのため、さまざまなファイルシステムがさまざまな目的のために設計されています。


3

誰にとっても完璧なファイルシステムが存在できない理由のもう1つの例は、HDDとSSDの読み取り/書き込みアクセス特性が大きく異なることです。SSDに最適化されたファイルシステムは、おそらくクレイジーのようにファイルを断片化することで最適に機能しますが、断片化するたびにSSD自体のページサイズになります。これはHDDでひどく動作します。HDDに最適化されたファイルシステムは、可能な限り断片化されていないファイルを保持しようとし、プラッタの高速回転外側部分の「ホット」エリアに頻繁に使用されるファイルを配置します。これらの特性はSSDの読み取り速度にはまったく役立ちません。また、書き込み方法に大きな負担をかけます。


2

非常に重要な事実が欠けていると思います。ほとんどの場合、プログラマーは自分のやり方が他のすべての方法よりも優れていると考える傾向があるため、ファイルシステムの設計を検討し、より一般的、エレガント、高速、正しいと思われる問題と解決策を考え出します。 。そして、この感覚が十分に強い場合、彼らは独自のファイルシステムを自由に構築できます。

これは競争、断片化、混乱につながるものであり、最終的には、より良いソリューションとより多くのオプションがあなたに合ったソリューションを選択することを願っています。


1

別のファイルシステムが必要な理由、または既存のFSの機能を拡張する理由の別の具体例を次に示します。

  1. あなたがデータベースベンダーであり、データのストライピング/ミラーリングの管理の複雑さを軽減してIOを改善したいとします。Oracleが論理ボリュームマネージャのようなASM(自動ストレージマネージャ)で行ったように、基本的なファイルシステムの機能を拡張する必要性を感じるでしょう。

1

あなたのリストでは、より良いものは利用できないが、高速であるため、使用されている古いファイルシステムに言及しています。

他のファイルシステムがあります。私は聞いたファイルシステムがグーグル 1つのハードドライブまたはサーバーがダウンした場合、高速重複/冗長性のため、ほとんどです。私は、多くの小さなファイル用に作成され、小さなファイル(サムネイル)の多くの要求のためにシステムで使用される別のファイルシステムを聞いたことを覚えています。

本質的に彼らは異なる目標を持っているか、またはオープンソースに対する正当性かもしれません。


0

ZFS(Sunシステム[現在のOracle]でSolarisが使用)は、ファイルシステムのソリューションだと思います。

残念ながら、オラクルは発見者のためにOpenSolarisを閉じてテストします。

ZFSはオープンソースであり、一部のLinuxは統合を試みています。詳細については、Wikipediaを参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.