s3fsよりも高速に使えるgoofysを試してみた | Developers.IO
を見てMacで試してみました。
昔s3をローカルにマウントできるs3fs を使ってみたことがあるのですが、
遅すぎて使えないなぁと思った記憶があります。
goofysというのが高速に動作するとのことなので使ってみました。
kahing/goofys: a Filey System for Amazon S3 written in Go
公式ベンチを見る限り相当早そう。
準備
Install OSXFUSE
新・OS X ハッキング! (113) あのファイルシステムをOS Xでラクに読み書き(1) | マイナビニュース
OSに依存しないファイルシステムを使うFUSEのMac実装である
OSXFUSE をinstallします。 記事で紹介されている FUSE4x は OSXFUSE にmergeされ
現在はサポートされていないようです。
Home - FUSE for OS X
Install goofys
$ go get github.com/kahing/goofys
$ go install github.com/kahing/goofys
~/.aws/credentials にaccess_keyとsecret_access_keyを記述。
aws configure でも設定可能。
使ってみる
s3側にbucket用意(testbucket)用意して、以下を実行するだけ。
$ mkdir goofys
$ goofys testbucket goofys
-f をつけるとログ掃きながらforegroundで実行してくれます。
$ goofys -f teratest ~/goofys 2016/02/01 03:52:04.926352 s3.INFO Switching from region 'us-west-2' to 'ap-northeast-1' 2016/02/01 03:52:05.040121
$ df -ha . Filesystem Size Used Avail Capacity iused ifree %iused Mounted on testbucket 1.0Pi 0Bi 1.0Pi 0% 0 1000000000 0% /Users/rochefort/goofys
cpの速度を計測
# 1GBのファイルを作成 $ dd if=/dev/zero of=./test_file bs=1048576 count=1024 $ ll test_file -rw-r--r-- 1 rochefort wheel 1.0G Feb 2 04:00 test_file
copy from local to local
$ time cp test_file test_file2 cp -i test_file test_file2 0.00s user 1.37s system 22% cpu 6.124 total
copy from local to s3
$ time cp test_file ~/goofys cp -i test_file ~/goofys 0.00s user 1.57s system 0% cpu 3:07.95 total
1GB 3分なので 5793 KB/s。
まぁそこそこなんでしょうか。
copy from s3 to s3
$ cd goofys $ time cp test_file test_file2 cp -i test_file test_file2 0.00s user 1.84s system 0% cpu 8:06.69 total
これが遅い!
想像はしていたのですが、やはり一度localにファイルを転送してしまっているのでしょうか。
remove
$ time rm test_file rm -i test_file 0.00s user 0.00s system 0% cpu 1.579 total
削除は一瞬。
その他
アンマウント
-f 付きだと ctrl-c でアンマウントされます。
-f なしだと通常通りアンマウントすればok。
途中でnetworkが切れてmountされっぱなし状態になった時も同様。
$ diskutil unmount /Users/rochefort/goofys
finderから使えるか?
一見使えそうなのですが、ファイルのwriteがなぜかエラーになってできませんでした。
readはok。
The operation can’t be completed because an item with the name “goofys_finder.png” already exists.
Extended Attributes
ちなみにExtended Attributes付きのファイル(@付)だとwarningが出るが
cpは成功するみたい。
$ ll ~/Desktop/goofys_finder.png -rw-r--r--@ 1 rochefort staff 16K Feb 2 4:10 /Users/rochefort/Desktop/goofys_finder.png $ cp ~/Desktop/goofys_finder.png ~/goofys cp: /Users/rochefort/Desktop/goofys_finder.png: could not copy extended attributes to /Users/rochefort/goofys/goofys_finder.png: Operation not permitted
cp後のファイルはもちろん@なし。
$ ls -@l ~/goofys/goofys_finder.png -rw-r--r-- 1 rochefort staff 16266 Feb 2 4:11 /Users/rochefort/goofys/goofys_finder.png