S3をEC2からマウントするgoofysを試してみた。
昔s3fsを試したことがあるんだけど、パフォーマンスが問題になったりしたことがありました。
巷では爆速と噂のgoofysですが、とりあえずパフォーマンスは置いておいて、できないことが何かを見ておきました。
何ができないのか
公式にもPOSIXは二の次ということで、できないことを書いてくれています。
group,modeとかは固定,simlinkは動かないそうです。
後、atime,mtime,ctimeが全部同じになります。
インストール
とはいえ使い心地を見ときたかったので、インストールして見ました。
ansibleで環境を作って見ました。
fuseとgoが必要です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| ---
- hosts: tag_Name_gside_goofys
remote_user: gentoo
become: true
tasks:
- name: install sys-fs/fuse
portage: >
package=sys-fs/fuse
state=present
- name: install dev-lang/go
portage: >
package=dev-lang/go
state=present
- name: goofys Download
get_url: url="https://github.com/kahing/goofys/releases/download/v0.0.10/goofys" sha256sum="78baba6f9c3d8cb06a55a872f0380bc8b37af649a0a7d6961d0789a3bdcd62d4" dest="/usr/local/bin" mode="744"
|
実はmountの設定も書いていたのですが、IAM RoleでEC2に権限を与えて動作させようとした場合、fstabの設定ではマウントしてくれませんでした。
Credentialを置きたくない・置けないポリシーの場合はネックになりそうですね。
検証
IAM Role + fstabは動作しなかったので、コマンドでマウントします。
1
2
3
4
5
6
7
8
9
10
| $ goofys gside-goofys /mnt/s3/
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
udev 10M 0 10M 0% /dev
/dev/xvda2 8.6G 2.3G 5.9G 28% /
tmpfs 49M 240K 49M 1% /run
shm 242M 0 242M 0% /dev/shm
cgroup_root 10M 0 10M 0% /sys/fs/cgroup
gside-goofys 1.0P 0 1.0P 0% /mnt/s3
|
ファイルを作ってみました。
1
2
3
| $ touch /mnt/s3/hoge
$ ls -la /mnt/s3/hoge
-rw-r--r-- 1 root root 0 2月 19 21:09 /mnt/s3/hoge
|
ヘルプにもありますが、fileのモードは644,uid,gidは0がデフォルトで固定です。
これらの固定値はオプションで違う値に変更は可能ですが、固定値であることは変わりません。
1
2
| $ ln -sf hige /mnt/s3/foo
ln: シンボリックリンク '/mnt/s3/foo' の作成に失敗しました: 関数は実装されていません
|
シンボリックリンクは作れません。
まとめ
この割り切りが受け入れれるかというところでしょうね。
それでも爆速という点を重視して、制限を受け入れた上での使い道はいくらでもあると思います。
が、IAM Role+fstabの部分は対応を切望したいところです。