COSBenchでAmazon S3とCloudn Object Storageのベンチマーク
COSBenchというオブジェクトストレージのベンチマークツールを使ってみました。
COSBenchのしくみと実行手順
COSBenchのしくみと実行手順については、AWS荒木さんによる記事がとてもわかりやすくまとまっているので、そちらを参照していただくとよいでしょう。
・オブジェクトストレージのベンチマークツール、COSBench
http://awssa.blogspot.jp/2013/12/cosbench.html
ひとつ注意することとしては、COSBenchはバケットの作成・削除を行いますので、「バケット作成」権限をもつユーザーのアクセスキーID、シークレットアクセスキーが必要です。
AWSであれば、IAMで一時的に、S3にフルアクセスできる権限をもつユーザーを作成するとよいでしょう。
Amazon S3のベンチマークテスト
・Amazon S3
https://aws.amazon.com/jp/s3/
AWSのTokyoリージョンのEC2サーバーから、同じくTokyoリージョンのS3に対して負荷テストを行います。
S3アクセスのクライアントとなるDriver(とController)はEC2 t2.microインスタンスを使用し、AMIは ubuntu-precise-12.04-amd64-server-20140428 を指定しました。
(COSBenchはubuntu12.03 LTSがメインサポートとのこと。)
負荷を定義するワークロードファイルは、S3用サンプルの conf/s3-config-sample.xml をアクセス情報だけ変更して使用しました。
ファイルサイズ64KB、Read 80%/Write 20%の負荷テストとなります。
AWSのendpointは、以下で公開されています。
テストを行いたいリージョンのendpointを指定します。
・AWS Documentation, Regions and Endpoints
http://docs.aws.amazon.com/general/latest/gr/rande.html
-- conf/s3-config-sample.xml 変更前 <storage type="s3" config="accesskey=<accesskey>;secretkey=<scretkey>;proxyhost=<proxyhost>;proxyport=<proxyport>;endpoint=<endpoint>" /> -- -- conf/s3-config-sample.xml 変更後 <storage type="s3" config="accesskey=<accesskey>;secretkey=<scretkey>;endpoint=s3-ap-northeast-1.amazonaws.com" /> --
また、cprefixで、テストで作成するバケット名のプレフィクスとして、S3全体でユニークとなるような名前を指定します。
初期状態では、いくつかの箇所で cprefix=s3testqwer が指定されているので、ひとつずつ編集するか、sedコマンドやエディターの機能などで一括変換します。
テスト結果は以下のようになりました。
Cloudn Object Storageのベンチマークテスト
Amazon S3に続いて、Cloudn Object Storageでも負荷テストを行ってみました。
・Cloudn Object Storage
http://www.ntt.com/business/services/cloud/iaas/cloudn/storage.html
Cloudnの仮想サーバーCompute(FLATタイプ)東日本リージョンのサーバーから、東日本リージョンのCloudn Object Storageに対して負荷テストを行います。
ControllerとDriverは、Compute m1.smallインスタンスにインストールし、OSテンプレートは Ubuntu Server 14.04 64bit を指定しました。
負荷を定義するワークロードファイルは、Amazon S3のときと同様に、S3用サンプルの conf/s3-config-sample.xml をアクセス情報だけ変更して使用しました。
endpointは、APIのマニュアルに記載されているとおり、str.cloudn-service.com です。
・Cloudn Object Storage APIマニュアル (PDF)
http://info.cloudn-service.com/wordpress/wp-content/uploads/documents/JP/ejp/objectstorage_common_api_manual.pdf
-- conf/s3-config-sample.xml 変更前 <storage type="s3" config="accesskey=<accesskey>;secretkey=<scretkey>;proxyhost=<proxyhost>;proxyport=<proxyport>;endpoint=<endpoint>" /> -- -- conf/s3-config-sample.xml 変更後 <storage type="s3" config="accesskey=<accesskey>;secretkey=<scretkey>;endpoint=str.cloudn-service.com" /> --
また、cprefixで、テストで作成するバケット名のプレフィクスとして、Cloudn Object Storage全体でユニークとなるような名前を指定します。
テスト結果は以下のようになりました。
スループット、帯域幅、レイテンシーなどは、Amazon S3比べて大差ない値となりました。
まとめ
オブジェクトストレージのベンチマークツールCOSBenchを使用して、Amazon S3とCloudn Object Storageのベンチマークテストを行ってみました。
他のオブジェクトストレージサービスについては、「さくらのBASE Storage」はAPIではバケットの作成ができないため、「IDCフロンティアのオブジェクトストレージ」は、現時点ではカード決済ではサービスが利用できないため、テストを行っていません。
今回は、オブジェクトストレージサービスの事業者が提供するサーバーをクライアントと見立ててテストを行いましたが、実運用のための検証を行う場合は、AWS荒木さんの記事でも書かれているとおり、実運用に近い環境、設定でテストを行ってみるとよいと思います。
例えば、「社内から平均1MB程度の画像データを共有するためにオブジェクトストレージを利用する。読み書きの比率は同じぐらい。」ということであれば、下記のようにすると運用に近い性能が確認できるでしょう。
- Controller& Driver: 社内ネットワーク上のUbuntu
- ファイルサイズ: 1MB
- Read/Write比率: 50%/50%