FUSE *1

ユーザースペースで動くプログラム(デーモン)によってファイルシステムを提供するためのソフトウェアです。

通常Linuxのファイルシステムはカーネルモジュールとして記述され、カーネル空間で動作しますが、FUSEではカーネル空間に最低限のプログラムを常駐させ、ユーザー空間で動作しているプロセスに各種リクエスト(read, write等)およびデータを送受信することでファイルシステムを実現します。このため、パフォーマンスに影響は出ますが、ファイルシステムにバグがあってもエラーとしてせき止められ、Panicが発生することはありません。

FSの作成

Linux上でデバイスドライバを作成するときと同じように、システムコール に対応する関数を記述し、登録する

FUSEのヘッダを読み込み

#include <fuse.h>

各関数を記述

static int hello_open(const char *path, struct fuse_file_info *fi) {
...
}

fuse_mainにハンドラとパラメータを渡して登録する

int main(int argc, char *argv[])
{
    return fuse_main(argc, argv, &hello_oper);
}

ハンドラの記述

エラーコード定義のinclude

#include <errno.h>

エラーにあたる場合は適切なエラーコードを返してやる

実行

通常のマウント

./test ./hogehoge

アンマウントする場合はfusermountを使う

デバッグ出力を行う

./test ./hogehoge -d

Ctrl+Cで終了させれば自動的にアンマウントされる

fusermount

FSのアンマウント

fusermount -u hogehoge

*1 Filesystem in Userspace

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-05-13 (日) 14:26:45