goofysでAWS S3を使ってみた

goofysでAWS S3(Amazon Simple Storage Service)を使ってみました。

アプリケーションからRest-API経由でS3などのオブジェクトストレージを使うだけでなく、VPSなどのサーバーからファイルストレージとしてOSからマウントして使う便利な使い方があるようです。早速試してみました。

■goofysとは

オブジェクトストレージAWS S3をファイルストレージとしてサーバーから使うにはs3fsが有名ですが、goofysというツールもあるようです。

詳しくは次のリンクを参照してください。

「goofys」

「goofysを使ってAmazon LinuxにS3をマウントする」

 

これによるとものすごく性能が良いようです。

以前、s3fsでS3を使ったときは便利ですが、それなりの性能で少しがっかりしました。

こんなに性能が良いとgoofysはいろんな用途で使えるかもしれません。

性能を確認してみました。

 

ちなみに後述しますが、次のようなソフトの連携でS3(東京リージョン)を使うことになります。

goofysでAWS-S3を使ってみた

図 goofysでAWS-S3を使ってみた

 

 

■AWS S3とは

Amazon Web Service(AWS)が提供するオブジェクトストレージサービスです。利用は原則、Rest-APIで行います。ファイルはバケットといわれるフォルダで管理され、その中にファイルを格納します。バケットへはユーザごとにアクセス権限を設定することが出来ます。

 

AWS S3管理画面

AWS S3管理画面

 

 

ちなみにですが、S3の料金体系は次の通りです。

 

S3 ストレージ料金

S3 ストレージ料金

 

S3 リクエスト料金

S3 リクエスト料金

 

S3 データ転送料金

S3 データ転送料金

 

ちょっと解りにくいですが、Restのリクエスト料金を無視し、ストレージ利用料金を要約すると東京リージョンでは次のようになります。(2017年6月9日時点)

・データ保存が1GBあたり0.025ドル/月 (1ドル110円として2.75円/

・データダウンロードが1GBあたり0.14ドル/月 (1ドル110円として15.4円/

 

AWS外へダウンロードさえしなければめっちゃ安いです。

これを活用しない手はありません!

 

 

■goofys及びツール類のインストール

大きく3つのソフトウェアをインストールする必要があります。

①Fuse

②goofys

③AWS コマンドラインツール

インストール環境はVPSクラウドの6GB-SSDタイプ、OSはCentOS7です。

 

 

①Fuseのインストール

# sudo yum install fuse

簡単にインストール出来ます。

 

 

②goofysのインストール

goofysインストール前にgoをインストールします。

go1.6系だとインストールに失敗しますので1.7系をインストールします。

 

②-1 go1.7インストール

cent7へgo1.7インストールする手順を紹介するページです。

https://www.digitalocean.com/community/tutorials/how-to-install-go-1-7-on-centos-7

要約すると次のコマンドを実行

# cd /tmp

# curl -LO https://storage.googleapis.com/golang/go1.7.linux-amd64.tar.gz

# sudo tar -C /usr/local -xvzf go1.7.linux-amd64.tar.gz

 

# mkdir -p ~/projects/{bin,pkg,src}

# sudo vi /etc/profile.d/path.sh

# export PATH=$PATH:/usr/local/go/bin

 

# vi ~/.bash_profile

# export GOBIN="$HOME/projects/bin"

# export GOPATH="$HOME/projects/src"

 

# source /etc/profile && source ~/.bash_profile

 

 

②-2 gitインストール

# yum install git

 

②-3ここからgoofysのインストール

# export GOPATH=$HOME/go

 

# go get github.com/kahing/goofys 

# go install github.com/kahing/goofys

 

goofysのインストール完了

 

 

③AWSコマンドラインツールのインストール

http://docs.aws.amazon.com/ja_jp/streams/latest/dev/kinesis-tutorial-cli-installation.html

 

# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"

# sudo python get-pip.py

 

# sudo pip install awscli

 

■環境設定

①AWSコマンドラインツールの設定

# aws configure

 

AWS Access Key ID [None]: [アクセスキーID)

AWS Secret Access Key [None]:[シークレットアクセスキー]

Default region name [None]: ap-northeast-1(東京リージョン)

Default output format [None]:(指定なし)

 

 

②マウントポイントの作成

マウントポイント作成

# mkdir ~/mount-goofys

 

マウント

# /root/projects/bin/goofys tempfile-backup-goofys ~/mount-goofys

 

S3バケットの確認

# aws s3 ls s3://tempfile-backup-goofys

 

ディレクトリ確認

# ls -al

total 9

drwxr-xr-x. 2 root root 4096 May 30 20:39 .

dr-xr-x---. 8 root root 4096 May 30 20:36 ..

-rw-r--r--. 1 root root    9 May 30 20:40 test.txt

 
# df -m | grep goofys

tempfile-backup-goofys  1073741824     0 1073741824   0% /root/mount-goofys

 

 

■書き込み試験の実施

ddコマンドで書き込んでみます。

1MBブロックを1024回書きます。1GBのファイル書き込みです。

# dd if=/dev/zero of=/root/mount-goofys/write5.tmp ibs=1M obs=1M count=1024

1024+0 records in

1024+0 records out

1073741824 bytes (1.1 GB) copied, 30.1868 s, 35.6 MB/s

[root@rancher01 ~]# dd if=/dev/zero of=/root/mount-goofys/write6.tmp ibs=1M obs=1M count=1024

1024+0 records in

1024+0 records out

1073741824 bytes (1.1 GB) copied, 26.7079 s, 40.2 MB/s

# dd if=/dev/zero of=/root/mount-goofys/write7.tmp ibs=1M obs=1M count=1024

1024+0 records in

1024+0 records out

1073741824 bytes (1.1 GB) copied, 23.7349 s, 45.2 MB/s

 

 

バケット確認

# aws s3 ls s3://tempfile-backup-goofys

 

書きこみ試験の実施

書きこみ試験の実施

6,7が書き込まれていることが確認出来ます。

 

goofysを使うとおよそ秒間で40MBのファイル書き込みが出来ることが解ります。

これはなかなかの性能で、一昔前のSATAディスクと同等の性能が出ているようです。

 

AWS S3は今までWebアプリからオブジェクトストレージとしての利用にほぼ限定されていると思っていたのですが、goofysを使ってLinuxサーバーからファイルストレージとしてマウントすると様々な用途で使えるように感じられます。

 

実際に商用サービスへ導入するには、様々な利用シーンを想定した追加検証が必要ですが、レイテンシーなど気にしなければ素晴らしく低価格で性能と使い勝手を持ち合わせたストレージとして認識して良いのではないかと思いました。

 

サービスを開発する側の立場で見ると、サービスでの活用に夢が広がってきてワクワクします。(アマゾンS3最高!)

 

ちなみにローカルディスクへの書き込みは以下の結果でした。

# dd if=/dev/zero of=/tmp/write2.tmp ibs=1M obs=1M count=1024

1024+0 records in

1024+0 records out

1073741824 bytes (1.1 GB) copied, 1.55848 s, 689 MB/s

 

VPSクラウドSSDモデル(メモリ6GB)の性能はこんな感じです。

 

 

 

 

とみなが
サービスクリエーション本部所属

オススメ記事

関連サービス

VPS VPSクラウド