Posted at

dockerでgoofys環境を作ってS3をマウントしてみた

More than 1 year has passed since last update.

dockerでgoofys環境を作ってハンズオン的にS3をマウントして見ました。

その手順と使ってみた感想を紹介します。


ハンズオン手順


docker-compose作成


docker-compose.yaml

version: '2.1'

services:
goofys-test:
container_name: goofys-test
devices:
- /dev/fuse
cap_add:
- mknod
- sys_admin
image: serioja90/goofys
volumes:
- "~/.aws:/root/.aws"
environment:
- REGION=ap-northeast-1
- BUCKET=bucket_name
- MOUNT_DIR=/mnt/s3

bucket_nameをマウントしたいs3のbucket名に変えてください。

ロカールでaws configureを実行して鍵の設定をおこなってください。


実行

docker-compose up

で実行


動作確認

goofys-test    | 2017/10/26 02:20:58.273812 main.INFO File system has been successfully mounted.

とでてれば起動は成功してることです。

docker exec -it  `docker ps | grep goofys-test | awk '{print $1}'` sh

にてコンテナーにアクセスして

cd /mnt/s3

に移動すると指定したS3 bucketのデータがマウントされているはずです。


感想

riofs,s3fsより早くなってるとはいえ

普通のファイルシステムと比べてめっちゃ遅い。

容量46MBのディレクトリをコピーしてみたら

time cp -rp xx/ xx

real 2m 41.89s
user 0m 0.02s
sys 0m 0.44s

2分40秒もかかる。。特にコピーするのが遅い感じです。

普通のファイルシステムだと

time cp -rp xx/ xx

real 0m0.061s
user 0m0.000s
sys 0m0.056s

なので結構パフォーマンスの課題はあります。

とはいえ直接S3をマウントっぽく参照できるメリットは大きく

読み込みしか使わないとかコピーに時間がかかっても問題ないケースでは使えるかもしれないです。

ググったら、goofysのマウントが勝手に切れるという記事を見かけましたが、私の検証でそのような自称は起こりませんでした。

その他触って見てわかったこと

当たり前ですが、s3上で扱えないデータは置くことができません。

例えばシンボリックを貼ることはできません。

bucket名しか指定できないです。

bucket名/xxディレクトリなどは使えません。

以上です。