S3のファイルシステムへのマウントといえばs3fsが有名ですが、もっと速いgoofysのご紹介です。
もくじ
条件
- AWS S3管理用の IAMユーザ作成済
EC2の設定を行います。
fuseのインストール
$ sudo yum install fuse
golangのインストール
$ cd /usr/local/src $ sudo wget https://redirector.gvt1.com/edgedl/go/go1.9.2.linux-amd64.tar.gz $ sudo tar -C /usr/local -xzf /usr/local/src/go1.9.2.linux-amd64.tar.gz
$ ls -laht /usr/local/go total 184K drwxr-xr-x 13 root root 4.0K Nov 2 12:21 .. drwxr-xr-x 11 root root 4.0K Oct 25 18:40 . drwxr-xr-x 2 root root 4.0K Oct 25 18:40 bin drwxr-xr-x 4 root root 4.0K Oct 25 18:40 blog drwxr-xr-x 14 root root 4.0K Oct 25 18:40 misc drwxr-xr-x 8 root root 4.0K Oct 25 18:40 pkg drwxr-xr-x 19 root root 12K Oct 25 18:40 test -rw-r--r-- 1 root root 7 Oct 25 18:34 VERSION drwxr-xr-x 46 root root 4.0K Oct 25 18:34 src drwxr-xr-x 9 root root 4.0K Oct 25 18:34 doc drwxr-xr-x 3 root root 4.0K Oct 25 18:34 lib drwxr-xr-x 2 root root 4.0K Oct 25 18:34 api -rw-r--r-- 1 root root 41K Oct 25 18:34 AUTHORS -rw-r--r-- 1 root root 1.6K Oct 25 18:34 CONTRIBUTING.md -rw-r--r-- 1 root root 55K Oct 25 18:34 CONTRIBUTORS -rw-r--r-- 1 root root 5.6K Oct 25 18:34 favicon.ico -rw-r--r-- 1 root root 1.5K Oct 25 18:34 LICENSE -rw-r--r-- 1 root root 1.3K Oct 25 18:34 PATENTS -rw-r--r-- 1 root root 1.6K Oct 25 18:34 README.md -rw-r--r-- 1 root root 26 Oct 25 18:34 robots.txt
パスの設定
$ export GOROOT=/usr/local/go $ export PATH=$PATH:$GOROOT/bin $ env | grep -i go PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin:/usr/local/go/bin:/usr/local/go/bin GOROOT=/usr/local/go GOPATH=/home/ec2-user/go
バージョンの確認を行います。
$ go version go version go1.9.2 linux/amd64
goofysのインストール
$ cd $ go get github.com/kahing/goofys $ go install github.com/kahing/goofys
S3にバケットを作ろう!
AWS CLIのアカウント設定を行います。
$ sudo aws configure AWS Access Key ID [None]: xxxxxxxxxxxxxx AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxx Default region name [None]: ap-northeast-1 ←東京リージョンね Default output format [None]: json
バケットの作成
$ sudo aws s3 mb s3://super-garlic-bucket make_bucket: super-garlic-bucket
goofysでマウントしちゃおう。
マウントポイントの作成
$ sudo mkdir -p /mnt/S3
マウント!
$ cd $ sudo ./go/bin/goofys super-garlic-bucket /mnt/S3
マウントの確認
$ sudo df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 236M 56K 236M 1% /dev tmpfs 245M 0 245M 0% /dev/shm /dev/xvda1 7.8G 1.8G 5.9G 24% / super-garlic-bucket 1.0P 0 1.0P 0% /mnt/S3
1ペタバイトが見えますね!
テストファイルを作成してみましょう。
$ sudo touch /mnt/S3/butter.txt
コマンドラインで確認します。
$ sudo aws s3 ls s3://super-garlic-bucket 2017-11-02 12:36:54 0 butter.txt
ありますね。
GUIでも確認してみましょ~!
ありますね。
自動マウントの設定
idの確認
$ id uid=500(ec2-user) gid=500(ec2-user) groups=500(ec2-user),10(wheel)
$ sudo vi /etc/fstab # LABEL=/ / ext4 defaults,noatime 1 1 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 # S3マウント /home/ec2-user/go/bin/goofys#super-garlic-bucket /mnt/S3 fuse _netdev,allow_other,--file-mode=0666,--uid=500,--gid=500 0 0
$ sudo mount -a
何も返ってこなければOK
再起動します。
# reboot now
再起動が終わったら確認しましょう。
$ sudo df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 236M 56K 236M 1% /dev tmpfs 245M 0 245M 0% /dev/shm /dev/xvda1 7.8G 1.8G 5.9G 24% / super-garlic-bucket 1.0P 0 1.0P 0% /mnt/S3
大丈夫ですね。
NFSなんかでファイルシステムが存在しない場合、nofailオプションつけないと起動でひっかかったりします。しかし、goofysは/etc/fstabでマウント予定のバケットが削除されて存在しなくても、そのまま起動してくれるので安心@^ェ^@
お疲れ様です。