###参考:s3fsよりも高速に使えるgoofysを試してみた[クラスメソッド]
Developers.IOの記事をそのまま試してみました。
使ってみてs3fsとの速度差が尋常じゃないのでこれおすすめですよ
###大事なこと
####IAMロールをちゃんと振りましょうね!
IAMロールは以前書いたこれの前半に書いているので参考にしてください。
あ!S3のバケットも準備しておいてくださいね!
キーワード [ S3 マウント EC2 ]
###SFTP
同じことやっても・・・なのでサムシングにゅー。
SFTPでファイル送れるようにユーザー作ってみよう!
ユーザー追加と設定
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インストール
インストールしていきます
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
作業ログ
[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をマウントする!
変数セット
S3_MOUNT_NAME='s3_goo'
S3_BUCKET_NAME='<バケット名>'
マウント
mkdir ${S3_MOUNT_NAME}
/home/ec2-sftpuser/go/bin/goofys ${S3_BUCKET_NAME} ${S3_MOUNT_NAME}
作業ログ
[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 ←ほら!できた!
###コピペ用にまとめたよ!
変数だけセットしてね
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)もコピペでできるようにしたよ
変数セット
BUCKET_NAME='<S3のバケット名>'
S3_MOUNT_NAME='<マウント先>'
ROL_NAME='<ロール名>'
設定
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}"
作業ログ
[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
1GBの写真をアップして比較しましたが s3fs:goofys=1.5MB/sec:3.5MB/sec
と、明らかに早いです。