FUSE filesystem backuped by Amazon S3

Amazon S3 でbackup

昨日の日記で最後に書いたEric Hammondさんのメールと,FuseOverAmazonのページを見ながら,使い方を検証してみました.作り方は非常に簡単.

作り方

作業手順を列挙すると以下のようになります.ちなみに,...の部分にはS3を使うときのアカウント情報が入ります.

apt-get install -y subversion build-essential libcurl4-openssl-dev libxml2-dev libfuse-dev
svn checkout http://s3fs.googlecode.com/svn/trunk/s3fs s3fs
make -C s3fs
cp s3fs/s3fs /usr/local/bin

export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
echo "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" > /etc/passwd-s3fs
chmod 600 /etc/passwd-s3fs

s3fsの起動と終了はそれぞれ以下のように行います.S3用のバケットは事前に作成しておいてください.

起動
export bucket=...
mkdir -p /mnt/$bucket
/usr/local/bin/s3fs $bucket /mnt/$bucket

終了
umount /mnt/$bucket

Februaryという名前のバケットを作っておいて,そこにperlをダウンロードしてみたのが以下のログです.

root@domU-12-31-38-00-41-03:~# cd /mnt/February
root@domU-12-31-38-00-41-03:/mnt/February# wget http://search.cpan.org/CPAN/authors/id/R/RG/RGARCIA/perl-5.10.0.tar.gz
--00:31:27--  http://search.cpan.org/CPAN/authors/id/R/RG/RGARCIA/perl-5.10.0.tar.gz
           => `perl-5.10.0.tar.gz'
Resolving search.cpan.org... 84.45.68.23
Connecting to search.cpan.org|84.45.68.23|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://cpan.erlbaum.net/authors/id/R/RG/RGARCIA/perl-5.10.0.tar.gz [following]
--00:31:27--  http://cpan.erlbaum.net/authors/id/R/RG/RGARCIA/perl-5.10.0.tar.gz
           => `perl-5.10.0.tar.gz'
Resolving cpan.erlbaum.net... 72.32.180.194
Connecting to cpan.erlbaum.net|72.32.180.194|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 15,595,020 (15M) [application/x-gzip]

100%[===========================================================================>] 15,595,020   832.36K/s    ETA 00:00

utime(perl-5.10.0.tar.gz): Operation not permitted
00:31:47 (826.63 KB/s) - `perl-5.10.0.tar.gz' saved [15595020/15595020]

root@domU-12-31-38-00-41-03:/mnt/February# ls
perl-5.10.0.tar.gz

上のlogで"utime(perl-5.10.0.tar.gz): Operation not permitted"という部分がs3fsでまだ実装されていない部分です.この後,umountしてからS3を覗いたところ,Februaryバケットの中にperl-5.10.0.tar.gzがあるのを確認できました.ファイルをダウンロードしている途中とか,umountする前にも確認すべきだったけど忘れてました.(><)

所感

s3fsは,FUSEの個々のオペレーションに対応してS3にリクエストを投げてるけど,普段はlocalなAMI上のloopbackファイルシステムにアクセスするようにしておいて,ファイルに変更があるときだけS3にフラッシュする方が効率がいいんじゃないかな.FUSE.pmをインストールして試してみるかな,と.