こんにちは、cloudpack三浦です。

s3fsでS3バケットをマウントし、規定期間内にアクセスが無い場合にautofsでアンマウントし、アクセスが有った場合にマウントする設定方法について記載します。

目的

s3fsを利用してS3バケットをキャッシュを使用してマウントして、規定期間内のアクセスが無い場合はキャッシュをクリアしたい。
s3fsのキャッシュ開放はアンマウントしなければいけないのでautofsで規定期間内にアクセスが無い場合に自動的にアンマウントさせたい。

使用OS(AMI)

CentOS 6.5 ※以下のAMIを使用
s3fsとautofsの連携: CentOS 6.5 AMI

s3fsのインストール・設定方法

s3fsをソースコンパイルする際に必要になるモジュールをダウンロード・インストールする

# wget ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/releases/14/Fedora/x86_64/os/Packages/fuse-2.8.4-1.fc14.x86_64.rpm
# wget ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/releases/14/Everything/x86_64/os/Packages/fuse-devel-2.8.4-1.fc14.x86_64.rpm
# wget ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/releases/14/Everything/x86_64/os/Packages/fuse-libs-2.8.4-1.fc14.x86_64.rpm
# rpm -ivh fuse-2.8.4-1.fc14.x86_64.rpm
# rpm -ivh fuse-libs-2.8.4-1.fc14.x86_64.rpm
# rpm -ivh fuse-devel-2.8.4-1.fc14.x86_64.rpm
# yum -y install gcc-c++ libcurl-devel libxml2-devel openssl-devel

s3fsをソースコンパイルする

■ソースファイルをダウンロード・展開(githubより)
# wget https://github.com/s3fs-fuse/s3fs-fuse/archive/master.zip
# unzip master
# ls -l
-rw-r--r--. 1 root root 123530 Dec 5 03:15 master
drwxr-xr-x. 5 root root 4096 Nov 16 14:49 s3fs-fuse-master
■s3fsをソースコンパイルする
#cd ./s3fs-fuse-master/
./autogen.sh
# ls
aclocal.m4 ChangeLog configure.ac INSTALL missing test
AUTHORS config.guess COPYING install-sh NEWS
autogen.sh config.sub depcomp Makefile.am README
autom4te.cache configure doc Makefile.in src
# export PKG_CONFIG_PATH=/usr/lib/pkgconfig
# ./configure --prefix=/usr
# make
# make install
■s3fsがインストールされていることを確認
# which s3fs
/usr/bin/s3fs

s3fsでS3バケットをmountする

■s3fs用キーファイルを作成する
# cat /etc/passwd-s3fs
Access Key ID:Secret Access Key
# chmod 640 /etc/passwd-s3fs

※IAM-roleを利用する際は上記ファイル不要。
※IAM-role利用時の設定方法は、後述の『■auto.miscの編集(マウントの設定)』参照

■mount出来ているかを確認する
# s3fs koujipstest /mnt/s3fs -ouse_cache=/tmp
# cd /mnt/s3fs
# ls
hoge1
# s3cmd ls s3://koujipstest
DIR s3://koujipstest/hoge1/
#umount /mnt/s3fs

autofsのインストール・設定方法

autofsをインストールする

# yum install autofs
# chkconfig --list autofs
autofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
# service autofs status
automount is stopped

autofsのコンフィグファイルを設定する

■auto.masterの編集(タイムアウト時間の設定)
# diff /etc/auto.master /etc/auto.master_ORG
7c7
< /mnt /etc/auto.misc --timeout=10
---
> /misc /etc/auto.misc
■auto.miscの編集(マウントの設定)
# diff /etc/auto.misc /etc/auto.misc_ORG
6c6
< #cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
---
> cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
16d15
< s3fs -fstype=fuse,allow_other,use_cache=/tmp,del_cache,url=https://s3.amazonaws.com,umask=007,uid=$USER,gid=$GROUP	:s3fs#koujipstest

※IAM-roleを利用する場合は以下のとおり(myRoleは任意のもので)
s3fs -fstype=fuse,allow_other,use_cache=/tmp,del_cache,url=https://s3.amazonaws.com,umask=007,uid=$USER,gid=$GROUP,iam_role=myRole :s3fs#koujipstest

■autofsを起動する
# service autofs start
■オートマウントの動作確認(マウントされていない事の確認)
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvde1 5700048 1333688 4076812 25% /
tmpfs 302244 0 302244 0% /dev/shm

# ps ax|grep s3fs
892 pts/0 S+ 0:00 grep s3fs
■オートマウントの動作確認(アクセスするとマウントされる事の確認)
※上記コマンド実行の続き
# touch /mnt/s3fs/hogehoge
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvde1 5700048 1333704 4076796 25% /
tmpfs 302244 0 302244 0% /dev/shm
s3fs 274877906944 0 274877906944 0% /mnt/s3fs

# ps ax|grep s3fs
946 ? Ssl 0:00 s3fs koujipstest /mnt/s3fs -o rw,allow_other,use_cache=/tmp,del_cache,url=https://s3.amazonaws.com,dev,suid
957 pts/0 S+ 0:00 grep s3fs

# ls -l /mnt/s3fs/hogehoge
-rw-r--r--. 1 root root 0 Dec 5 07:31 /mnt/s3fs/hogehoge

以上になります。

元記事はこちらです。
s3fsとautofsの連携