Storage Transfer Service を使用して、大規模なデータセットを Cloud Storage から Filestore ファイル共有に移動します。
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 ファイル共有にデータを転送するには、次の作業が必要です。
- 環境を設定する。
- Filestore を構成する。
- Storage Transfer Service を構成する。
- 転送ジョブを作成して開始する。
以下のセクションでは、各作業について説明します。
環境の設定
プロジェクトを選択または作成します。
このガイドでは、転送元のリソースと転送先のリソースが同じプロジェクト内にあるようにしてください。
Google Cloud コンソールの [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
Filestore を試し、作成したリソースをそのまま取っておかない場合は、既存のプロジェクトを選択するのではなく、プロジェクトを作成することをおすすめします。試用が済むと、プロジェクトを削除して、プロジェクトに関連するすべてのリソースを削除できます。
課金を有効にします。
Google Cloud プロジェクトの課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を確認する。
-
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
省略可: Google Cloud SDK の主要コンポーネントである
gcloud
が、すべての Compute Engine VM にインストールされます。ローカルのコマンドラインで次のいずれかの手順を行う場合は、Google Cloud SDK を設定します。Google Cloud SDK をインストールして初期化します。
以前に Google Cloud SDK をインストールしている場合は、次のコマンドを実行して、最新バージョンを使用していることを確認してください。
gcloud components update
サービス アカウントの作成:[このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、次のロールを割り当てます。
Owner
Project IAM Admin
Role Administrator
Pub/Sub Editor
Cloud Filestore Editor
Storage Object Admin
Storage Transfer Admin
Storage Transfer Agent
後の手順で使用するため、作成したサービス アカウントの名前をコピーして保存します。
作成したアカウントのサービス アカウント キーを作成します。このガイドでは、キーを 1 つだけ作成します。鍵ファイルをダウンロードして、後の手順のために保存しておきます。
ユーザー アカウントにロールを割り当てます。[IAM] ページでユーザー アカウントを探して、次のロールを割り当てます。
Owner
Project IAM Admin
Role Administrator
Storage Transfer Admin
Storage Admin
詳細については、ユーザー権限をご覧ください。
Filestore を構成する
Filestore インスタンスを作成するインスタンスを作成するときに、次の仕様を適用します。
Cloud Storage バケット、クライアント VM、Filestore インスタンスをすべて同じリージョンに配置する。
省略可: 大規模なデータセットの場合は、割り当ての引き上げをリクエストする。
インスタンス名と IP アドレスをコピーして、後の手順のために保存する。
Filestore インスタンスをクライアント マシンにマウントします。
このガイドでは、4 つの Compute Engine VM を NFS クライアント マシンとして使用する転送について説明します。4 つのクライアント マシンに代わって動作するサービス アカウントを 1 つ作成します。各クライアント マシンには、3 つの Storage Transfer Service エージェントがインストールされます。
他の Google Cloud サービスにアクセスできる Compute Engine VM インスタンスを作成します。
次の仕様でVM を構成します。
ロケーションを指定するときに、Google Cloud バケット、クライアント VM、Filestore インスタンスがすべて同じリージョン内にあることを確認します。
各 Storage Transfer Service エージェントには、4 個の vCPU と 8 GB の RAM が必要です。性能を最大限に引き出すには、VM ごとに複数のエージェントを実行します。このガイドでは、
e2-standard-32
Compute Engine 仮想マシン インスタンスをプロビジョニングします。[ID と API へのアクセス] セクションで、次の情報を指定します。
- [サービス アカウント] プルダウンで、作成したサービス アカウントを選択します。
Compute Engine VM インスタンスが作成されたら、SSH を使用してマシンにログインします。Compute Engine VM インスタンスのページで、作成したインスタンスを見つけて [SSH] をクリックします。
テキスト エディタ(Vim など)を使用してサービス アカウント キーファイルのコピーを作成し、VM に一時的に保存します。例:
service-account-key.json
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
引き続き SSH コマンドラインから、NFS をインストールします。
sudo apt-get -y update && sudo apt-get install nfs-common
Filestore ファイル共有にマッピングするローカル ディレクトリを作成します。後続の Compute Engine VM インスタンスにこれらの手順を繰り返す場合は、同じ名前とパスを使用します。
sudo mkdir -p MY_DIRECTORY
ここで
- MY_DIRECTORY は、Compute Engine VM インスタンスのローカル POSIX ディレクトリの名前です。例:
/usr/local/my_dir
- MY_DIRECTORY は、Compute Engine VM インスタンスのローカル POSIX ディレクトリの名前です。例:
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 インスタンス上のディレクトリです。
マウント ポイントを確認します。
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
ローカルの POSIX ディレクトリ パスを書き留め、後の手順で使用できるように保存します。
上記の手順を繰り返して、さらに 3 つの Compute Engine VM インスタンスを作成し、同じ Filestore インスタンスをそれぞれマウントします。同じサービス アカウントを使用して、4 つの Compute Engine VM をすべて管理します。サービス アカウント キーのローカルコピーを一時的に各 VM に保存します。
Storage Transfer Service を構成する
Storage Transfer Service のすべての機能に対してサービス エージェントを承認します。
次のコマンドを入力します。
gcloud transfer authorize --add-missing --creds-file=KEY_FILE
ここで
- KEY_FILE は、前にコピーしたキーファイルへの相対ローカルパスです。例:
sa-key.json
サービス エージェントに関して返された通知をメモし、関連するメールアドレスを次の手順に備えて保存します。
- KEY_FILE は、前にコピーしたキーファイルへの相対ローカルパスです。例:
数分後、[IAM] ページにサービス エージェントが表示されます。伝播されたら、次のロールが割り当てられていることを確認します。
Pub/Sub Editor
Storage Admin
転送エージェントをインストールする
各 Storage Transfer Service エージェントに、4 個の vCPU と 8 GB の RAM が必要です。
フォールト トレランスを最大化し、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
クライアント マシンごとにこの手順を繰り返します。
転送ジョブを作成して開始する
- 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
詳細については、エージェントのアクティビティをモニタリングするまたはファイル システム転送の詳細をご覧ください。