私はいくつかのファイルシステムがFuseを介して存在することを知っており、このアプローチの長所と短所について疑問に思っていました。
実際のディスク上のファイルシステムやファイルシステムを意味するのであれば、私は肯定的ではありません。通常のファイルシステムがFuseを使用するのを見たことはありませんが、可能だと思います。 Fuseの主な利点は、ファイルシステムのように見えるものをアプリケーション(またはユーザー)に提示できることですが、実際には、ユーザーがディレクトリ内のファイルをリストしたり、新しいファイルを作成したりするときに、アプリケーション内の関数を呼び出すだけです。ファイル。 Plan9 は、ファイルシステムを介してすべてにアクセスできるようにすることで有名であり、/proc
疑似ファイルシステムはそれらから取得されます。ヒューズは、アプリケーションがそのパターンに簡単に従うための方法です
たとえば、SEサイトデータへのアクセスを提供する(非常に機能の少ない)Fuseファイルシステムのスクリーンショットを次に示します。
当然、これらのファイルは実際には存在しません。 ls
がディレクトリ内のファイルのリストを要求すると、Fuseは私のプログラムの関数を呼び出し、このサイトにAPI要求を行ってユーザー73(私)に関する情報をロードしました。 cat
display_name
およびwebsite_url
から読み取ろうとすると、実際にディスク上に存在するものなしで、メモリからキャッシュデータを返す関数がさらに呼び出されました
Unixファイルシステムは、伝統的にカーネルに実装されています。 Fuse を使用すると、ファイルシステムをユーザープログラムで実装できます。
カーネル内ファイルシステムは、プログラムとデータのメインファイルシステムに適しています。
ヒューズファイルシステムには他の利点があり、主にその柔軟性を中心に展開されます。
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 /
主な欠点は、ネイティブ(カーネル)ドライバーと比較した場合のパフォーマンスへの影響です。