標準ディスク スナップショットを使用すると、Persistent Disk と Google Cloud Hyperdisk からデータを定期的にバックアップできます。
ディスクのスナップショットを表示、一覧表示、削除できます。また、プロジェクト間でスナップショットを共有することもできます。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- デフォルトのリージョンとゾーンを設定します。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
必要なロールと権限
標準スナップショットの管理に必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
- Compute インスタンス管理者(v1)(
roles/compute.instanceAdmin.v1
) - サービス アカウントとして実行できる VM に接続する: サービス アカウント ユーザー(v1)(
roles/iam.serviceAccountUser
)
ロールの付与の詳細については、アクセス権の管理をご覧ください。
これらの事前定義ロールには、標準スナップショットの管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
標準スナップショットを管理するには、次の権限が必要です。
-
スナップショットを一覧表示する: プロジェクトに対する
compute.snapshots.list
-
スナップショットに関する情報を表示する: スナップショットに対する
compute.snapshots.get
-
スナップショットを削除する: スナップショットに対する
compute.snapshots.delete
-
フィルタに基づいてスナップショットを削除するには:
- スナップショットに対する
compute.snapshots.delete
- プロジェクトに対する
compute.snapshots.list
- スナップショットに対する
-
プロジェクト間でスナップショット データを共有する:
-
プロジェクトに対する
compute.storageAdmin
(すべての標準スナップショットにアクセス) - 共有するプロジェクトに対する
compute.disks.create
- 移動元プロジェクトに対する
compute.snapshots.create
- ソースディスクに対する
compute.disks.createSnapshot
-
プロジェクトに対する
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
プロジェクトまたはロケーションで標準スナップショットを表示する
プロジェクトまたはロケーションの標準スナップショットを表示または一覧表示するには、gcloud CLI、Google Cloud コンソール、または REST を使用します。
コンソール
Google Cloud コンソールで、[スナップショット] ページに移動します。
[スナップショット] タブに、現在のプロジェクトの標準スナップショットが表示されます。
省略可。filter_list の [フィルタ] フィールドを使用して、結果を絞り込みます。[フィルタ] フィールドにプロパティ名または値を入力するか、使用可能なプロパティから選択します。
gcloud
特定のプロジェクトで使用可能なスナップショットの一覧を表示するには、gcloud compute snapshots list
コマンドを使用します。
gcloud compute snapshots list --project=PROJECT_ID
省略可。PROJECT_ID
をプロジェクト ID で置き換えます。
このフラグを省略すると、現在のプロジェクトが使用されます。セッションのデフォルト プロジェクトを設定するには、gcloud CLI コマンド gcloud config set project PROJECT_ID
を使用します。
REST
特定のプロジェクトで使用可能なスナップショットの一覧を表示するには、snapshots.list
メソッドに対して GET
リクエストを作成します。
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots
PROJECT_ID
をプロジェクト ID で置き換えます。
ディスクの標準スナップショットを表示する
ディスクの標準スナップショットのリストを表示するには、Google Cloud コンソール、gcloud CLI、または REST を使用します。
コンソール
Google Cloud コンソールで、[スナップショット] ページに移動します。
[スナップショット] タブに、プロジェクト内のすべての標準スナップショットが一覧表示されます。
ソースディスクで結果を絞り込みます。
filter_list の [フィルタ] フィールドに「
Source disk:
」と入力するか、[フィルタ] フィールドをクリックし、その後、値Source disk
を [プロパティ] リストから選択します。[フィルタ] フィールドの
Source disk:
の横に表示される [値] リストからディスクの名前を選択します。これで、コンソールに表示されるスナップショットに、指定したディスクのすべての標準スナップショットが表示されるようになります。
[値] リストにディスクの名前が表示されない場合は、
Source disk:
の横にある [フィルタ] フィールドにソースディスクの名前の最初の数文字を入力して、表示される値のリストを変更します
gcloud
gcloud compute snapshots list
コマンドと --filter
引数を使用して、ディスクの標準スナップショットを一覧表示します。
ゾーンディスクの標準スナップショットを一覧表示します。
gcloud compute snapshots list --filter="sourceDisk:projects/PROJECT_ID/zones/SOURCE_ZONE/disks/DISK_NAME
リージョン ディスクの標準スナップショットを一覧表示します。
gcloud compute snapshots list --filter=sourceDisk:projects/PROJECT_ID/regions/SOURCE_REGION/disks/DISK_NAME
次のように置き換えます。
PROJECT_ID
: プロジェクトの ID。SOURCE_ZONE
: (ゾーンディスクのみ)ディスクのゾーン名(例:us-west1-a
)。SOURCE_REGION
: (リージョン ディスクのみ)ディスクのリージョン名(例:us-west1
)。DISK_NAME
: ディスクの名前(例:disk-1
)。
REST
snapshots.list
メソッドに GET
リクエストを行って、ゾーンディスクまたはリージョン ディスクの標準スナップショットを一覧表示します。
filter=sourceDisk
クエリ パラメータを使用して、ディスクの名前を指定します。
ゾーンディスクの標準スナップショットを一覧表示します。
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots?filter=sourceDisk:'https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/SOURCE_ZONE/disks/DISK_NAME'
リージョン ディスクの標準スナップショットを一覧表示します。
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots?filter=sourceDisk:'https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/SOURCE_REGION/disks/DISK_NAME'
次のように置き換えます。
PROJECT_ID
: プロジェクトの ID。SOURCE_ZONE
: (ゾーンディスクのみ)ディスクのゾーン名(例:us-west1-a
)。SOURCE_REGION
: (リージョン ディスクのみ)ディスクのリージョン名(例:us-west1
)。DISK_NAME
: ソースディスクの名前(例:disk-1
)。
標準スナップショットに関する情報を表示する
Google Cloud コンソール、Google Cloud CLI、または REST を使用して、標準スナップショットに関する詳細情報(作成日時、ソースディスク、サイズなど)を取得します。
コンソール
Google Cloud コンソールで、[スナップショット] ページに移動します。
[スナップショット] タブで、プロジェクト内のスナップショットを一覧表示します。
[名前] 列で、標準スナップショットの名前をクリックします。選択したスナップショットの [スナップショットの詳細] ページが開き、そのプロパティが表示されます。
gcloud
標準スナップショットに関する情報を表示するには、gcloud compute snapshots describe
コマンドを使用します。
gcloud compute snapshots describe SNAPSHOT_NAME
SNAPSHOT_NAME
は、標準スナップショットの名前に置き換えます。
REST
snapshots.get
メソッドに GET
リクエストを送信します。
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME
次のように置き換えます。
PROJECT_ID
: 標準スナップショットを含むプロジェクトの名前。SNAPSHOT_NAME
: 標準スナップショットの名前。
スナップショットの削除
Compute Engine は差分スナップショットを使用しているので、各スナップショットには前回のスナップショットより後に変更されたデータのみが含まれます。後のスナップショットで前のスナップショットに保存されていた情報が必要になることがあるため、スナップショットを削除しても、そのスナップショット上のすべてのデータが削除されるとは限りません。
スナップショットの削除の詳細については、スナップショットの削除をご覧ください。
コンソール
Google Cloud コンソールで [スナップショット] ページに移動します。
削除するスナップショットを 1 つ以上選択します。
[スナップショット] ページの上部の [削除] をクリックします。
gcloud
スナップショットを削除するには、gcloud compute snapshots delete
コマンドを使用します。
gcloud compute snapshots delete SNAPSHOT_NAME
SNAPSHOT_NAME は、削除するスナップショットの名前に置き換えます。
Go
Java
Node.js
Python
REST
snapshots.delete
メソッドに DELETE
リクエストを発行して、スナップショットを削除します。
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME
次のように置き換えます。
- PROJECT_ID: プロジェクトの名前
- SNAPSHOT_NAME: 削除するスナップショットの名前。
フィルタに基づいて複数のスナップショットを削除する
Compute Engine は差分スナップショットを使用しているので、各スナップショットには前回のスナップショットより後に変更されたデータのみが含まれます。後のスナップショットで前のスナップショットに保存されていた情報が必要になることがあるため、スナップショットを削除しても、そのスナップショット上のすべてのデータが削除されるとは限りません。
スナップショットの削除の詳細については、スナップショットの削除をご覧ください。
特定のフィルタに基づいて複数のスナップショットを削除できます。gcloud CLI でフィルタを使用する方法の詳細については、gcloud CLI トピック フィルタをご覧ください。
スナップショットを削除するには、特定のフィルタを指定した gcloud compute snapshots list
コマンドと、xargs
を指定した gcloud compute snapshots delete
コマンドを組み合わせて使用します。
gcloud compute snapshots list --filter="EXPRESSION" --uri | xargs gcloud compute snapshots delete
EXPRESSION
は、gcloud CLI トピック フィルタに置き換えます。
たとえば、--filter="creationTimestamp<'2023-12-31'"
は、2023 年 12 月 31 日より前に作成されたすべてのスナップショットを削除します。
同じ組織内のプロジェクト間でスナップショット データを共有する
この手順を使用すると、あるプロジェクトのディスクから同じ組織内の別のプロジェクトのディスクにデータを移動できます。
gcloud
gcloud compute snapshots create
コマンドを使用して、宛先プロジェクトに標準スナップショットを作成します。たとえば、ゾーン Persistent Disk または Hyperdisk のスナップショットを作成するには、次のコマンドを使用します。gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk https://www.googleapis.com/compute/v1/projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME \ --project DESTINATION_PROJECT_ID
次のように置き換えます。
- SNAPSHOT_NAME: 新しいスナップショットの名前。
- SOURCE_PROJECT_ID: ソースディスクのプロジェクトの ID。
- ZONE: ソースディスクのゾーン。
- SOURCE_DISK_NAME: ソースディスクの名前。
- DESTINATION_PROJECT_ID: 新しいスナップショットの宛先プロジェクトの ID。
宛先プロジェクトで、
gcloud compute disks create
コマンドを使用して、スナップショットに基づいてゾーンディスクまたはリージョン ディスクを作成します。gcloud compute disks create DISK_NAME \ --source-snapshot SNAPSHOT_NAME \ --project DESTINATION_PROJECT_ID
次のように置き換えます。
- DISK_NAME: 新しいディスクの名前。
- SNAPSHOT_NAME: スナップショットの名前。
- DESTINATION_PROJECT_ID: 新しいディスクの宛先プロジェクトの ID。
REST
snapshots.insert
メソッドを呼び出して、宛先プロジェクトに標準スナップショットを作成します。たとえば、ゾーン Persistent Disk または Hyperdisk のスナップショットを作成するには、次のリクエストを行います。POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": SNAPSHOT_NAME "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME }
次のように置き換えます。
- DESTINATION_PROJECT_ID: 新しいスナップショットの宛先プロジェクトの ID。
- SNAPSHOT_NAME: スナップショットの名前。
- SOURCE_PROJECT_ID: ソースディスク プロジェクトの ID。
- SOURCE_ZONE: ソースディスクのゾーン。
- SOURCE_DISK_NAME: ソースディスクの名前。
宛先プロジェクトで、ゾーン
disks.insert
メソッドまたはリージョンregionDisks.insert
メソッドを使用して、スナップショットに基づいてゾーン ディスクまたはリージョン ディスクを作成します。たとえば、ゾーンディスクを作成するには、次のリクエストを送信します。
POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/zones/DESTINATION_ZONE/disks { "name": DISK_NAME "sourceSnapshot": SNAPSHOT_NAME }
次のように置き換えます。
- DESTINATION_PROJECT_ID: 新しいディスクの宛先プロジェクトの ID。
- DESTINATION_ZONE: 新しいディスクの宛先プロジェクトのゾーン。
- DISK_NAME: 新しいディスクの名前。
- SNAPSHOT_NAME: スナップショットの名前。
使用可能なスナップショットの一覧を取得するには、プロジェクトまたはロケーションの標準スナップショットを表示するをご覧ください。
異なる組織のプロジェクト間でスナップショットを共有する
この手順を使用すると、ある組織のプロジェクトの標準スナップショットを別の組織の別のプロジェクトと共有できます。
gcloud
ソース プロジェクトで、
gcloud compute disks create
コマンドを使用して、スナップショットに基づくディスクを作成します。gcloud compute disks create DISK_NAME \ --source-snapshot SNAPSHOT_NAME \ --project SOURCE_PROJECT_ID \ --zone ZONE
次のように置き換えます。
- DISK_NAME: 新しいディスクの名前。
- SNAPSHOT_NAME: スナップショットの名前。
- SOURCE_PROJECT_ID: ソース プロジェクトの ID。
- ZONE: 新しいディスクを作成するゾーン。
このディスクは、組織間でスナップショットをコピーするためだけに作成される一時ディスクです。
宛先プロジェクトで、
gcloud compute snapshots create
コマンドを使用してスナップショットを作成します。たとえば、最初の手順で作成したゾーンディスクを使用してスナップショットを作成するには、次のコマンドを使用します。
gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk https://www.googleapis.com/compute/v1/projects/SOURCE_PROJECT_ID/zones/ZONE/disks/DISK_NAME \ --project DESTINATION_PROJECT_ID
次のように置き換えます。
- SNAPSHOT_NAME: スナップショットの名前。
- SOURCE_PROJECT_ID: ソースディスクを含むプロジェクトの ID。
- ZONE: ソースディスクのゾーン。
- DISK_NAME: 手順 1 で作成したディスクの名前。
- DESTINATION_PROJECT_ID: 新しいスナップショットの宛先プロジェクトの ID。
使用可能なスナップショットの一覧を取得するには、プロジェクトまたはロケーションの標準スナップショットを表示するをご覧ください。
gcloud compute disks delete
コマンドを使用して、最初の手順で作成した一時ディスクを削除します。gcloud compute disks delete DISK_NAME \ --project SOURCE_PROJECT_ID --zone ZONE
次のように置き換えます。
- DISK_NAME: 手順 1 で作成したディスクの名前。
- SOURCE_PROJECT_ID: ソースディスクを含むプロジェクトの ID。
- ZONE: ディスクのゾーン
REST
ソース プロジェクトで、ゾーンの
disks.insert
メソッドを使用して、スナップショットに基づくゾーンディスクまたはリージョン ディスクを作成します。たとえば、ゾーンディスクを作成するには、次のリクエストを送信します。
POST https://compute.googleapis.com/compute/v1/projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks { "name": DISK_NAME "sourceSnapshot": SNAPSHOT_NAME }
次のように置き換えます。
- SOURCE_PROJECT_ID: 新しいディスクのソース プロジェクトの ID。
- SOURCE_ZONE: 新しいディスクのゾーン。
- DISK_NAME: 新しいディスクの名前。
- SNAPSHOT_NAME: スナップショットの名前。
このディスクは、組織間でスナップショットをコピーするためだけに作成される一時ディスクです。
snapshots.insert
メソッドを呼び出して、宛先プロジェクトにスナップショットを作成します。たとえば、最初の手順で作成したゾーンディスクを使用してスナップショットを作成するには、次のコマンドを使用します。
POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": SNAPSHOT_NAME "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/DISK_NAME }
次のように置き換えます。
- DESTINATION_PROJECT_ID: 新しいスナップショットの宛先プロジェクトの ID。
- SNAPSHOT_NAME: スナップショットの名前。
- SOURCE_PROJECT_ID: ソースディスクを含むプロジェクトの ID。
- SOURCE_ZONE: ソースディスクのゾーン。
- DISK_NAME: ソースディスクの名前。
disks.delete
メソッドを使用して、最初の手順で作成した一時ディスクを削除します。DELETE https://compute.googleapis.com/compute/v1/projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/DISK_NAME
次のように置き換えます。
- SOURCE_PROJECT_ID: 一時ディスクを含むプロジェクトの ID。
- SOURCE_ZONE: ディスクのゾーン
- DISK_NAME: 手順 1 で作成した一時ディスクの名前。
次のステップ
- ディスクのスケジュールされたスナップショットを作成する方法を学習する。
- スナップショットからディスク イメージを作成する方法を学習する。