簡単な質問ですが、なぜ今日もまだ多くのファイルシステムが競合し使用されているのですか? (ntfs、fat32、ext3(ffs)など)
ファイルシステムの設計者は、各タイプのシステムの最良の側面に同意し、「最良の」ファイルシステムを実装できるようです。考えてみてください。これらのファイルシステムはしばらく前から存在しており、どのファイルシステムが他のファイルシステムよりも優れた品質を備えているかは少なくともいくらか明らかであり、それぞれの優れた機能を組み合わせて、はるかに優れた究極のシステムを作成できます。
引用した例を使用して、ここで少し具体的に考えてみましょう。
ntfs-マイクロソフト独自のもの。マイクロソフトではない人はこれを使用できないため、別のものを使用/作成する必要があります。さて、あなたがマイクロソフトの場合、次の箇条書きの問題があるため、これをFATよりも使用したいと考えています。
fat32-十分に現代的ではありません。最大ファイルサイズは4GBです。ディレクトリエントリの検索はO(n)です。アロケーションテーブルはリンクされたリストであり、アロケーションビットマップのようなより効率的なものではありません(隣接する空き領域を見つけるのが非常に迅速です)。権限はサポートしていません。ハードリンクやシンボリックリンクはサポートしていません。ジャーナリングはサポートしていません。
ext3-これは主にジャーナリングをサポートするためのext2の拡張です。
したがって、いくつかの理由があるようです:
以前のファイルシステムには何かが欠けています。 FATの場合、(1)機能と(2)パフォーマンスの両方の点で、多くはありません。 ext2の場合はジャーナリングされた更新がなかったため、クラッシュからの回復により多くの時間がかかりました。
既存のファイルシステムはおそらく機能しますが、それはあなたのものではありません。 (例:Microsoftでない場合はNTFS)。この場合、あなたは本当に多くの選択肢がないのですが、あなた自身のものを考え出す必要があります。
短い答え:1つのサイズですべてに対応できるわけではありません。
トレードオフがあります。たとえば、ジャーナル化されたFSが必要な場合は、その費用(効率、複雑さなど)を払って、それから何かを引き出します。ジャーナル化されたFS=の必要性を感じておらず、支払いを望まない人もいます。FSの他の「機能」と同じです。
「ベスト」とは何かについて非常に多くの意見があるため、何も「ベスト」になることはできません。この決定は、ユーザーのニーズと制限に固有のものです。設計は常に制約内に収まる能力に基づいています。
基本的な携帯電話には、数百の連絡先、テキストメッセージの履歴、いくつかの小さなアプリを保存する必要があります。そのファイルシステムは、RAID構成のマルチテラバイトドライブの階層ディレクトリ構造をサポートする必要がありますか?そのようなファイルシステムを実行するのに十分なRAMデバイス上にありますか?ファイルシステムは複雑なACLを必要としますか?おそらくこれらのすべての質問に対して-なので、単純でリソースを消費するファイルシステムで十分です。 。
企業はまた、競争力を維持するためにさまざまな製品を開発します。たとえば、Appleは、バックアップが迅速になるように、最近変更されたファイルを追跡するHFS +ファイルシステムの機能を売り込んでいます。反対に、フロッピーディスクファイルシステム(FAT)のドライバーは、わずか数KBのメモリで。
多すぎは、最適化する対象によって異なります。
ちょっとFATを考えてみましょう:長いファイル名のサポートは(うまくいくために)ぎこちなく、ディレクトリ内のファイルの検索は線形であるため、速度が遅くなりますveryディレクトリに多くのファイルが含まれている場合はすばやくファイル。同時に、それは生の書き込み速度に最低限のメタデータを持っています非常に良いです、そしてそれは全体的に非常に単純なので、それを実装するためのコードは非常に小さくすることができます。
Ext2やext3のようなものは、FATにはない多くの機能を追加します。ファイルの検索もかなり高速です。同時に、生の書き込み速度はおそらく少し遅く、ファイルシステムを実装するコードは間違いなくかなり大きくなります。
簡単な質問ですが、なぜ今日まだ競合して使用されているファイルシステムが非常に多いのですか? (ntfs、fat32、ext3(ffs)など)
ファイルシステムの設計者は、各タイプのシステムの最良の側面に同意し、「最良の」ファイルシステムを実装できるようです。
トレードオフがなく、ファイルシステムの設計者が特許の心配のない「最高の」ファイルシステムを実装し、MSとDebianの両方に受け入れられるように、デュアルライセンスBSD/GPLとしてリリースしたとしましょう。他のファイルシステムが一晩で消滅すると思われる理由は何ですか。
新しいハードドライブでFAT32を10年間使用した人はいないと思いますが、USBドライブやSDカードなどをフォーマットするためのデファクトスタンダードとして存続しています。カメラや携帯電話の製造元は、FAT32を使用するためのファームウェアを試し、テストしています。 Arduino愛好家はそれを使用するための安定したライブラリを持っています。彼らはすべて、変化するために大きなインセンティブを必要とするでしょう。
そして、古いOS(特に、ユーザーが新しいファイルシステムドライバーをインストールしたくないWindows)との下位互換性の問題があります。
よくあることですが、答えを計算する場合は、(a)歴史的な状況と下位互換性を維持する必要があるため、および(b)いくつかのメソッドが他のタスクよりもいくつかのタスクにより適しているためです。
(a)で覚えておく必要があるのは、「ウィンチェスタードライブ」と呼ばれることを覚えるのに十分な年齢です(他の国では「ハードドライブ」と呼ばれています)は、約半分しか使用されていません。電子計算機の時代であり、それでも、コスト上の理由から、ほとんどのユーザーはその期間はアクセスできませんでした。 FATファイルシステムは、フロッピーディスクと元の小さなハードドライブで適切に機能しました。効率がよく、オーバーヘッドが少ないためです。それが使用されるようになり、実装が簡単なためにその使用が広く普及すると、メーカーは古いデータが突然無効になったことをユーザーに知らせることができませんでした。
同様に、Linuxユーザーにとっても、安定したNTFSドライバーは長い間存在していたため、デバイスをFATとしてフォーマットしておくことで、複数のシステム間で読み書きできるようになります。
(b)について-たとえば、何十億ものテキストベースのデータベースレコードを保存するシステムと、DVD長のメディアファイルを保存するシステムの違いを考えてみてください。データベースの場合、各レコードは非常に小さい可能性があります。おそらく30バイトまたは40バイトで、ディスクの「セグメント」全体(これを定義したい場合でも)を割り当てたファイルシステムは、ディスク領域を浪費する可能性があります。 DVDではそうではありません-大きな「セグメント」(当然のことながら)は、スペースの点で非常に効率的です。
したがって、さまざまなファイルシステムがさまざまな目的で設計されています。
誰にとっても完璧なファイルシステムがあり得ない理由のもう1つの例は、HDDとSSDの読み取り/書き込みアクセス特性が大きく異なることです。 SSDに最適化されたファイルシステムは、クレイジーなようにファイルを断片化することでおそらく最も効果的に機能しますが、すべての断片でSSD自体のページサイズになります。これはHDDでひどく実行されます。 HDDに最適化されたファイルシステムは、ファイルを可能な限り断片化しないようにし、頻繁に使用されるファイルを、Platterの高速回転する外側部分の「ホット」領域に配置します。これらの特性はSSDの読み取り速度にはまったく役立ちません。また、それらの書き込み方法に大きな負担をかけます。
非常に重要な事実が欠けていると思います。ほとんどの場合、プログラマーは何かを行う方法が他のすべての方法よりも優れていると考える傾向があるため、ファイルシステムの設計を検討し、より一般的でエレガント、高速、正しいと思われる問題と解決策を考え出します。 。そして、この感覚が十分強い場合、彼らは自分のファイルシステムを自由に構築できます。
これは競争、断片化、混乱に頼っています。最終的には、より良いソリューションと、より適切なソリューションを選択するためのより多くのオプションを期待しています。
別のファイルシステムが必要な理由、または既存のFSの機能を拡張する理由のもう1つの具体的な例を次に示します。
あなたのリストでは、より良いものは利用できないので使用されている古いファイルシステムについて言及していますが、それは高速です。
他のファイルシステムがあります。 google filesystem は、主に1台のハードドライブまたはサーバーがダウンした場合の高速な複製/冗長性を目的としています。多くの小さなファイル用に作成され、小さなファイル(サムネイル)に対する多くの要求のためにシステムで使用される別のファイルシステムについて聞いたことを覚えています。
本質的に、彼らは異なる目標を持っているか、オープンソースと比較して妥当であるかもしれません。
ZFS(SunシステムでSolarisが使用している[現在のOracle])は、ファイルシステムのソリューションだと思います。
残念ながら、OracleはOpenSolarisを検出者用に閉じてテストします。
ZFSはオープンソースであり、一部のLinuxはそれを統合しようとしています。詳細については、ウィキペディアを参照してください。