大規模なデータセットを Cloud Storage から Filestore に転送する

Storage Transfer Service を使用して、大規模なデータセットを Cloud Storage から Filestore ファイル共有に移動します。

Storage Transfer Service を使用して Cloud Storage から Filestore インスタンスに移動するデータを示すワークフロー。Filestore インスタンスは、複数の Compute Engine インスタンスにマウントされます。

Storage Transfer Service を使用すると、データのホストが Cloud Storage、サードパーティのクラウド プロバイダ、オンプレミスのいずれであるかにかかわらず、オブジェクト ストレージ システムとファイル ストレージ システムの間で、大規模なデータセットを迅速かつ安全に転送できます。

Storage Transfer Service は、大規模なデータセットの高速転送をサポートしており、数百 TB 以上のデータを処理できます。大規模なデータセットをクラウドに移行して、Filestore インスタンスがマウントされている基盤となる Compute Engine インスタンスで利用できる分析と ML のオペレーションを活用します。

Storage Transfer Service を使用すると、Google が管理する転送を簡単に作成することや、セルフホストの転送を構成してネットワーク ルーティングや帯域幅の使用量を完全に制御することができます。

Cloud Storage バケットから Filestore ファイル共有にデータを転送する

Storage Transfer Service を使用して Cloud Storage から Filestore ファイル共有にデータを転送するには、次の作業が必要です。

  1. 環境を設定する。
  2. Filestore を構成する。
  3. Storage Transfer Service を構成する。
  4. 転送ジョブを作成して開始する。

以下のセクションでは、各作業について説明します。

環境の設定

  1. プロジェクトを選択または作成します。

    このガイドでは、転送元のリソースと転送先のリソースが同じプロジェクト内にあるようにしてください。

    Google Cloud コンソールの [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    Filestore を試し、作成したリソースをそのまま取っておかない場合は、既存のプロジェクトを選択するのではなく、プロジェクトを作成することをおすすめします。試用が済むと、プロジェクトを削除して、プロジェクトに関連するすべてのリソースを削除できます。

    プロジェクト セレクタに移動

  2. 課金を有効にします。

    Google Cloud プロジェクトの課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を確認する

  3. 次の API を有効にします。

    • Filestore API

    • Resource Manager API

    • Pub/Sub API

    • Cloud Storage API

    • Storage Transfer API

    • Cloud Logging API

    • Compute Engine API

    • Service Usage API

    • Identity and Access Management API

  4. 省略可: Google Cloud SDK の主要なコンポーネントである gcloud は、すべての Compute Engine VM にインストールされます。ローカルのコマンドラインで次のいずれかの手順を行う場合は、Google Cloud SDK を設定します。

    Google Cloud SDK をインストールして初期化します。

    すでに Google Cloud SDK をインストールしている場合は、次のコマンドを実行して、最新のバージョンがインストールされていることをご確認ください。

    gcloud components update
    
  5. サービス アカウントの作成:[このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、次のロールを割り当てます。

    • Owner

    • Project IAM Admin

    • Role Administrator

    • Pub/Sub Editor

    • Cloud Filestore Editor

    • Storage Object Admin

    • Storage Transfer Admin

    • Storage Transfer Agent

    1. 後の手順用に作成したサービス アカウントの名前をコピーして保存します。

    2. 作成したアカウントのサービス アカウント キーを作成します。このガイドでは、キーを 1 つだけ作成します。キーファイルをダウンロードして、後の手順のために保存します。

  6. ユーザー アカウントにロールを割り当てます。[IAM] ページでユーザー アカウントを探して、次のロールを割り当てます。

    • Owner

    • Project IAM Admin

    • Role Administrator

    • Storage Transfer Admin

    • Storage Admin

    詳細については、ユーザー権限をご覧ください。

Filestore を構成する

  1. Filestore インスタンスを作成するインスタンスを作成するときに、次の仕様を適用します。

    1. Cloud Storage バケット、クライアント VM、Filestore インスタンスをすべて同じリージョンに配置する

    2. [Enterprise] インスタンス タイプを選択する。

    3. 省略可: 大規模なデータセットの場合は、割り当ての引き上げをリクエストする。

    4. インスタンス名と IP アドレスをコピーして、後の手順のために保存する。

  2. Filestore インスタンスをクライアント マシンにマウントします。

    このガイドでは、NFS クライアント マシンとして 4 つの Compute Engine VM を使用する転送について説明します。4 つのクライアント マシンに代わって動作するサービス アカウントを 1 つ作成します。各クライアント マシンには、3 つの Storage Transfer Service エージェントがインストールされます。

    1. 他の Google Cloud サービスにアクセスできる Compute Engine VM インスタンスを作成します。

      1. 次の仕様で VM を構成します。

        1. ロケーションを指定するときに、Google Cloud バケット、クライアント VM、Filestore インスタンスがすべて同じリージョン内にあることを確認します。

        2. 各 Storage Transfer Service エージェントには、4 個の vCPU と 8 GB の RAM が必要です。性能を最大限に引き出すには、VM ごとに複数のエージェントを実行します。このガイドでは、e2-standard-32 Compute Engine 仮想マシン インスタンスをプロビジョニングします。

        3. [ID と API アクセス] セクションで、以下を指定します。

          1. [サービス アカウント] プルダウンで、作成したサービス アカウントを選択します。
    2. Compute Engine VM インスタンスを作成したら、SSH を使用してマシンにログインします。Compute Engine VM インスタンス ページで、作成したインスタンスを見つけて、[SSH] をクリックします。

    3. テキスト エディタ(Vim など)を使用してサービス アカウント キーファイルのコピーを作成し、VM に一時的に保存します。例: service-account-key.json

    4. VM に Docker をインストールします。

    5. gcloud は、Compute Engine VM インスタンスにすでにインストールされています。SSH コマンドラインで、次のコマンドを入力して、サービス アカウントが gcloud を使用することを承認します。

      gcloud auth activate-service-account ACCOUNT --key-file=KEY_FILE
      

      ここで

      • ACCOUNT は、作成したサービス アカウントのメールアドレスです。例: my-service-account@my-project.iam.gserviceaccount.com

      • KEY_FILE は、前にコピーしたキーファイルへの相対ローカルパスです。例: sa-key.json

    6. 引き続き SSH コマンドラインから、NFS をインストールします。

      sudo apt-get -y update && sudo apt-get install nfs-common
      
    7. Filestore ファイル共有にマッピングするローカル ディレクトリを作成します。以降の Compute Engine VM インスタンスに同じ手順を繰り返す場合は、同じ名前とパスを使用します。

      sudo mkdir -p MY_DIRECTORY
      

      ここで

      • MY_DIRECTORY は、Compute Engine VM インスタンスのローカル POSIX ディレクトリの名前です。例: /usr/local/my_dir
    8. mount コマンドを実行して、Filestore インスタンスに関連付けられたファイル共有をマウントします。任意の NFS マウント オプションを使用できます。性能を最大限に引き出すには、Compute Engine VM インスタンスでファイル共有をマウントするに記載の NFS マウントの推奨事項をご覧ください。

      sudo mount -o rw,intr IP_ADDRESS:/FILE_SHARE MY_DIRECTORY
      

      ここで

      • IP_ADDRESS は、Filestore インスタンスの IP アドレスです。これは、Filestore インスタンスのページで確認できます。

      • FILE_SHARE は、インスタンス上のファイル共有の名前です。例: my_fs_instance

      • MY_DIRECTORY は、前の手順でマッピングしたディレクトリの名前です。これは、Filestore インスタンスをマウントする Compute Engine VM インスタンスのディレクトリです。

    9. マウント ポイントを確認します。

      mount -l | grep nfs
      

      次のような結果が返されます。

      10.66.55.194:/my_fs_instance on /home/usr/my_dir type nfs (rw,relatime,vers=3,rsize=262144,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.66.55.194,mountvers=3,mountport=2050,mountproto=udp,local_lock=none,addr=10.66.55.194)
      

      次のコマンドも使用できます。

      df -h --type=nfs
      

      次のような結果が返されます。

      Filesystem                       Size  Used Avail Use% Mounted on
      10.66.55.194:/my_fs_instance  1.0T     0  1.0T   0% /home/usr/my_dir
      
    10. ローカルの POSIX ディレクトリ パスを書き留め、後の手順で使用できるように保存します。

    11. 上記の手順を繰り返して、さらに 3 つの Compute Engine VM インスタンスを作成し、各インスタンスに同じ Filestore インスタンスをマウントします。同じサービス アカウントを使用して、4 つの Compute Engine VM をすべて管理します。サービス アカウント キーのローカルコピーを各 VM に一時的に保存します。

Storage Transfer Service を構成する

  1. エージェント プールの作成

  2. Storage Transfer Service のすべての機能に対して、Google が管理するサービス アカウントを承認します。

    1. 次のコマンドを入力します。

      gcloud transfer authorize --add-missing --creds-file=KEY_FILE
      

      ここで

      • KEY_FILE は、前にコピーしたキーファイルへの相対ローカルパスです。例: sa-key.json

      Google が管理するサービス アカウントについて返された通知を記録し、関連するメールアドレスを次の手順のために保存します。

    2. 数分後、[IAM] ページに Google が管理するサービス アカウントが表示されます。伝播されたら、次のロールが割り当てられていることを確認します。

      • Pub/Sub Editor

      • Storage Admin

  3. 転送エージェントをインストールする

    各 Storage Transfer Service エージェントには、4 個の vCPU と 8 GB の RAM が必要です。

    1. フォールト トレランスを最大化し、Storage Transfer Service が提供する動的スケーリングを活用するために、エージェントは複数インストールすることをおすすめします。次の例では、クライアント マシンに 3 つのエージェントをインストールする方法を示します。SSH コマンドラインで、次のコマンドを実行します。

      gcloud transfer agents install --pool=MY_AGENT_POOL --count=3 \
      --creds-file=MY_SERVICE_ACCOUNT_KEY_FILE
      

      ここで

      • MY_AGENT_POOL は、前に作成したエージェント プールの名前です。例: my-agent-pool

      • MY_SERVICE_ACCOUNT_KEY_FILE は、サービス アカウント キーへの相対パスです。例: /relative/path/to/service-account-key.json

    2. クライアント マシンごとに上記の手順を繰り返します。

転送ジョブを作成して開始する

  1. Cloud Storage バケットから Filestore インスタンスにデータを移動する転送ジョブを作成します。前に保存したローカル POSIX ディレクトリを参照して、宛先パスを指定します。例: /home/usr/my_dir

転送ステータスをモニタリングする

Console

Google Cloud コンソールの [転送ジョブ] ページで、転送のステータスをモニタリングします。

コマンドライン

ステータスは、コマンドラインを使用してモニタリングできます。

gcloud transfer jobs monitor JOB_NAME

ここで

  • JOB_NAME は、転送ジョブの名前です。例: transferJobs/OPI6300379522015192941

レスポンスには次のように表示されます。

Polling for latest operation name...done.
Operation name: my-sts-project_transferJobs/OPI6300379522015192941_0000000001660692377
Parent job: OPI6300379522015192941
Start time: 2022-08-16T23:26:17.600981Z
SUCCESS | 100% (731.9MiB of 731.9MiB) | Skipped: 129.8kiB | Errors: 0
End time: 2022-08-16T23:27:23.429472Z

詳細については、エージェントのアクティビティのモニタリングまたはファイル システム転送の詳細をご覧ください。

次のステップ