Help us understand the problem. What is going on with this article?

Goofysを使ってAmazon S3バケットをファイルシステムにマウントする

What's?

Amazon S3をファイルシステムとしてマウントできたらなぁと思って少し調べたら、s3fsというのが有名だということがわかりまして。

なんですけど、手元の環境ではs3fsでは上手くいかなかったので、Goofysに変えてみたところうまくいったので、こちらで試してみました。

Goofys

Goofys

Goofysは、Amazon S3バケットをファイルシステムとしてマウントできるソフトウェアです。Goで実装されています。

s3fsよりもパフォーマンスが良いことが売りなようですが、s3fsの紹介を読むと代わりにPOSIX互換性は落ちるようです。

goofys - similar to s3fs but has better performance and less POSIX compatibility

s3fs / Reference

環境

今回の環境は、こちらです。

$ cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)


$ uname -srvmpio
Linux 3.10.0-1127.10.1.el7.x86_64 #1 SMP Wed Jun 3 14:28:03 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

CentOS 7ですね。

Goofysをインストールする

Goofysの手順に従って、インストールします。

Installation

Linuxの場合はビルド済みのバイナリがあるので、こちらをダウンロードします。/usr/loca/binに配置しましょう。

$ sudo curl -L https://github.com/kahing/goofys/releases/latest/download/goofys -o /usr/local/bin/goofys
$ sudo chmod a+x /usr/local/bin/goofys

バージョンを確認。

$ goofys --version
goofys version 0.24.0-45b8d78375af1b24604439d2e60c567654bcdf88

S3バケットを用意する

マウント対象となるS3バケットを用意します。

$ aws s3api create-bucket --bucket charon-test-bucket --create-bucket-configuration LocationConstraint=ap-northeast-1

ファイルも置いておきましょう。

$ echo 'Hello S3!!' | aws s3 cp - s3://charon-test-bucket/hello.txt
$ echo 'Hello S3!! in sub dir' | aws s3 cp - s3://charon-test-bucket/dir/hello.txt

確認。

$ aws s3 cp s3://charon-test-bucket/hello.txt - 
Hello S3!!

$ aws s3 cp s3://charon-test-bucket/dir/hello.txt - 
Hello S3!! in sub dir

これで、準備はOKです。

S3バケットをファイルシステムとしてマウントする

では、作成したS3バケットをファイルシステムとしてマウントしてみましょう。

Usage

AWSのクレデンシャルは、今回は環境変数で設定しました。

export AWS_ACCESS_KEY_ID=xxxxx
export AWS_SECRET_ACCESS_KEY=xxxxx
export AWS_DEFAULT_REGION=ap-northeast-1

マウント先のディレクトリを作成。

$ mkdir $HOME/charon-test-bucket

マウント。

$ goofys charon-test-bucket $HOME/charon-test-bucket

すごく、あっさりとマウントできました。

$ df -h
Filesystem          Size  Used Avail Use% Mounted on
devtmpfs            912M     0  912M   0% /dev
tmpfs               919M     0  919M   0% /dev/shm
tmpfs               919M  8.5M  911M   1% /run
tmpfs               919M     0  919M   0% /sys/fs/cgroup
/dev/vda1            40G  3.2G   37G   8% /
tmpfs               184M     0  184M   0% /run/user/1000
charon-test-bucket  1.0P     0  1.0P   0% $HOME/charon-test-bucket

lsで見てみます。

$ ls -l charon-test-bucket 
total 5
drwxr-xr-x. 2 xxxxx xxxxx 4096 Jun 20 13:00 dir
-rw-r--r--. 1 xxxxx xxxxx   11 Jun 20 11:48 hello.txt

ディレクトリ内に入って、ファイルを見てみましょう。

$ cd charon-test-bucket 


$ cat hello.txt 
Hello S3!!


$ cat dir/hello.txt  
Hello S3!! in sub dir

OKですね。

ファイルやディレクトリも作成してみましょう。

$ echo 'Hello Goofys!!' > test.txt
$ mkdir dir2
$ echo 'Hello Goofys!! in sub dir' > dir2/test.txt

AWS CLIで確認。

$ aws s3 cp s3://charon-test-bucket/test.txt - 
Hello Goofys!!
$ aws s3 cp s3://charon-test-bucket/dir2/test.txt - 
Hello Goofys!! in sub dir

なお、バージョニングを有効にしている場合はファイルを更新するとバージョンが更新されますし、rmしても削除マークのついたバージョンが増えるという挙動になるのはAWS CLIなどを使った場合と変わりません。

アンマウントする

マウントしたS3バケットをアンマウントするには、fusermountで。

$ fusermount -u $HOME/charon-test-bucket
charon
"CROSS THE RUBICON”
https://github.com/charon-r13b
tis
創業40年超のSIerです。
https://www.tis.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした