Filesystem in Userspace

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

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

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

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

1. 仮想ファイルシステム
-------------

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

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

2. 移植
-----

[2]
[3]はmacOSへのFUSE移植である。
[4]はmacOSへの古いFUSE移植であるが、既にメンテナンスは終了している。
[5]はmacOSへのFUSE移植で、MacFUSEの後継である。
WindowsユーザモードファイルシステムライブラリであるDokanと[6]はWindows用のFUSE APIである。
NetBSDは6.0より基盤システムによる[7]を開始した。
MINIX 3はバージョン3.2.0より基盤システムに[8]を開始した。

3. 利用例
------

[9] : Copy.comに保存されたファイルへのアクセス用のPython FUSEレイヤー。
Wuala : マルチプラットフォームでJavaベースのOS統合分散ファイルシステム。ファイルシステム統合にFUSE、MacFUSE、および[10]のいずれかを使う。さらにファイルシステムに加え、Javaが動作するウェブブラウザからアクセス可能な、Javaベースのアプリケーションも統合する。
WebDrive : WebDAV、SFTP、FTP、FTPS、およびAmazon S3を実装する商用ファイルシステム。
[11] : FUSEを利用したユーザ空間におけるjailsと仮想ファイルシステムを作成する商用ソフトウェア。
Transmit : [12]を通じてWebDAV、SFTP、FTP、およびAmazon S3サーバをFinder内のディスクとしてマウントできる機能も追加する商用FTPクライアント。
ExpanDrive : FUSEを用いてSFTP/FTP/S3/Swiftを実装した商用ファイルシステム。
[13] : FUSEを利用した商用RAMディスク。
GlusterFS : 数ペタバイトまでスケールアップ可能なクラスタ分散ファイルシステム。
SSHFS : SSH経由でリモートファイルシステムへのアクセスを提供する。
GmailFS : Gmailのメールとしてデータを保存するファイルシステム。
GAEDrive : Google App Engineベースのネットワークストレージ。
[14] : Google App Engineの仮想ファイルシステムライブラリ。
GVfs : GNOME用仮想ファイルシステム。
EncFS : 暗号化仮想ファイルシステム。
NTFS-3GとCaptive NTFS : NTFSファイルシステムへのアクセスを可能にする。
[15] : オープンソースのexFATファイルシステムの実装。ファイルシステムの作成と読み書きが可能。
[16] : マイクロソフト製で、exFATファイルシステムへの読み書きが可能となる。
WikipediaFS : Wikipediaの記事を実際のファイルのように参照し編集する。
Lustre  : サン・マイクロシステムズによるクラスタファイルシステム。FUSEを使ってユーザ空間で実行することが可能であり、FreeBSDへも移植されている。ただしLustreのZFS-Linux移植版はユーザ空間内でZFSのDMU  を起動する。
[17] : ファイルシステムアクセスのロギング。
HDFS : [18]がHadoop分散ファイルシステム用に存在する。
[19] : Creative Zen music playersのようなMTPデバイスをマウントする。
Sector File System : Sector/SphereのSectorは大量の商品コンピュータ用に設計された分散ファイルシステムである。Sectorはマウント可能なローカルファイルシステムインタフェースを提供するためにFUSEを使う。
CurlFtpFS : FTP/SFTPロケーションにアクセスするためのファイルシステム。
[20] : オープンソースのext2/ext3ファイルシステム。[21]を利用してMac OS X v10.4以降をサポートする 。
[22] : インラインのLinux用データ重複除外ファイルシステム。LZOやQuickLZの圧縮および暗号化をサポートする。
CloudStore: FUSEを通じてマウントすることで、既存のLinuxユーティリティでCloudStoreへの通信できるようにとなる。
[23] : LinuxシステムをSoundCloud streamsへマウントするためのオープンソースファイルシステム。ユーザがソフトウェアを選んでファイルを開くことが可能である。
Moose File System  : 1つのリソースとして見える複数のサーバを拡張する、ペタバイトのデータを保存可能なオープンソース分散フォールトトレラントファイルシステム。
　NagusFS : Nagiosサービスのファイルシステム表現。
[24] : 値をリモートでモニタリングするファイルシステム表現。
[25] : Cassandra  上のファイルシステム。
ZFS : [26]
[27] : ファイルシステムとしてzipファイルを利用できる。
[28] : ファイルシステムディレクトリ構造を通じて1-Wireデバイスへのアクセスを提供するOne-Wireファイルシステム。
TrueCryptdate=2016年3月}} : on-the-fly暗号化  を利用したソフトウェアアプリケーション。暗号化パーティションや完全なストレージデバイスの中だけではなく、ファイルの中にも仮想的な暗号化ディスクを作成できる。
[29] : Amazon S3に裏打ちされたFUSEベースファイルシステム。ローカルファイルシステムの読み書き用にバケットをマウントする。ファイルやフォルダをネイティブにかつAWS上に透過的に保存する。
[30] : Amazon S3に裏打ちされたファイルシステム。s3fsからフォークされAWS Management Consoleのような他のS3クライアントと互換性を保つよう書き換えられている。
[31] : [32]カタログ用のmacOSファイルシステム。MacFuseが必要。
[33] : box.netアカウント上のファイルにアクセスするためのファイルシステム。
[34] : ホームNASで利用するために設計されたネットワークファイルシステム。
[35] : Virtualbox VDIイメージのマウントが可能となる。
[36] : イントラファイルの暗号化を可能とする、柔軟性のあるファイルシステム。ファイルの一部を選んで暗号化と復号を行い、それらを表示できる。
[37] : PyMMBプロジェクト用FUSEドライバ。MMCフラッシュカード上のBBC Microcomputeディスクイメージへのアクセスが可能となる。
[38] : UPnP AVデバイスのメディアコンテンツをマウントする。

4. 関連項目
-------

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

5. 脚注
-----

6. 外部リンク
--------

[39] - Sumit Singhによる。
[40]
[41] FUSE Kernel for Windows is a true port of Fuse 2.8
[42] - このSDKにより開発者がユーザモードでWindows用の仮想ファイルシステムを作成できるようになる。
[43] - Linuxソースツリーのドキュメント。