今まで私はその言葉について考えたことはなかったのですfuse
が、あることに気づきましたnofuse
。
インターネットで検索したところ、違いが明確に説明されていません。fuse
との違いは何ですかnofuse
?
たとえば、パフォーマンスと利点の点で、これfuse
と比較して何が異なりますか?起動時にフラッシュ ドライブを起動できるかどうか? これが私の興味の対象です。nofuse
nofuse
fuse
答え1
これらは 2 つの異なるドライバーです。1 つは FUSE を使用して作成され、もう 1 つはカーネル モジュールです。
FUSEは、ファイルシステムドライバを「ユーザー空間」、つまりカーネルモジュールではなくスタンドアロンサービスとして記述できるようにするフレームワークです。これにより、開発が容易になります。多くのパフォーマンスは低下しますが、簡単です。
FUSE ベースのファイルシステムは、各操作が複数のコンテキスト スイッチ (プログラムからカーネル、対応する FUSE サービス (デバイスからデータを読み取る必要があるため、カーネルに戻して再びカーネルから出す)) を経由するため、カーネル内のファイルシステムよりも多少遅くなる可能性があります。その後、応答は再びカーネルによって処理され、プロセスに配信されます。これは、サービスとしても実行されるデータベースなどと比較すると特別なことではありませんが、カーネルの一部として直接実行されるファイルシステムと比較すると、処理が遅くなります。
ただし、exfat-fuseのようなFUSEベースのドライバーは、現在実行中のカーネルに関係なくインストールできます(インターフェースは特に安定しているように設計されています)。一方、ZFSなどのカーネルベースのドライバーは、新しいメジャーカーネルバージョンごとに適応する必要があります。そしてモジュールはマイナー バージョンごとに個別に再コンパイルする必要があります (多くの場合、ユーザーのマシン上で)。
そのため、Linuxカーネルの一部ではないファイルシステムの場合(理由に関係なく)、FUSEを使用することが一般的な選択肢となります。これは、ドライバーの作成が容易になるためです。そして導入が簡単 – これが exfat-fuse が一般的に使用されるようになった理由です。(ドライバーが通常のプログラムであるため、FUSE では sshfs、ftpfs、wikipediafs などのカスタム ファイルシステムの構築も簡単になります。)
しかし、現時点では、「exfat-nofuse」パッケージは廃止されています(まあ、両方それらの多くは時代遅れです(現在のカーネルバージョンでは内蔵exFAT ドライバーなので、外部ドライバーはどちらも不要になりました。
同様に、「ntfs-3g」NTFS ドライバーも FUSE ベースですが、いずれは新しいカーネル内「ntfs3」ドライバーに置き換えられる可能性があります。
答え2
からfuse(8)
:
FUSE (Filesystem in Userspace) は、ユーザー空間プログラムが仮想ファイルシステムを Linux カーネルにエクスポートするためのシンプルなインターフェースです。また、FUSE は、権限のないユーザーが独自のファイルシステム実装を作成してマウントするための安全な方法を提供することも目的としています。
はnofuse
、純粋にカーネル モジュールによって処理されることを意味します。
答え3
カーネルにはハードウェアと通信する方法があります。この方法 (およびカーネル自体) はリング 0 で実行されるため、特権が与えられます。ファイルシステム コードにはルートキットが含まれている可能性があります。さらに、ファイルシステム ドライバーを実装するカーネル モジュールをインストールするには、root である必要があります。マウント ポイントを設定するにも、root である必要があります。
FUSE は、ファイルシステム ドライバーがユーザー空間で実行されることを意味します。カーネル内のモジュールは、通常のユーザーとして実行されるコードにブリッジします。つまり、脆弱性のフットプリントは小さく、より普遍的です。FUSE ドライバーの初心者の実装は、他のすべての FUSE ドライバーと同じカーネル ブリッジに依存します。
ここで、ディストリビューションは exfat の 2 つの方法を提供します。1 つはカーネル ベースで、もう 1 つは FUSE です。