FUSE: File system in User spaceのことで、擬似的なファイルシステムを容易に構築するためのオープンソースのライブラリ

FUSEとはFile system in User spaceのことで、擬似的なファイルシステムを容易に構築するためのライブラリです。Windowsはデフォルトでふくめてないですが、LinuxやMac OSXでは既に存在していて、非常に便利なソフトウェアです。

FUSE(Filesystem in Userspace)を使用すると、ファイルシステムの内部を理解したりカーネル・モジュール・プログラミングを学習しなくても、ユーザー空間ファイルシステム・フレームワークを開発することができます。このシンプルなステップ・バイ・ステップのガイドに従い、FUSEとAFSのインストール、カスタマイズ、および有効化を行うことによって、完全に機能するユーザー独自のファイルシステムをLinux ® のユーザー空間に作成することができます。

FUSEを使用すると、フル機能のファイルシステムを開発することができます。そのファイルシステムでは、シンプルなAPIライブラリーを備え、非特権ユーザーもアクセスでき、セキュア実装を提供できます。また、なにより、FUSEは安定性に実績があります。

FUSEでは、ファイルシステムをFUSEライブラリーにリンクされた実行可能バイナリーとして開発することができます。言い換えると、このファイルシステム・フレームワークでは、ファイルシステムの内部やカーネル・モジュール・プログラミングを学ぶ必要がありません。

ファイルシステムに関して言えば、ユーザー空間ファイルシステムは新しい設計ではありません。ユーザー空間ファイルシステムの商用および学術用の実装としては、次のようなものがあります。

  • LUFSは、あらゆるアプリケーションに対して無限数のファイルシステムをトランスペアレントにサポートするハイブリッドなユーザー空間ファイルシステム・フレームワークで、カーネル・モジュールとユーザー空間デーモンで構成されています。基本的に、VFS呼び出しの大部分を専用のデーモンに任せます。
  • UserFSでは、ユーザー・プロセスを通常のファイルシステムとしてマウントすることができます。この概念実証プロトタイプは、ファイルシステム・インターフェースによる匿名FTPが可能なftpfsを提供します。
  • Ufo ProjectはSolaris向けのグローバルなファイルシステムであり、リモート・ファイルをローカル・ファイルと同様に扱うことができます。
  • OpenAFSは、Andrew FileSystemのオープン・ソース版です。
  • CIFSは、Common Internet FileSystemです。

FUSEの解凍

ファイルシステムを開発するには、まずFUSEソース・コードをダウンロードして、パッケージを解凍します。tar -zxvf fuse-2.2.tar.gz。これによって、ソース・コードの入ったFUSEディレクトリーが作成されます。fuse-2.2ディレクトリーの内容は、次のとおりです。

  • ./docには、FUSE関連のドキュメンテーションが含まれています。現時点では、含まれているファイルはhow-fuse-worksだけです。
  • ./kernelには、FUSEカーネル・モジュールのソース・コードが含まれています(もちろん、FUSEでファイルシステムを開発するのにこの内容を知る必要はありません)。
  • ./includeには、ファイルシステムの作成に必要なFUSE APIヘッダーが含まれています。今のところ必要なのは、fuse.hだけです。
  • ./libには、FUSEライブラリーを作成するためのソース・コードが含まれています。これをバイナリーにリンクすることによってファイルシステムを作成します。
  • ./utilには、FUSEユーティリティー・ライブラリーのソース・コードがあります。
  • ./exampleには、もちろん、fusexmp、nullやhelloのファイルシステムなど、参考用のサンプルが含まれています。

FUSEのビルドとインストール

   1. fuse-2.2ディレクトリーから構成スクリプトを実行します。./configure。このスクリプトによって、必要なmakefileなどが作成されます。
   2. ./makeを実行して、ライブラリー、バイナリー、およびカーネル・モジュールをビルドします。kernelディレクトリーにファイル./kernel /fuse.koがあることを確認します。これがカーネル・モジュール・ファイルです。また、libディレクトリーにfuse.o、mount.o、およびhelper.oがあることを確認します。
   3. ./make installを実行して、FUSEのインストールを完了します。

    別の手段 :insmodを使用して、自分でカーネル内のモジュールをインストールしたい場合は、このステップをスキップしてください。たとえば、/usr/local/sbin/insmod ./kernel/fuse.koまたは/sbin/insmod ./kernel/fuse.ko。必須モジュールはルート権限でインストールしてください。

必要な場合は、上記のステップを1ステップで実行できます。fuse-2.2ディレクトリーから、./configure; make; make install;を実行します。

重要 :FUSEを作成するときには、カーネル・ヘッダーまたはソース・コードが所定の場所になければなりません。作業を単純にするには、カーネル・ソース・コードを/usr/src/ディレクトリーに置いてください。

AFS-FUSEファイルシステムの概要

image1

関連リンク
http://fuse.sourceforge.net/ 公式サイト

http://labs.gree.jp/Top/OpenSource/Fuse.html PHP FUSE(FUSE(File system in USEr space)をPHPから扱うための拡張モジュール)

http://www.ibm.com/developerworks/jp/linux/library/l-fuse/index.html#resources (資料)

Leave a Reply

Your email address will not be published. Required fields are marked *