いくつかのファイルシステムがFuseを介して表示されることを知っており、このアプローチの長所と短所について疑問に思っていました。
回答
実際のディスク上のファイルシステムまたは任意のファイルシステムを意味する場合、私は肯定的ではありません。「通常のファイルシステムがFUSEを使用するのを見たことがありませんが、私はそう思います」 s可能; FUSEの主な利点は、ファイルシステムのように見えるものをアプリケーション(またはユーザー)に提示できることですが、実際には、ユーザーがディレクトリ内のファイルを一覧表示したり、ファイルを一覧表示したりするときに、アプリケーション内の関数を呼び出すだけです。新しいファイルを作成します。 Plan9 は、ファイルシステムを介してすべてにアクセスできるようにすることでよく知られており、/proc
疑似-ファイルシステムはそれらに由来します。FUSEはアプリケーションがそのパターンに簡単に従うための方法です
たとえば、ここに「SEサイトデータへのアクセスを提供する(非常に機能のない)FUSEファイルシステムのスクリーンショット:
当然、これらのファイルは実際には存在しません。 ls
がディレクトリ内のファイルのリストを要求したとき、FUSEは、ユーザー73(私)に関する情報をロードするためにこのサイトにAPI要求を行った私のプログラムの関数を呼び出しました。 cat
display_name
から読み取ろうとしているwebsite_url
は、キャッシュされたデータを返す関数をさらに呼び出しましたメモリ、実際にはディスク上に何も存在しません
コメント
- FATのFUSE実装があります、 NTFS 、 iso9660 、 ext2 、および詳細。
- fuseに実装されている頑丈なファイルシステム(LessFS、GlusterFS、MooseFS)があります。 。 Google 'のGFS(POSIXではない)もユーザースペースで実行されます。
- そのアプリはどこで見つかりましたか?!?!
- @George SOAPIをいじっていたときに書きました。 ' / users以外のルートは使用しないため、'基本的にそのスクリーンショットに実装されているすべての機能が表示されます。どれだけ難しいかを確認するだけでした
- @George私はそれを github
回答
Unixファイルシステムは、従来、カーネルに実装されていました。 FUSE を使用すると、ユーザープログラムでファイルシステムを実装できます。
カーネル内ファイルシステムは、プログラムとデータのメインファイルシステムに適しています。
- ブートメディアで使用できます(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/
主な欠点は、ネイティブ(カーネル)ドライバーと比較した場合のパフォーマンスへの影響です。