FUSEインストールからs3fsを使うまで(前編)

Amazon S3をファイルシステムとしてマウントできるという、s3fsを使ってみたくなったので挑戦。
http://code.google.com/p/s3fs/
対象のOSは

# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.3 (Tikanga)

しかも2.6.18-92.1.13.el5(2009年6月12日現在で最新は2.6.18-128.1.10.el5)でx86_64。
この記事誰得…debianとかCentOSの人や、カーネルを最新にできる環境の人は多分さくっとaptだのyumだのすればいいかと。

いきなり本番サーバをいじるのは怖いので、同じ環境を構築しようとしたのですが、RHEL5とか手に入れようにも…
というわけで、テストはCentOS 5で。ちなみに、CentOSにはFUSEのyumが用意されてるらしいです。今回は使わないけど。

書いてたら長くなったので2エントリに分けます。
前編はCentOS 5にインストールしたメモ。あまり意味はないです。
後編はRHEL5にインストールしたメモ。本命です。

まずは目的のs3fsをダウンロード。

# wget http://s3fs.googlecode.com/files/s3fs-r177-source.tar.gz
# tar xvzf s3fs-r177-source.tar.gz
# cd s3fs
# make
s3fs.cpp:23:18: error: fuse.h: そのようなファイルやディレクトリはありません

FUSEがないと言われます。

rpmfindからRedHat EL5用のRPMを落としてきます。
FUSEを入れます。(※ここは失敗なのでやらないでください)

# wget ftp://rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/fuse-2.7.4-1.el5.rf.i386.rpm
# rpm -ivh fuse-2.7.4-1.el5.rf.i386.rpm
警告: fuse-2.7.4-1.el5.rf.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID ********
準備中…                ########################################### [100%]
   1:fuse                   ########################################### [100%]

あ、ATrpmsに新しいのがあったのでアンインストール。

# rpm -e fuse-2.7.4-1.el5.rf

FUSEをインストールするのに参考にしたサイト:SysAdmin’s Diary : Simple Steps To Mount NTFS In RHEL 5

で、目的の最新のFUSEはここ。
ATrpms – by Distribution > Red Hat Enterprise Linux 5 > fuse

# wget http://dl.atrpms.net/all/fuse-2.7.4-8_10.el5.i386.rpm
# wget http://dl.atrpms.net/all/fuse-libs-2.7.4-8_10.el5.i386.rpm
# wget http://dl.atrpms.net/all/fuse-devel-2.7.4-8_10.el5.i386.rpm
# wget http://dl.atrpms.net/all/fuse-kmdl-2.6.18-128.1.10.el5-2.7.4-8_10.el5.i686.rpm
# rpm -ivh fuse-2.7.4-8_10.el5.i386.rpm
警告: fuse-2.7.4-8_10.el5.i386.rpm: ヘッダ V4 DSA signature: NOKEY, key ID ********
エラー: 依存性の欠如:
        fuse-kmdl-2.7.4-8_10.el5 は fuse-2.7.4-8_10.el5.i386 に必要とされています

あ、いっぺんにインストールしないとダメなのね。

# rpm -ivh fuse-2.7.4-8_10.el5.i386.rpm fuse-kmdl-2.6.18-128.1.10.el5-2.7.4-8_10.el5.i686.rpm fuse-devel-2.7.4-8_10.el5.i386.rpm fuse-libs-2.7.4-8_10.el5.i386.rpm

で、FUSEのインストールは成功。

改めてs3fsをmake&make install

# make
g++ -ggdb -Wall -D_FILE_OFFSET_BITS=64 -I/usr/include/fuse  -pthread -L/lib -lfuse -lrt -ldl    -L/usr/kerberos/lib -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz   -I/usr/include/libxml2 -L/usr/lib -lxml2 -lz -lm -lcrypto s3fs.cpp -o s3fs
s3fs.cpp:440: 警告: ‘size_t readCallback(void*, size_t, size_t, void*)’ defined but not used
ok!
# make install
g++ -ggdb -Wall -D_FILE_OFFSET_BITS=64 -I/usr/include/fuse  -pthread -L/lib -lfuse -lrt -ldl    -L/usr/kerberos/lib -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz   -I/usr/include/libxml2 -L/usr/lib -lxml2 -lz -lm -lcrypto s3fs.cpp -o s3fs
s3fs.cpp:440: 警告: ‘size_t readCallback(void*, size_t, size_t, void*)’ defined but not used
ok!
cp -f s3fs /usr/bin

…何か単純なmakeだな。
とりあえず成功。

では続いてマウントを実行。

# mkdir /mnt/s3
# s3fs ***** -o accessKeyId=******************** -o secretAccessKey=**************************************** /mnt/s3

成功も失敗も出ないけど、成功しているらしい。
最初の*****はバケット名ね。

# cd /mnt/s3
# ll
ls: reading directory .: 入力/出力エラーです
合計 0

ん、何も出ない…

エラーの詳細も何も出ないので他のツールで試してみることに。
s3cmdというのを試してみる。
s3cmdのあとに続けてlsだのコマンドを打つことでバケットにアクセスできるツールらしい。

参考にしたサイトはこちら。
ks: Amazon S3用のコマンドラインツールs3cmd
http://ks.typepad.jp/blog/2009/01/amazon-s3s3cmd-.html

# cd /etc/yum.repos.d/
# wget http://s3cmd.org/repo/CentOS_5/s3tools.repo
# yum install s3cmd
# s3cmd –configure

ここで諸々設定を行う。まぁ、アクセスキーと秘密アクセスキーとか以外はすごい勢いでハイハイ言っておけばOK。
で、設定できたので実行。

# s3cmd ls

あー、ローカルの時間が違いすぎるみたいなことを言われた(ログ取るの忘れた)のでntpで時間合わせ

# date
2009年  6月 12日 金曜日 18:09:57 JST
# ntpdate 192.168.0.1
12 Jun 17:54:37 ntpdate[4372]: step time server 192.168.0.1 offset -956.022080 sec
# s3cmd ls

で、s3cmdの方は成功。

つまりそういうことか。

# cd /mnt/s3
# ll

合計 82577
———- 1 root root  298359 12月 23  2007 0223279e4a09010bf1d55aed45de8b46.dat
———- 1 root root  307441 12月 21  2007 02d452b8ee0809e601297e77e0d14fca.jpg
———- 1 root root   64051  1月  4  2008 03739992ce7b38979b7fd71bfbdf5d30.zip
できた━(∀゚ )━(゚∀゚)━━━!!


タグ: ,

新しく会社作りました!

コメントをどうぞ