s3をマウントできる goofys を Mac で試す

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に依存しないファイルシステムを使うFUSEMac実装である
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から使えるか?

f:id:rochefort:20160130161545p:plain
一見使えそうなのですが、ファイルの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