toto_1212

技術のログをツラツラ書きます。自分用ですが参考にしていただけたら嬉しいです。間違ってたらドンドン突っ込んでください。

s3fsでS3のバケットをマウント

s3fsでS3バケットをマウントしてストレージとして使う方法です。
環境:amazon Linux 64bit
   S3backet名 mnttest

1. s3fsの環境をインストールする

yum install gcc make libstdc++-devel gcc-c++ fuse fuse-devel curl-devel libxml2-devel openssl-devel mailcap

2. s3fsをダウンロードする

wget http://s3fs.googlecode.com/files/s3fs-1.62.tar.gz

3. s3fsをインストールする

mv s3fs-1.62.tar.gz /usr/local/src/  #任意のフォルダに移動させる
tar zxvf s3fs-1.62.tar.gz
cd s3fs-1.62
./configure --prefix=/usr
make
make install

4.アクセスIDとシークレットIDを登録

vi /etc/passwd-s3fs
アクセスキー ID:シークレットアクセスキー

5.パーミッションを640に設定

chmod 640 /etc/passwd-s3fs

6.S3をマウントする

mkdir /mnt/s3
s3fs  mnttest /mnt/s3 -o allow_other
※allow_other指定しないと全てのユーザーで書きこみができません。

★dfコマンドで結果確認
df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1            7.9G  1.1G  6.8G  14% /
tmpfs                 298M     0  298M   0% /dev/shm
s3fs                  256T     0  256T   0% /mnt/s3

7. 書き込みチェック

echo "test upload " > /mnt/s3/uptest.txt

★結果
[root@testsvr s3fs-1.62]# ls -al /mnt/s3/
total 1
  • rw-r--r-- 1 root root 12 Jun 10 18:12 uptest.txt
[root@testsvr s3fs-1.62]# cat /mnt/s3/uptest.txt test upload

8.unmountする

umount s3fs

もしくは、、、
直接、プロセスを停止するでも可
ps ax | grep s3fs
[root@ip-10-150-118-152 s3fs-1.62]# ps ax | grep s3fs
 3196 ?        Ssl    0:00 s3fs mnttest /mnt/s3 -o allow_other
 3220 pts/0    S+     0:00 grep s3fs

kill 3196

~~~おまけで自動起動設定~~~
http://blog.cloudpack.jp/2011/07/aws-news-s3-s3fs.htmlより

pkgconfigパスを環境変数に設定する

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

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

ldconfig 
modprobe fuse

fstabファイルに追加設定する

vi /etc/fstab
#最終行に追記
s3fs#mnttest /mnt/s3 fuse allow_other,default_acl=public-read 0 0  

rc.sysinit内のfstabの記述より前にfuseをカーネルにロードして有効にする設定

vi /etc/rc.d/rc.sysinit

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