15

FUSEのようなユーザースペースでVFSとファイルシステムに出くわしました。

今、私が理解している限り、それはファイルシステムをシミュレートするので、アプリケーションは標準のファイルシステム階層を持つことができます。しかし、私にはわかりません。なぜそのために別のファイルシステムが必要なのですか?通常のフォルダー構造を作成し、アプリで使用されるファイルを配置するだけではいけませんか?

だから、私の質問は次のとおりです。

  1. VFSとは何ですか?

  2. 実際の例、VFSが使用されるユースケースをいくつか挙げてください。

  3. VFSを使用する利点は何ですか?

JavaベースのVFSはありますか?

4

2 に答える 2

18

VFSとFUSEは関連していますが、まったく同じではありません。FUSEの主な目的は、ほとんど同じようなファイルであるが、完全ではないもの(リモートサーバー上のファイルやZIPファイル内のファイルなど)を「実際の」ディレクトリおよびファイルに変換することです。FUSEファイルシステムの名簿を参照して、これが何に役立つかを理解してください。これにより、多くの状況でFUSEが「単純な古いファイル」を打ち負かす理由が明らかになることを願っています。

VFSは、ファイル用のアプリケーションプログラムインターフェイス(API)です。APIの概念に慣れていない場合は、「仮想ファイルシステム」のWikipediaページを参照することをお勧めします。オペレーティングシステムカーネルの観点からVFSとは何かを説明します。はい、OSカーネル(Windows、Linux、MacOS)にはVFSがあります!GNOMEなどの一部のユーザースペースプログラムにも1つあります(GnomeVFSと呼ばれます)。

VFSの目的は、ファイルとディレクトリをアプリケーションに統一された方法で提示することです。CD-ROMからのファイル、ハードディスクまたはUSBスティックまたはRAMディスク上のLinuxまたはWindowsファイルシステムからのファイル、またはネットワークサーバーからのファイル。OSカーネルがVFSを使用していることはおそらく明らかです。では、なぜGnomeVFSなどのユーザースペースもあるのでしょうか。答えは、すべてのファイルシステムとそのドッグをカーネルに常駐させたくないということです。このようなコードはスーパーバイザー特権で実行され、バグがあるとマシン全体がクラッシュする可能性があるためです。もちろん、欠点は、ユーザースペースVFSがそれらを使用するアプリケーションにのみ役立つことです。たとえば、GNOMEアプリケーションのみがGnomeVFSを「見る」ことができます。GnomeVFSツリー内で「ls」を実行することはできません。解決策はFUSEです。その正確な目的と説明は、ユーザースペースのVFSをカーネルのVFSに変えることです。

于 2010-09-08T11:42:50.713 に答える
8

VFSは、「偽の」ファイルシステムではなく、POSIXオペレーティングシステムによってアプリケーションプロセスに提示される抽象的なファイルシステムインターフェイスを指します。例えば:

  • open()
  • close()
  • read()
  • write()

すべてのファイルシステム実装(ext3、XFS、reiserfsなど)は、使用する特定の構造やアルゴリズムに加えて、同じインターフェイスを公開します。

FUSEは、カーネルで実行されないコードをそのインターフェイスに提供する手段です。カーネルコードには特権がありますが、ユーザースペースコードには特権がないため、これにより安定性とセキュリティが劇的に向上します。この分離により、多くの外部依存関係を持つファイルシステムを作成する方がはるかに賢明になります。FUSE Webページには、 FUSEを使用して構築された多くのファイルシステムが記載されています。

于 2010-05-26T05:32:49.773 に答える