[S3]今流行のgoofysでS3を爆速マウント

###参考：[s3fsよりも高速に使えるgoofysを試してみた](http://dev.classmethod.jp/cloud/aws/how-to-use-s3fs-goofys/)[クラスメソッド]
Developers.IOの記事をそのまま試してみました。
使ってみてs3fsとの速度差が尋常じゃないのでこれおすすめですよ

---

###大事なこと
####IAMロールをちゃんと振りましょうね！
IAMロールは以前書いた[これ](http://qiita.com/Yuki_BB3/items/9f5eb233b152be1c4bc9)の前半に書いているので参考にしてください。
あ！S3のバケットも準備しておいてくださいね！
キーワード [ S3　マウント　EC2 ]

---
###SFTP
同じことやっても・・・なのでサムシングにゅー。
SFTPでファイル送れるようにユーザー作ってみよう！

```bash:ユーザー追加と設定
sudo useradd ec2-sftpuser
sudo passwd ec2-sftpuser
visudo
sudo su ec2-sftpuser
cd ~
```

パスワード
__futaenoKIWAMIaaaa__


```:作業ログ
[ec2-user@ip- ~]$ sudo useradd ec2-sftpuser
[ec2-user@ip-1 ~]$ sudo passwd ec2-sftpuser
ユーザー ec2-sftpuser のパスワードを変更。
新しいパスワード:futaenoKIWAMIaaaa
新しいパスワードを再入力してください:futaenoKIWAMIaaaa
passwd: すべての認証トークンが正しく更新できました。
[ec2-user@ ~]$ sudo visudo

-----

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
ec2-sftpuser    ALL=(ALL)    ALL　　←1行追加

-----
[ec2-user@ip ~]$ sudo su ec2-sftpuser
[ec2-sftpuser@ip ec2-user]$
[ec2-sftpuser@ip ec2-user]$ cd ~ 
[ec2-sftpuser@ip ~]$ pwd
/home/ec2-sftpuser
```
---
###goofysインストール
インストールしていきます

```bash:goofysインストール
sudo yum update -y
sudo yum install golang fuse -y
export GOPATH=$HOME/go
go get github.com/kahing/goofys
go install github.com/kahing/goofys

```


```bash:作業ログ
[ec2-sftpuser@ip ~]$ sudo yum update -y
[ec2-sftpuser@ip ~]$ export GOPATH=$HOME/go  ←これセットしないと動きません。
[ec2-sftpuser@ip ~]$go get github.com/kahing/goofys
[ec2-sftpuser@ip ~]$go install github.com/kahing/goofys
```

---
###S3をマウントする！

```bash:変数セット
S3_MOUNT_NAME='s3_goo'
S3_BUCKET_NAME='<バケット名>'
```
```bash:マウント
mkdir ${S3_MOUNT_NAME}
/home/ec2-sftpuser/go/bin/goofys ${S3_BUCKET_NAME} ${S3_MOUNT_NAME}

```

```bash:作業ログ
[ec2-sftpuser@ip ~]$ pwd
/home/ec2-sftpuser
[ec2-sftpuser@ip ~]$ ls
go
[ec2-sftpuser@ ~]$ mkdir ${S3_MOUNT_NAME}
[ec2-sftpuser@ip-10-0-2-125 ~]$ ls
S3_MOUNT_NAME  go
[ec2-sftpuser@ip-10-0-2-125 ~]$ ls go
bin  pkg  src
[ec2-sftpuser@ip ~]$ ls go/bin
goofys ←ここ本体ね
[ec2-sftpuser@ip ~]$ /home/ec2-sftpuser/go/bin/goofys ${S3_BUCKET_NAME} ${S3_MOUNT_NAME}
[ec2-sftpuser@ip ~]$ df -h
ファイルシス        サイズ  使用  残り 使用% マウント位置
/dev/xvda1            7.8G  1.6G  6.1G   21% /
devtmpfs              489M   56K  489M    1% /dev
tmpfs                 498M     0  498M    0% /dev/shm
${S3_BUCKET_NAME}   1.0P     0  1.0P    0% /home/ec2-sftpuser/s3_goo　←ほら！できた！
```
---
###コピペ用にまとめたよ！

```bash:変数だけセットしてね
sudo yum update -y
sudo yum install golang fuse -y
export GOPATH=$HOME/go
go get github.com/kahing/goofys
go install github.com/kahing/goofys
S3_MOUNT_NAME='<マウントディレクトリ名>'
S3_BUCKET_NAME='<S3バケット名>'
mkdir ${S3_MOUNT_NAME}
${GOPATH}/bin/goofys ${S3_BUCKET_NAME} ${S3_MOUNT_NAME}
```
---
###ついでにs3fs軽く書き直したよ
[EC2インスタンスにS3をマウントして使用する（IAM Role ver)](http://qiita.com/Yuki_BB3/items/9f5eb233b152be1c4bc9)もコピペでできるようにしたよ

```bash:変数セット
BUCKET_NAME='<S3のバケット名>'
S3_MOUNT_NAME='<マウント先>'
ROL_NAME='<ロール名>'
```

```bash:設定
sudo su
yum install automake gcc-c++ fuse fuse-devel libcurl-devel libxml2-devel openssl-devel -y
git clone https://github.com/s3fs-fuse/s3fs-fuse.git
./autogen.sh
./configure --prefix=/usr/local
make
sudo make install
cd ~
mkdir ~/s3fs
chmod 600 s3fs
sudo vi /etc/fuse.conf
 /usr/local/bin/s3fs ${BUCKET_NAME} ${S3_MOUNT_NAME} -o rw,allow_other,uid=500,gid=500,iam_role="${ROL_NAME}"
```

```bash:作業ログ
[root@ip ec2-user]# ls
s3fs-fuse
[root@ip ec2-user]#cd s3fs-fuse
[root@ip ec2-user]#./autogen.sh
[root@ip ec2-user]#./configure --prefix=/usr/local
[root@ip ec2-user]#make

===下のエラー？が出ますが、無視してとりあえず大丈夫===
make[2]: ディレクトリ `/home/ec2-user/s3fs-fuse/src' から出ます
Making all in test
make[2]: ディレクトリ `/home/ec2-user/s3fs-fuse/test' に入ります
make[2]: `all' に対して行うべき事はありません.
make[2]: ディレクトリ `/home/ec2-user/s3fs-fuse/test' から出ます
Making all in doc
make[2]: ディレクトリ `/home/ec2-user/s3fs-fuse/doc' に入ります
make[2]: `all' に対して行うべき事はありません.
make[2]: ディレクトリ `/home/ec2-user/s3fs-fuse/doc' から出ます
make[2]: ディレクトリ `/home/ec2-user/s3fs-fuse' に入ります
make[2]: ディレクトリ `/home/ec2-user/s3fs-fuse' から出ます
make[1]: ディレクトリ `/home/ec2-user/s3fs-fuse' から出ます

[root@ip ec2-user]#sudo make install

===下のエラー？が出ますが、無視してとりあえず大丈夫===

make[2]: ディレクトリ `/home/ec2-user/s3fs-fuse/doc' から出ます
make[1]: ディレクトリ `/home/ec2-user/s3fs-fuse/doc' から出ます
make[1]: ディレクトリ `/home/ec2-user/s3fs-fuse' に入ります
make[2]: ディレクトリ `/home/ec2-user/s3fs-fuse' に入ります
make[2]: `install-exec-am' に対して行うべき事はありません.
make[2]: `install-data-am' に対して行うべき事はありません.
make[2]: ディレクトリ `/home/ec2-user/s3fs-fuse' から出ます
make[1]: ディレクトリ `/home/ec2-user/s3fs-fuse' から出ます

[root@ip ec2-user]#cd ~
[root@ip ec2-user]#mkdir s3fs
[root@ip ec2-user]#sudo chmod 600 s3fs
[root@ip ec2-user]#sudo vi /etc/fuse.conf
# mount_max = 1000
 user_allow_other ←＃を外す
[root@ip ec2-user]# ls /usr/local/bin
s3fs
[root@ip ec2-user]#id ec2-user
uid=500(ec2-user) gid=500(ec2-user) groups=500(ec2-user),10(wheel)
[root@ip ec2-user]# /usr/local/bin/s3fs ${BUCKET_NAME} ${S3_MOUNT_NAME} -o rw,allow_other,uid=500,gid=500,iam_role="${ROL_NAME}"
[root@ip ec2-user]# df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/xvda1       7.8G  1.7G  6.1G   22% /
devtmpfs         489M   56K  489M    1% /dev
tmpfs            498M     0  498M    0% /dev/shm
s3fs             256T     0  256T    0% /home/ec2-user/s3fs　←s3fsでのマウント
```

---
早いです。goofys
１GBの写真をアップして比較しましたが ```s3fs:goofys=1.5MB/sec:3.5MB/sec``` と、明らかに早いです。