S3にマウントすることで有名なのがs3fsなのですが、
遅いのも有名ですw
そこでgoofysはディスク書き込みが爆速とのこと!(goでできてる)
後輩ができないできないと嘆いていたのでヘルプしました。
ちなみに読み方がわかりませんw
一瞬グーフィーにw
ちなみにgoofyzというラッパーもいるみたい。
■environment
今回はConoHaでやってみました。
基本クレデンシャルがあればどんなvps、クラウドでも対応可能です。
■Overview
Goofys allows you to mount an S3 bucket as a filey system.
It’s a Filey System instead of a File System because goofys strives for performance first and POSIX second. Particularly things that are difficult to support on S3 or would translate into more than one round-trip would either fail (random writes) or faked (no per-file permission). Goofys does not have a on disk data cache (checkout catfs), and consistency model is close-to-open.
訳)
GoofysではS3バケットをファイルシステムとしてマウントすることができます。
これはファイルシステムではなくパフォーマンスを優先してPOSIXを優先しているからです。特にS3でサポートすることが困難であるか、複数のラウンドトリップに変換するものは、失敗(ランダム書き込み)または偽(ファイルごとの許可なし)のいずれかです。 Goofysにはディスク上のデータキャッシュ(checkout catfs)がなく、一貫性モデルはオープンに近い状態です。
■Installation
・aws configureの設定
適当にgoofysユーザ作ってクレデンシャルぶち込みます(rootユーザ)
1 2 3 4 5 |
# aws configure AWS Access Key ID [None]: goofyssssssssss AWS Secret Access Key [None]: goofysdayooooooooooooooo Default region name [None]: ap-northeast-1 Default output format [None]: |
・fuseのインストール
1 |
# yum install fuse |
・最新golangのインストール(1.8.3)
※1.8系じゃないとgoofys動かないので注意
https://golang.org/doc/install#install
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# cd /usr/local/bin # wget https://golang.org/dl/go1.8.3.linux-amd64.tar.gz --2017-07-28 16:50:44-- https://golang.org/dl/go1.8.3.linux-amd64.tar.gz Resolving golang.org... 2404:6800:4004:807::2011, 172.217.27.81 Connecting to golang.org|2404:6800:4004:807::2011|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz [following] --2017-07-28 16:50:44-- https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz Resolving storage.googleapis.com... 2404:6800:4004:818::2010, 172.217.25.80 Connecting to storage.googleapis.com|2404:6800:4004:818::2010|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 90029041 (86M) [application/x-gzip] Saving to: “go1.8.3.linux-amd64.tar.gz” 100%[==============================================================================================>] 90,029,041 11.2M/s in 4.5s 2017-07-28 16:50:49 (19.3 MB/s) - “go1.8.3.linux-amd64.tar.gz” saved [90029041/90029041] # tar -xzf go1.8.3.linux-amd64.tar.gz # ll total 87924 drwxr-xr-x 11 root root 4096 May 25 03:16 go/ -rw-r--r-- 1 root root 90029041 May 25 06:09 go1.8.3.linux-amd64.tar.gz # mv go go1.8.3 # mv go1.8.3 /usr/local # ll go* drwxr-xr-x 11 root root 4096 Sep 8 2016 go/ drwxr-xr-x 11 root root 4096 Jul 28 17:15 go.1.8.3/ |
今回go1.7がいるので/usr/local/binに1.8.3をいれて名前変更して/usr/localに移動させました。
・パス変更
1 2 3 4 5 6 7 8 9 10 |
# cat /etc/profile.d/goenv.sh #export GOROOT=/usr/local/go export GOROOT=/usr/local/go.1.8.3 export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # source /etc/profile.d/goenv.sh # go version go version go1.8.3 linux/amd64 |
・s3にバケットの作成 & mount-s3ディレクトリの作成
1 2 3 4 5 6 |
# aws s3 mb s3://mount-conoha make_bucket: mount-conoha # mkdir mount-s3 # ll drwxr-xr-x 5 root root 4096 Jul 28 16:46 mount-s3/ |
・goofysのインストール
1 2 3 4 5 6 7 |
# go get github.com/kahing/goofys # go install github.com/kahing/goofys # ll total 8 drwxr-xr-x 5 root root 4096 Jul 28 17:30 go/ drwxr-xr-x 5 root root 4096 Jul 28 16:46 mount-s3/ |
多少時間かかるはず。。
・S3をマウント
1 2 3 4 5 6 7 |
# ./go/bin/goofys mont-conoha ~/mount-s3 # df -h Filesystem Size Used Avail Use% Mounted on /dev/vda2 50G xxG xxG xx% / tmpfs 939M 0 939M 0% /dev/shm mount-conoha 256P 0 256P 0% /root/mount-s3 #マウントしてる |
・アンマウントしたい場合
1 |
# umount /root/mount-s3 |
・自動マウントしたい場合
1 2 |
# sudo vim /etc/fstab /root/go/bin/goofys#mount-conoha /root/mount-s3 fuse _netdev,allow_other,--file-mode=0666,--uid=0,--gid=0 0 0 |
■まとめ
導入簡単でした。これぞイージー。
s3にマウントしておくことでバックアップ系はこっちにいれておけばおk。
VPSとかディスク増やすと高くなるからS3にマウントすればコスト削減!
参考
https://github.com/kahing/goofys
0件のコメント