share facebook facebook twitter menu hatena pocket slack

2011.07.15 FRI

S3ってなんじゃ?(s3fs編)

三浦 悟

WRITTEN BY 三浦 悟

AWSには、s3fsというS3の領域をファイルシステムとしてマウントすることができる技術があります。
ということで、今回はこのs3fsを使ってみます。

○インストール

s3fsは、FUSEというファイルシステムを構築するためのフレームワークをベースとして作られているので、動作にはFUSEのインストールが必要となります。

まずはじめに、インストールやベースとなる挙動に必要なものをyumからインストールします。

# yum -y install gcc
# yum -y install gcc-c++
# yum -y install libstdc++-devel
# yum -y install pkgconfig
# yum -y install make
# yum -y install curl-devel
# yum -y install libxml2-devel

次に、FUSEをインストールします。
FUSEはyumからも取得できるのですが、リポジトリにはs3fsが対応しているfuseのバージョンよりも古いものしかないため、Filesystem in Userspace by dzsekijo, mszerediらソースを取得してインストールします。

$ wget http://downloads.sourceforge.net/project/fuse/fuse-2.X/2.8.5/fuse-2.8.5.tar.gz?r=&ts=1310717181&use_mirror=jaist -O fuse-2.8.5.tar.gz
$ tar xvzf fuse-2.8.5.tar.gz
$ cd fuse-2.8.5/
$ ./configure prefix=/usr
$ make
# make install

そして、pkgconfigパスを環境変数に設定します。

PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/lib64/pkgconfig/

#configureにprefixをつけなかった場合は/usr/local/lib/pkgconfigです。

fuseをモジュールとしてカーネルにロードします。

# ldconfig
# modprobe fuse

続いてs3fsをインストールします。
FUSE-based file system backed by Amazon S3からs3fsをダウンロードしてインストールします。

$ wget http://s3fs.googlecode.com/files/s3fs-1.40.tar.gz
$ cd s3fs-1.40
$ ./configure prefix=/usr
$ make
# make install

これでインストールは完了です。

○設定
マウントするs3のアカウント情報をs3fsに教えるために、/etc/passwd-s3fsにキー情報を記載します。

# echo アクセスキー:シークレットキー > /etc/passwd-s3fs
# chmod 640 /etc/passwd-s3fs

複数の認証を設定する場合には、

# echo バケット名:アクセスキー:シークレットキー > /etc/passwd-s3fs
# chmod 640 /etc/passwd-s3fs

上記のようにします。

では、マウントしてみます。

# mkdir /mnt/s3
# s3fs myfirst-bucket /mnt/s3

以上で、myfirst-bucketというバケットが/mnt/s3というディレクトリとしてマウントが完了しました。

# df -k
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/sda1             10321208   3364700   6432220  35% /
none                    314952         0    314952   0% /dev/shm
fuse                 274877906944         0 274877906944   0% /mnt/s3

○おまけ

ついでに起動時の自動マウントの設定を行います。

/etc/fstabの最終行に以下の設定を追記し、自動でボリュームをマウントするようにします。

# vi /etc/fstab
......

s3fs#myfirst-bucket /mnt/s3 fuse allow_other,default_acl=public-read 0 0

しかしこれだけではfuseが有効になっていないため、自動マウントに失敗します。
そのため、fstabの設定が実行される前にfuseを有効にするため、
rc.sysinit内のfstabの記述より前にfuseをカーネルにロードして有効にします。

# vi /etc/rc.d/rc.sysinit
.....

. /etc/init.d/functions
modprobe fuse ←----------------追記

....
fstabの記述

以上で、起動時に自動でマウントされるようになります。

こちらの記事はなかの人(memorycraft)監修のもと掲載しています。
元記事は、こちら

三浦 悟

三浦 悟

高円寺在住のなんじゃ系男子 またの名をmemorycraftといいます。 炭水化物大好き 日々の「なんじゃ?」を記事にしてます。