Linux

FUSE

FUSEとは

 FUSE - Filesystem in Userspace
 カーネル空間ではなく、ユーザ空間で仮想のファイルシステムを構築しちゃいましょうというAPIらしいです。

 FUSEはモジュールとしてカーネルに組み込んでおき、あとはFUSEのライブラリを使えばいろいろな仮想ファイルシステムが使えるもよう。
 sshfsなんかもあるみたいですね。

 

AVFS

 FUSEを使った仮想ファイルシステムであるAVFSを導入してみます。

 

AVFSとは

 AVFS - A Virtual File System
 とある通り、linuxの仮想ファイルシステムで、圧縮ファイルを展開することなくそのまま開いてしまおうというものです。

 圧縮ファイルを展開せずに、普段と変わることなくディレクトリ移動してファイルを開いたりコピーしたりできるようになるので、とっても便利…かも。
 DOSのファイラーで圧縮ファイルを仮想ディレクトリとして扱うのと同じですね。 :-)

 

介入行動の対象

 どんなファイルに対応しているかは avfs のリリースページや、 /usr/lib/avfs/extfs/{README,extfs.ini} あたりを見ると書いてあります。

 

必要ファイルの準備

 AVFS導入のため、以下を用意します。

 kernel 2.6.10(14?) 以上であれば、カーネルコンフィグで CONFIG_FUSE_FS=y,m にしてfuseを組み込んじゃいましょう。
 うちでは CONFIG_FUSE_FS not set にしていて、カーネルのリビルドが面倒くさかったのでtar-ballを持って来てmakeしました。 ;-P

make

 

avfsを使用する

 avfsのmountには mountavfs を使用します。

 

avfsを解除する

 avfsを解除するには umountavfs を使用します。

 

extfs で ulha を使用する

 

http で AVFS を経由したファイルアクセス - 2011/02/22

 あんまりオープンすぎる http サーバでやるのはどうかな? と思いますが、ブラウザベースで AVFS 経由のファイルアクセスも可能です。
 参考になるのはこちら HOWTO: setup avfs / fuse on debian (etch) です。

 apache の RewriteRule を使用することで、 AVFS 経由のファイルアクセスで必要な hogehoge.tar.gz#/ のようなパスを生成します。 (アーカイヴの中にさらにアーカイヴが... とかだと上手く rewrite できないかな)

 こうしておくと、ブラウザで http://hogehoge/vfs/fugafuga.tar.gz を開くと、自動で http://hogehoge/vfs/fugafuga.tar.gz#/ の Index を出してくれるようになります。 (ちょっと便利!!)

 

更新履歴


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-02-22 (火) 22:42:14