Septeni Engineer's Blog

セプテーニエンジニアが綴る技術ブログ

【AWS】s3fsを使って、EC2にs3をマウントする

こんにちは、貴子です。

AWSのs3をnfsとして使いたくなったので、s3fsを利用してEC2にマウントしてみます。
よくs3はダウンロードもアップロードも遅いと聞きますが、
どれくらい遅いのか自分でも試して確認しようと思って、環境を整えました。

f:id:no_sugiyama:20150722161220p:plain


s3fsをインストールする

(1)AWSのマネージメントコンソールからs3Bucket作成する
f:id:no_sugiyama:20150722161246p:plain

(2)EC2にログインし、s3fsをインストールするために必要なパッケージをインストールする

yum -y install gcc-c++ fuse fuse-devel libcurl-devel libxml2-devel  openssl-devel
fuseのバージョンは2.8.4以上が推奨されていますが、centos6系だとデフォルトのyumで入りません。
rpmを探してくるかソースコンパイルで入れて下さい。
ブログ掲載用のインスタンスでは、OSにAmazonLinux(amzn-ami-hvm-2014.03.2.x86_64-ebs)を
選んでいたので、デフォルトのままのyumでインストールできました。

(3)githubからs3fsをダウンロードする

wget https://s3fs.googlecode.com/files/s3fs-1.74.tar.gz
tar zxvf s3fs-1.74.tar.gz
f:id:no_sugiyama:20150722161308p:plain
./configure prefix=/usr
make
make install
f:id:no_sugiyama:20150722161331p:plain
インストール出来ました。

(4)パスワードを設定する

echo "accesskey:secretKey" > /etc/passwd-s3fs
chmod 600 /etc/passwd-s3fs

(5)(1)で作成したs3をマウントする
マウント先を作成します。

mkdir /mnt/
/usr/bin/s3fs -o allow_other takako-s3fs-test /mnt/
/usr/bin/s3fs -o allow_other 【s3Bucket名】【マウント先】
f:id:no_sugiyama:20150722161411p:plain
マウントできました!
これで、このディレクトリにファイルを置くと、 s3に格納されるので確かめてみましょう。
適当なファイルとディレクトリを作成します。
f:id:no_sugiyama:20150722161429p:plain

s3のマネージメントコンソール画面からデータが作成されていることを確認します。

f:id:no_sugiyama:20150722161520p:plain

(6)サーバー再起動時に自動でマウントをさせる
先ほどは手動でマウントしましたが、サーバー起動時に毎回手動でマウントするのは不格好なので、
自動マウントの設定を行います。

vi /etc/fstab

/usr/bin/s3fs#takako-s3fs-test /mnt fuse allow_other,default_acl=public-read 0 0
/usr/bin/s3fs#【s3Bucket名】【マウント先】 fuse allow_other,default_acl=public-read 0 0

記述ミスがないか、一度s3のアンマウントを行って確認します。
fusermount -u /mnt
/etc/fstabファイルを使ってマウントを行います。
mount -a
df -h

f:id:no_sugiyama:20150722161634p:plain

以上で、s3の自動マウント設定が出来ました。

感想

環境が整ったので、データをs3に移せばもう確認できる環境になるのですが、
如何せんデータ移行には時間かかりますね。
世の中のエンジニアはどういう工夫をして時間を短縮しているのか気になります。

先日、初めてJAWSの中央線@高尾山に参加して、色々濃くて、かなりびっくりしました。
中央線のJAWSは、マイクロソフトAWSIDCフロンティアが
クラウド環境についてのプレゼンをしてくれ、質問にも答えてくれる場でした。
個人的にはGoogleも参加してくれたら良いのになあと思いつつ、楽しい時間を過ごさせて頂きました。
また機会があれば参加します。