Linode Object Storageとは
Linode Object Storageは様々なリージョンで利用可能なS3互換の低価格なAkamai Cloud Computing Serviceのストレージソリューションです。
ストレージはNVMe SSDにて動作しており、HDDに比べて高いパフォーマンスと低レイテンシーなアクセスを実現することができます。
データ量は250GBから100TB(※1)まで拡張することができ、オブジェクトはリージョン内でレプリケートされており冗長性が担保されています。
インバウンド転送無料、アウトバウンド1TBまでの転送が標準の価格に含まれており、追加の転送料金は1GBあたり0.005ドルとかなり低コストなのが特徴です(※1)。
今後のアップデートではデータ量が最大1PB、オブジェクト数は最大10億に対応する予定があります。
- Linode Object Storage
- Enhancing Object Storage Performance
- Akamai Cloud Computing Services(Linode)とは何かをわかりやすく解説
※1 リージョンによって制限や価格が異なります、詳しくはこちらを参照ください。
Linodeにファイルをアップロードする方法
LinodeのObject Storageへのファイルアップロードの方法は、以下のようないくつかの方法がありますが、今回はこの中で、2. のCLIでのアップロードに関してどのツールが良いのか比較して検証してみました。
- WebブラウザからCloud Managerを利用してアップロードする
- Linode CLIもしくはS3互換のCLIを利用してアップロードする
- S3互換のAPIを利用する
- S3互換のクライアントツールを利用する
CLIベースでのアップロードについて比較する
Linodeが公式にリリースしているCLIとS3に対応しているオープンソースのコマンドツール3つを比較します。
Linode CLI
https://github.com/linode/linode-cli
s3cmd
https://github.com/s3tools/s3cmd
s4cmd
https://github.com/bloomreach/s4cmd
s5cmd
https://github.com/peak/s5cmd
事前準備 API Keyの発行
Object StorageのメニューからAPI Keyの発行が行えます。
このAPI KeyはS3互換のものとなり、アクセスキーの設定方法はS3同様に行います。
コマンドを実行するコンソールでキーを環境変数に登録します。
export AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXXXX
export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
export AWS_DEFAULT_REGION=us-southeast-1
Linode CLIの場合には以下の環境変数の設定が必要です。
export LINODE_CLI_OBJ_ACCESS_KEY=XXXXXXXXXXXX
export LINODE_CLI_OBJ_SECRET_KEY=XXXXXXXXXXXXXXXX
export LINODE_CLI_TOKEN=xxxxxxxxxxx
CLI アップロード速度の比較
各ツールに関しては特に設定変更は行わずにデフォルトのパラメーターで単純なアップロード時間の比較を実施しましました。
テスト1では単一ファイルのアップロード時間の比較、
テスト2では複数ファイルのアップロード時間の比較を行いました。
Object Storageのリージョンはus-southeast-1 (Atlanta)を利用しております。
送信元としては日本からのアップロードとなります。
アップロードコマンド
linode-cli
# 単一ファイルのアップロード
linode-cli obj put ddFile32.txt [bucket_name]/ --cluster us-southeast-1
# 複数ファイルのアップロード
linode-cli obj put files/* [bucket_name]/ --cluster us-southeast-1
s3cmd
# 単一ファイルのアップロード
s3cmd sync ddFile32.txt s3://[bucket_name]/
# 複数ファイルのアップロード
s3cmd sync files s3://[bucket_name]/
s4cmd
# 単一ファイルのアップロード
s4cmd sync ddFile32.txt s3://[bucket_name]/ --endpoint-url https://us-southeast-1.linodeobjects.com
# 複数ファイルのアップロード
s4cmd sync files s3://[bucket_name]/ --endpoint-url https://us-southeast-1.linodeobjects.com
s5cmd
# 単一ファイルのアップロード
s5cmd --endpoint-url https://us-southeast-1.linodeobjects.com sync ddFile32.txt s3://[bucket_name]/
# 複数ファイルのアップロード
s5cmd --endpoint-url https://us-southeast-1.linodeobjects.com sync files s3://[bucket_name]/
テスト1 - 32MBのファイルを1個転送した時間
ツール | 秒数 |
---|---|
Linode CLI | 36秒 |
s3cmd | 36秒 |
s4cmd | 37秒 |
s5cmd | 37秒 |
テスト2 - 1MBのファイル100個転送した時間
ツール | 秒数 |
---|---|
Linode CLI | 2分28秒 |
s3cmd | 1分26秒 |
s4cmd | 18秒 |
s5cmd | 14秒 |
まとめ
転送時間の結果に関しては、通信環境や地域、テスト端末によって速度が異なるため、本環境でのテストが絶対的に正しいということではなく、あくまでも参考値となります。
単一ファイルの転送では大きなは差はありませんでしたが、複数ファイルの転送ではs5cmdが一番Linode Object Storageへのアップロードの時間の短縮が行えることが確認できました。
Linode Object StorageへCLIでファイルをアップロードする際のご参考になればと思います。
関連記事
アカマイ・テクノロジーズ合同会社のQiitaではLinode関連など開発者向けの記事を記載しております。