Filesystem in Userspace

Filesystem in Userspace (FUSE) はUnix系コンピュータオペレーティングシステム用のソフトウェアインタフェースである。権限を持たないユーザがカーネルコードを修正することなく独自のファイルシステムを作成できる機能を提供する。これは、ファイルシステムのコードをユーザ空間で実行することでなされるもので、その際FUSEモジュールは実際のカーネルインタフェースへの「橋渡し」しか提供しない。

FUSEはフリーソフトウェアであり、GNU General Public LicenseとGNU Lesser General Public Licenseに基づきリリースされている。FUSEのシステムは元々A Virtual Filesystem (AVFS) の一部だったが、SourceForge.net上で独立したプロジェクトとして分離された。

FUSEはLinux、FreeBSD、NetBSD (PUFFS)、DragonFly BSD (PUFFS)、OpenSolaris、、Android、およびmacOSで利用できる。FUSEはメインストリームLinuxカーネルツリーに、カーネルバージョン2.6.14から公式にマージされた。

ISCライセンスに基づきSylvestre Gallonが再実装したFUSEが2013年5月にリリースされ、同年6月にOpenBSDへと組み込まれた。

仮想ファイルシステム 
FUSEは仮想ファイルシステムを書くために特に有用である。ディスクに対してデータを読み書きすることを基本とした伝統的なファイルシステムとは異なり、仮想ファイルシステムは実際にデータをファイルシステムに保存しない。それらは既存のファイルシステムやストレージデバイスのビューや翻訳として振舞う。

原則として、FUSE実装で利用可能なリソースはどれでもファイルシステムとしてエクスポート可能である。

移植 
FreeBSD用のFUSE
 Fuse4XはmacOSへのFUSE移植（現在はOSXFuseへ統合）である。
 MacFUSEはmacOSへの古いFUSE移植であるが、既にメンテナンスは終了している。
 OSXFuseはmacOSへのFUSE移植で、MacFUSEの後継である。
 WindowsユーザモードファイルシステムライブラリであるDokanとfuse4winはWindows用のFUSE APIである。
 NetBSDは6.0より基盤システムによるFUSEのサポートを開始した。
MINIX 3はバージョン3.2.0より基盤システムにFUSEのサポートを開始した。

利用例 
copy-fuse : Copy.comに保存されたファイルへのアクセス用のPython FUSEレイヤー。
 Wuala : マルチプラットフォームでJavaベースのOS統合分散ファイルシステム。ファイルシステム統合にFUSE、MacFUSE、およびCallback File Systemのいずれかを使う。さらにファイルシステムに加え、Javaが動作するウェブブラウザからアクセス可能な、Javaベースのアプリケーションも統合する。
  : WebDAV、SFTP、FTP、FTPS、およびAmazon S3を実装する商用ファイルシステム。
jSYS : FUSEを利用したユーザ空間におけるjailsと仮想ファイルシステムを作成する商用ソフトウェア。
 Transmit : MacFUSEを通じてWebDAV、SFTP、FTP、およびAmazon S3サーバをFinder内のディスクとしてマウントできる機能も追加する商用FTPクライアント。
  : FUSEを用いてSFTP/FTP/S3/Swiftを実装した商用ファイルシステム。
VolatileFS : FUSEを利用した商用RAMディスク。
 GlusterFS : 数ペタバイトまでスケールアップ可能なクラスタ分散ファイルシステム。
  : SSH経由でリモートファイルシステムへのアクセスを提供する。
 
 GmailFS : Gmailのメールとしてデータを保存するファイルシステム。
 GAEDrive : Google App Engineベースのネットワークストレージ。
 gae-filestore : Google App Engineの仮想ファイルシステムライブラリ。
 GVfs : GNOME用仮想ファイルシステム。
 EncFS : 暗号化仮想ファイルシステム。
 NTFS-3GとCaptive NTFS : NTFSファイルシステムへのアクセスを可能にする。
 fuse-exfat : オープンソースのexFATファイルシステムの実装。ファイルシステムの作成と読み書きが可能。
 exFAT : マイクロソフト製で、exFATファイルシステムへの読み書きが可能となる。
 WikipediaFS : Wikipediaの記事を実際のファイルのように参照し編集する。
 Lustre (ファイルシステム) : サン・マイクロシステムズによるクラスタファイルシステム。FUSEを使ってユーザ空間で実行することが可能であり、FreeBSDへも移植されている。ただしLustreのZFS-Linux移植版はユーザ空間内でZFSのDMU (Data Management Unit) を起動する。
 
 LoggedFS : ファイルシステムアクセスのロギング。
 HDFS : FUSE bindingsがHadoop分散ファイルシステム用に存在する。
 mtpfs : Creative Zen music playersのようなMTPデバイスをマウントする。
 Sector File System : のSectorは大量の商品コンピュータ用に設計された分散ファイルシステムである。Sectorはマウント可能なローカルファイルシステムインタフェースを提供するためにFUSEを使う。
 CurlFtpFS : FTP/SFTPロケーションにアクセスするためのファイルシステム。
 fuse-ext2 : オープンソースのext2/ext3ファイルシステム。MacFuseを利用してMac OS X v10.4以降をサポートする (Universal Binary)。
 Lessfs : インラインのLinux用データ重複除外ファイルシステム。LZOやQuickLZの圧縮および暗号化をサポートする。
 （旧名 Kosmos filesystem）: FUSEを通じてマウントすることで、既存のLinuxユーティリティでCloudStoreへの通信できるようにとなる。
 SoundCloudFS : LinuxシステムをSoundCloud streamsへマウントするためのオープンソースファイルシステム。ユーザがソフトウェアを選んでファイルを開くことが可能である。
  (MooseFS) : 1つのリソースとして見える複数のサーバを拡張する、ペタバイトのデータを保存可能なオープンソース分散フォールトトレラントファイルシステム。
　NagusFS : Nagiosサービスのファイルシステム表現。
 NagiosFS : 値をリモートでモニタリングするファイルシステム表現。
 CassandraFS : Cassandra (cassandra.apache.org) 上のファイルシステム。
 ZFS : ZFS-Fuse-Linux 実装
 fuse-zip : ファイルシステムとしてzipファイルを利用できる（書き込みをサポートする）。
 OWFS : ファイルシステムディレクトリ構造を通じて1-Wireデバイスへのアクセスを提供するOne-Wireファイルシステム。
 TrueCrypt : on-the-fly暗号化 (OTFE) を利用したソフトウェアアプリケーション。暗号化パーティションや完全なストレージデバイスの中だけではなく、ファイルの中にも仮想的な暗号化ディスクを作成できる。
 s3fs-FuseOverAmazonS3 : Amazon S3に裏打ちされたFUSEベースファイルシステム。ローカルファイルシステムの読み書き用にバケットをマウントする。ファイルやフォルダをネイティブにかつAWS上に透過的に保存する。
 s3fs-c : Amazon S3に裏打ちされたファイルシステム。s3fsからフォークされAWS Management Consoleのような他のS3クライアントと互換性を保つよう書き換えられている。
 LR|FS : Adobe Lightroomカタログ用のmacOSファイルシステム。MacFuseが必要。
 boxfs : box.netアカウント上のファイルにアクセスするためのファイルシステム。
 remotefs : ホームNASで利用するために設計されたネットワークファイルシステム。
 virtualbox-fuse : Virtualbox VDIイメージのマウントが可能となる。
 UsiFe : イントラファイルの暗号化を可能とする、柔軟性のあるファイルシステム。ファイルの一部を選んで暗号化と復号を行い、それらを表示できる。
 PyMMBfuse : PyMMBプロジェクト用FUSEドライバ。MMCフラッシュカード上のBBC Microcomputeディスクイメージへのアクセスが可能となる。
 djmount : UPnP AVデバイスのメディアコンテンツをマウントする。

関連項目 

9P - Plan 9オペレーティングシステム由来のファイルプロトコルで、FUSEよりも先に産みだされ同様の機能を数多く提供する。
Installable File System

脚注

外部リンク 

Develop your own filesystem with FUSE - Sumit Singhによる。
List of FUSE filesystems
Crossmeta FUSE Kernel for Windows is a true port of Fuse 2.8
Callback File System - このSDKにより開発者がユーザモードでWindows用の仮想ファイルシステムを作成できるようになる。
Documentation/filesystems/fuse.txt - Linuxソースツリーのドキュメント。

OSのファイルシステム
Linux
オープンソースソフトウェア