LoginSignup
117

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-01-28

参考: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 と、明らかに早いです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
117