コンテンツに移動
ストレージとデータ転送

gcloud コマンドラインを使用した Cloud Storage の転送速度の向上

2021年8月2日
https://storage.googleapis.com/gweb-cloudblog-publish/images/Google_Storage_Data_Transfer_04_.max-2600x2600.jpg
Google Cloud Japan Team

※この投稿は米国時間 2021 年 7 月 21 日に、Google Cloud blog に投稿されたものの抄訳です。

驚くべきことに、ビジネス上の多くの問題は、いかに早くバケットを満たせるか(データを転送できるか)というところに行き着きます。特にそのバケットが Cloud Storage にあり、それを Compute Engine インスタンスからのデータで満たす場合はなおさらです。大量のデータを迅速に移行できる Storage Transfer Service のようなサービスもありますが、小規模な移行にはより戦術的なソリューションを必要とすることがあるため、gsutil cp は高い人気を誇っています。転送を分割して並行して実行することで、gsutil cp はかなり高速になります。

しかし、gsutil の転送を高速化するにあたり、微調整が必要な場合もあります。たとえば、単一の大きなファイルの転送に gsutil を使用している場合、パフォーマンスを最大限に引き出すには、デフォルトの設定を変更しなくてはなりません。

そこでこのたび、Cloud SDK の一連の Cloud Storage コマンドに gcloud storage を新しく追加いたしました。このコマンドは、デフォルトで高速に動作するように設計されています。

gcloud storage の仕組み

これまでの gsutil と同様に gcloud storage も大きなファイルを細かく分割するため、利用可能な帯域幅を最大限に活用して転送できます。gcloud storage の新機能に、タスク管理をグラフ問題として扱い、各作業単位をノード、各依存関係をエッジとして扱う並列化戦略があります。この戦略により、より多くの作業を圧倒的に低いオーバーヘッドで並行して行うことができます。

内部的には、gcloud storage は、整合性チェックを高速化する新しいハッシュ ライブラリを使用しています。また、ワークロードやローカルマシンのサイズに応じて独自の設定を調整し、パフォーマンスを最適化することもできます。

速度の測定

以下の環境で、gcloud storage のパフォーマンスを測定しました。

  • us-east4 - VM とバケットのリージョン

  • n2d-standard-16(8 個の vCPU、32 GB のメモリ)

  • RAID0 に 1 個の 375GB NVME を使用

サイズが 100 MB のファイルを 100 個転送した場合、gcloud storagegsutil よりもダウンロードで 79%、アップロードで 33% 高速でした。どちらもファイルを分割して個別のファイルとしてアップロードし、その後で 1 つのファイルに再結合する複合アップロード戦略を採用しています。

1 つの大きなファイルを転送する場合、その違いはさらに顕著です。10 GB のファイルでは、gcloud storagegsutil よりもダウンロードで 94%、アップロードで 57% 高速でした。広範なテストや調整を必要とせずにこれだけパフォーマンスが向上するということは、転送時間が大幅に短縮されたことを明らかに示しています。

使ってみる

Cloud SDK を最新バージョンに更新すると、次のコマンドを実行して gcloud storage を試すことができます。

gcloud alpha storage ls gs://pub

gcloud alpha storage cp -r gs://pub/shakespeare/ .

gcloud storage は現時点で、以下の機能をサポートしています。これらの機能は、gsutil でも現在使用されています。

  • 再帰的なアップロード / ダウンロード

  • S3 サポート

  • 複合アップロード

  • スライス化によるダウンロード

  • 再開可能なアップロード / ダウンロード

  • オブジェクト / バケットの一覧表示

  • オブジェクト / バケットの削除

gcloud storageプレビュー版であることにご注意ください。Cloud Storage の機能を最大限に反映するために、今後さらに機能を追加していく予定です。それまでの間、バケットへのより高速化されたデータ転送をご活用ください。


謝辞: これを実現してくれた Google Cloud エンジニア チームの Nick Hartunian、テクニカル リーダー Dilip Pednekar、Ross Rauber に感謝します。

-Cloud Storage エンジニアリング マネージャー Thomas MacLean

投稿先