8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

goofysの設定手順

Last updated at Posted at 2020-02-22

目的

EC2インスタンスをS3にマウントするソフトウェアであるGoofyの設定手順について解説します。

前提

この手順を実施する前に以下条件が整っていることを確認します。

  • EC2: Amazon Linux 2をAMIとしたEC2インスタンスが起動していること。
  • S3: EC2にアクセスができるバケットを作成し、権限が設定してあること。
  • IAM: アクセスキー&シークレットキーなどの接続情報が払い出されていること。

設定手順(一時利用)

1. 前提ソフトウェアのインストール

前提ソフトウェアである以下パッケージ一覧についてインストールします。

  • golang
    • goofyがGO実行環境で動作するため
  • Filesystem in Userspace (FUSE) :
    • Unix系コンピュータオペレーティングシステム用のソフトウェアインタフェース。goofyはこの仕組みを利用している。
  • git
    • GitHub上のgoofyをインストールする時に必要。
sudo yum install golang fuse git -y

各前提ソフトウェアのバージョンは以下の通り。

go version
go version go1.13.4 linux/amd64
git --version
git version 2.14.5
fusermount -V
fusermount version: 2.9.4

2. GOPATHを設定する

GOPATHを設定します。GOPATHとは Go言語では、環境変数GOPATHに保存されたパス(以降、単にGOPATHと呼びます)を開発時の作業ディレクトリとして扱います

export GOPATH=${HOME}/go

3. goofysをGitHubからインストール

Github上からgoofysをインストールします。

go get github.com/kahing/goofys
go install github.com/kahing/goofys

4. goofysにマウントするディレクトリを作成

goofysにマウントするディレクトリを作成します。他ユーザーからアクセスすることを想定して、root権限でしかアクセスできない階層にはマウントすディレクトリを作成しないように注意してください。 作者の設定手順のページには記載がありませんでしたが、読み書きの権限で怒られることもあるので、chmodで適切に権限を付与します(ここはオプションなので、場合に応じて設定してください)。

mkdir /home/ec2-user/mount-goofys
chmod 777 /home/ec2-user/mount-goofys

5. awsの認証情報(aws credentials)を設定

aws credentialsを直接編集しても良いですが、aws configureコマンドを使用すれば、簡単に編集できるので、今回はこちらを利用します。AMIによっては、aws cliが入っていない場合もあるので、その場合はaws cliをインストールする必要があります。aws credentialsの詳細な設定手順は、こちらをご参照願います。
なぜ、sudo aws configureも実行する必要があるかと言うと、自動マウントの設定(fstab)を利用する際に利用するためです(fstabはroot権限でしか利用できない)。作者のページにも、To mount an S3 bucket on startup, make sure the credential is configured for rootとの記述があります。sudo aws configureを実行することで、rootユーザーのaws credentialsも設定することが可能です。

aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXX
Default region name [None]: XXXXXXXXXXXXXXXXX
Default output format [None]: XXXXXXXXXXXXXXXXX

sudo aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXX
Default region name [None]: XXXXXXXXXXXXXXXXX
Default output format [None]: XXXXXXXXXXXXXXXXX

6. マウントコマンドの実行

以下コマンドを実行して、既に作成済みのbucket(bucket-XXX )に対して、ディレクトリ(/home/ec2-user/mount-goofys)をマウントします。

$GOPATH/bin/goofys bucket-XXX /home/ec2-user/mount-goofys

dfコマンドで無事マウントされていることを確認します。

df
Filesystem         1K-blocks    Used     Available Use% Mounted on
devtmpfs            16451592       0      16451592   0% /dev
tmpfs               16469640       0      16469640   0% /dev/shm
tmpfs               16469640     492      16469148   1% /run
tmpfs               16469640       0      16469640   0% /sys/fs/cgroup
/dev/xvda1           8376300 3089196       5287104  37% /
tmpfs                3293932       0       3293932   0% /run/user/1000
tmpfs                3293932       0       3293932   0% /run/user/0
bucket-XXX    1099511627776       0 1099511627776   0% /home/ec2-user/mount-goofys ←ここです。

設定手順(恒久利用)

7. fstabを編集して、再起動後もマウントされるように設定

fstabを編集することで、EC2が再起動した後も、S3にマウントするように設定します。
その前に手順6で設定したマウントをumountコマンドで解除します。

sudo umount /home/ec2-user/mount-goofys/

ここは一般的なfstabの設定と基本的には同様です。uidとgidを設定する場合は、idコマンドを利用して、それらを確認する必要があります。私の場合、該当ユーザーのuidとgidが共に1000であったため、これらの情報をfstabに設定します。

id
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal)

次に、/etc/fstabを編集します。Githubのページと上記で確認したコマンドを参考に、設定する必要があります。

sudo vim /etc/fstab 
/home/ec2-user/go/bin/goofys#bucket-XXX /home/ec2-user/mount-goofys fuse _netdev,allow_other,--dir-mode=0777,--file-mode=0777,--uid=1000,--gid=1000 0 0

mount -aすることで設定は完了です。

sudo mount -a

ここで、golangの環境変数も永続化しておきます。Githubには記載がありませんでしたけど、念のためです。

vim /home/ec2-user/.bash_profile 
export GOPATH=${HOME}/go

再起動します。

sudo reboot

ここで問題が発生します。dfコマンドでマウントしていることは確認ができたのですが、なぜか書き込みを行うことができません。。Github issueを確認すると、ftabを利用した方法だとRead-onlyとなってしまう事象が発生していることが記載してあります。どうやらレグレッションっぽいですね。

8. bash_profileで自動起動を設定

仕方なしにbash_profileに直接書き込むことで、自動起動を設定することに。これで設定完了。

vim /home/ec2-user/.bash_profile
$GOPATH/bin/goofys bucket-XXX /home/ec2-user/mount-goofys

以上です。

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?