web-dev-qa-db-ja.com

FuseFSファイルシステムを使用するメリットとデメリットは何ですか?

私はいくつかのファイルシステムがFuseを介して存在することを知っており、このアプローチの長所と短所について疑問に思っていました。

19
geoffc

実際のディスク上のファイルシステムやファイルシステムを意味するのであれば、私は肯定的ではありません。通常のファイルシステムがFuseを使用するのを見たことはありませんが、可能だと思います。 Fuseの主な利点は、ファイルシステムのように見えるものをアプリケーション(またはユーザー)に提示できることですが、実際には、ユーザーがディレクトリ内のファイルをリストしたり、新しいファイルを作成したりするときに、アプリケーション内の関数を呼び出すだけです。ファイル。 Plan9 は、ファイルシステムを介してすべてにアクセスできるようにすることで有名であり、/proc疑似ファイルシステムはそれらから取得されます。ヒューズは、アプリケーションがそのパターンに簡単に従うための方法です

たとえば、SEサイトデータへのアクセスを提供する(非常に機能の少ない)Fuseファイルシステムのスクリーンショットを次に示します。

Screenshot of Fuse filesystem in action

当然、これらのファイルは実際には存在しません。 lsがディレクトリ内のファイルのリストを要求すると、Fuseは私のプログラムの関数を呼び出し、このサイトにAPI要求を行ってユーザー73(私)に関する情報をロードしました。 catdisplay_nameおよびwebsite_urlから読み取ろうとすると、実際にディスク上に存在するものなしで、メモリからキャッシュデータを返す関数がさらに呼び出されました

17
Michael Mrozek

Unixファイルシステムは、伝統的にカーネルに実装されています。 Fuse を使用すると、ファイルシステムをユーザープログラムで実装できます。

カーネル内ファイルシステムは、プログラムとデータのメインファイルシステムに適しています。

  • これらはブートメディアで使用できます(Fuseファイルシステムを実装するプログラムはどこかからロードする必要があります)。
  • それらは、プロセスがクラッシュしたり、誤って強制終了されたりしたために消えないという点で、より堅牢です。
  • 彼らはやや速いです。

ヒューズファイルシステムには他の利点があり、主にその柔軟性を中心に展開されます。

  • 通常のユーザーがロードしてマウントできるため、ユーザーが自分でマウントする傾向があるファイルシステム(ネットワークアクセス、アーカイブファイルの処理、リムーバブルメディアなど)に便利です。
  • Fuseファイルシステムドライバーがクラッシュしても、カーネルがパニックになることはありません。ファイルシステムにアクセスしていたアプリケーションのI/Oエラー以外に何も表示されません。
  • それらは非常に迅速にプログラムできます。便利なFuseファイルシステムドライバーを数百行のコードで記述できる多くのスクリプト言語用の Fuseバインディング があります。
  • それらをインストールするために管理者が介入する必要がないため、および サポートされているOS 間で簡単に移植できるため、非常に迅速に展開できます。
  • カーネルと静的にリンクすることに関連するライセンスの問題はありません(これは zfs に影響しています)。

Fuse自体は実際にはファイルシステムではありませんが、ファイルシステムをカーネルモジュールではなくプロセスとして実装できるようにするコードです。

Fuseの最も有用な利点の1つは、GPLコードが非GPLコードと「混合」できるようにすることです。たとえば、Gnu/LinuxおよびZFS http://zfs-Fuse.net/ またはOpenSolarisや* BSDなどの多くのOS上のNTFS-3G http://www.tuxera.com/community/ntfs-3g-download /

主な欠点は、ネイティブ(カーネル)ドライバーと比較した場合のパフォーマンスへの影響です。

7
jlliagre