LoginSignup
1
0

CLIを利用して Linode Object Storage にファイルを最速でアップロードする

Last updated at Posted at 2022-07-11

Linode Object Storageとは

image.png

Linode Object Storageは様々なリージョンで利用可能なS3互換の低価格なAkamai Cloud Computing Serviceのストレージソリューションです。
ストレージはNVMe SSDにて動作しており、HDDに比べて高いパフォーマンスと低レイテンシーなアクセスを実現することができます。
データ量は250GBから100TB(※1)まで拡張することができ、オブジェクトはリージョン内でレプリケートされており冗長性が担保されています。
インバウンド転送無料、アウトバウンド1TBまでの転送が標準の価格に含まれており、追加の転送料金は1GBあたり0.005ドルとかなり低コストなのが特徴です(※1)。
今後のアップデートではデータ量が最大1PB、オブジェクト数は最大10億に対応する予定があります。

※1 リージョンによって制限や価格が異なります、詳しくはこちらを参照ください。

Linodeにファイルをアップロードする方法

LinodeのObject Storageへのファイルアップロードの方法は、以下のようないくつかの方法がありますが、今回はこの中で、2. のCLIでのアップロードに関してどのツールが良いのか比較して検証してみました。

  1. WebブラウザからCloud Managerを利用してアップロードする
  2. Linode CLIもしくはS3互換のCLIを利用してアップロードする
  3. S3互換のAPIを利用する
  4. 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同様に行います。

image.png

コマンドを実行するコンソールでキーを環境変数に登録します。

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関連など開発者向けの記事を記載しております。

1
0
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
1
0