スナップショットを作成して、ゾーン永続ディスク、またはリージョン永続ディスクからデータを定期的にバックアップします。
ディスクが実行中のインスタンスに接続されている場合でも、ディスクからスナップショットを作成できます。スナップショットはグローバル リソースであるため、スナップショットを使用して同じプロジェクト内の新しいディスクまたはインスタンスにデータを復元できます。また、プロジェクト間でスナップショットを共有することもできます。
始める前に
- このガイドのコマンドラインの例を使用する場合は、次の操作を行います。
- Google Cloud CLI の最新バージョンをインストールするか、最新バージョンに更新します。
- デフォルトのリージョンとゾーンを設定します。
- このガイドの API の例を使用する場合は、API アクセスを設定します。
スナップショット作成の準備をする
永続ディスクのスナップショットを作成する準備をするには、次の手順を行います。
スナップショットのディスクを準備するには、永続ディスク スナップショットに関するベスト プラクティスを確認してください。
スナップショット スケジュールを作成してディスクに関連付ける方法については、永続ディスクのスナップショット スケジュールの作成をご覧ください。スケジュールされたスナップショットを使用してディスクを定期的にバックアップすると、予期しないデータ損失のリスクを軽減できます。
ゾーン永続ディスクのスナップショットを作成する
コンソール
-
コンソールで [VM インスタンス] ページに移動します。
VM インスタンスに移動
残りの手順は、コンソールに自動的に表示されます。 - [名前] 列で、バックアップする永続ディスクを持つ VM の名前をクリックします。
-
ストレージ 内:- ブートディスクをバックアップするには、[ブートディスク] セクションでブートディスクの [名前] をクリックします。
- アタッチされた永続ディスクをバックアップするには、[追加ディスク] でアタッチされた永続ディスクの [名前] をクリックします。
- [
スナップショットを作成 ] をクリックします。 -
[名前] に、スナップショットの目的を識別するのに役立つ一意の名前を入力します。例:
boot-disk-snapshot
attached-persistent-disk-snapshot
-
[ロケーション] で、デフォルト値は [マルチリージョン] であり、より高いコストでより高い可用性を提供します。
より低いコストでデータの物理的な位置をより細かく制御するために、[リージョン スナップショット] を選択します。
- 手動スナップショットを作成するには、[作成] をクリックします。
gcloud
デフォルトのストレージ ロケーションまたは選択したストレージ ロケーションに、スナップショットを作成します。スナップショット名を指定する必要があります。名前は 1~63 文字で、RFC 1035 に準拠している必要があります。
デフォルトのストレージ ロケーションに永続ディスクのスナップショットを作成するには、
gcloud compute snapshots create
コマンドを使用します。gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk SOURCE_DISK \ --source-disk-zone SOURCE_DISK_ZONE
次のように置き換えます。
- SNAPSHOT_NAME: スナップショットの名前。
- SOURCE_DISK: スナップショットを作成する永続ディスクの名前。
- SOURCE_DISK_ZONE: スナップショットを作成する永続ディスクのゾーン。
カスタム ストレージ ロケーションにスナップショットを作成する場合は、
--storage-location
フラグを使用して、スナップショットの保存先を指定します。gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk SOURCE_DISK \ --source-disk-zone SOURCE_DISK_ZONE \ --storage-location STORAGE_LOCATION
次のように置き換えます。
- SNAPSHOT_NAME: スナップショットの名前。
- SOURCE_DISK: スナップショットを作成する永続ディスクの名前。
- SOURCE_DISK_ZONE: スナップショットを作成する永続ディスクのゾーン。
- STORAGE_LOCATION: スナップショットを保存する Cloud Storage マルチリージョンまたは Cloud Storage リージョンです。ストレージ ロケーションは 1 つだけ指定できます。
gcloud CLI は、このオペレーションに対して READY
または FAILED
のステータスが返されるか、最長タイムアウトに達してスナップショットの最新の既知情報が返されるまで待機します。
API
デフォルトのストレージ ロケーションまたは選択したストレージ ロケーションにスナップショットを作成します。
デフォルトのストレージ ロケーションにスナップショットを作成するには、
snapshots.insert
メソッドに対するPOST
リクエストを作成します。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: スナップショットを作成する永続ディスクの名前。
カスタム ストレージ ロケーションにスナップショットを作成する場合は、
snapshots.insert
メソッドに対するPOST
リクエストを作成して、ストレージのロケーションを指定します。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 "storageLocations": STORAGE_LOCATION }
次のように置き換えます。
- DESTINATION_PROJECT_ID: スナップショットを作成するプロジェクトの ID。
- SNAPSHOT_NAME: スナップショットの名前。
- SOURCE_PROJECT_ID: ソースディスク プロジェクトの ID。
- SOURCE_ZONE: ソースディスクのゾーン。
- SOURCE_DISK_NAME: スナップショットを作成する永続ディスクの名前。
- STORAGE_LOCATION: スナップショットを保存する Cloud Storage マルチリージョンまたは Cloud Storage リージョンです。ストレージ ロケーションは 1 つだけ指定できます。
リージョン永続ディスクのスナップショットの作成
ディスクの準備をしてから、スナップショットを作成します。リージョン永続ディスクのスナップショットを作成するときは、ディスクを配置するリージョンを指定する必要があります。
Console
- Google Cloud Console で [スナップショットの作成] ページに移動します。
[スナップショットの作成] ページに移動 - スナップショットの [名前] を入力します。
- 必要に応じて、スナップショットの [説明] を入力します。
- [ソースディスク] で、スナップショットを作成する既存のディスクを選択します。
必要であれば、カスタム ストレージ ロケーションを指定できます。
- [ロケーション] で、スナップショットをマルチリージョン ロケーションに保存するか、リージョン ロケーションに保存するかを選択します。
- 使用する特定のリージョンまたはマルチリージョンを選択します。ソースディスクに最も近いリージョンまたはマルチリージョンを使用するには、[ソースディスクのロケーションに基づく] を選択します。
[作成] をクリックしてスナップショットを作成します。
gcloud
デフォルトのストレージ ロケーションまたは選択したストレージ ロケーションにスナップショットを作成します。
デフォルトのストレージ ロケーションにリージョン永続ディスクのスナップショットを作成するには、
gcloud compute snapshots create
コマンドを使用します。gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk SOURCE_DISK \ --source-disk-region=SOURCE_DISK_REGION
次のように置き換えます。
- SNAPSHOT_NAME: スナップショットの名前。
- SOURCE_DISK: スナップショットを作成する永続ディスクの名前。
- SOURCE_DISK_REGION: スナップショットを作成するリージョン永続ディスクのリージョン。
必要であれば、カスタム ストレージ ロケーションを指定できます。
gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk SOURCE_DISK \ --source-disk-region=SOURCE_DISK_REGION --storage-location STORAGE_LOCATION
次のように置き換えます。
- SNAPSHOT_NAME: スナップショットの名前。
- SOURCE_DISK: スナップショットを作成する永続ディスクの名前。
- SOURCE_DISK_REGION: スナップショットを作成するリージョン永続ディスクのリージョン。
- STORAGE_LOCATION: スナップショットを保存する Cloud Storage マルチリージョンまたは Cloud Storage リージョンです。ストレージ ロケーションは 1 つだけ指定できます。
Google Cloud CLI は、オペレーションが
READY
またはFAILED
のステータスを返すか、最長タイムアウトに達してスナップショットの最新の既知情報が返されるまで待機します。
API
デフォルトのストレージ ロケーションにスナップショットを作成するには、
snapshots.insert
メソッドに対するPOST
リクエストを作成します。POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": SNAPSHOT_NAME "sourceDisk": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME }
次のように置き換えます。
- DESTINATION_PROJECT_ID: スナップショットを作成するプロジェクトの ID。
- SNAPSHOT_NAME: スナップショットの名前。
- SOURCE_PROJECT_ID: ソースディスク プロジェクトの ID。
- SOURCE_REGION: ソースディスクのリージョン。
- SOURCE_DISK_NAME: スナップショットを作成する永続ディスクの名前。
カスタム ストレージ ロケーションにスナップショットを作成する場合は、
snapshots.insert
メソッドに対するPOST
リクエストを作成して、ストレージのロケーションを指定します。POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": SNAPSHOT_NAME "sourceDisk": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME "storageLocations": STORAGE_LOCATION }
次のように置き換えます。
- DESTINATION_PROJECT_ID: スナップショットを作成するプロジェクトの ID。
- SNAPSHOT_NAME: スナップショットの名前。
- SOURCE_PROJECT_ID: ソースディスク プロジェクトの ID。
- SOURCE_REGION: ソースディスクのリージョン。
- SOURCE_DISK_NAME: スナップショットを作成する永続ディスクの名前。
- STORAGE_LOCATION: スナップショットを保存する Cloud Storage マルチリージョンまたは Cloud Storage リージョンです。ストレージ ロケーションは 1 つだけ指定できます。
スナップショットの削除
Compute Engine は差分スナップショットを使用しているので、各スナップショットには前回のスナップショットより後に変更されたデータのみが含まれます。後のスナップショットで前のスナップショットに保存されていた情報が必要になることがあるため、スナップショットを削除しても、そのスナップショット上のすべてのデータが削除されるとは限りません。スナップショットの削除の詳細については、スナップショットの削除をご覧ください。
スナップショットを削除するには:
Console
- Google Cloud Console で [スナップショット] ページに移動します。
- 削除するスナップショットを 1 つ以上選択します。
- [スナップショット] ページの上部の [削除] をクリックします。
gcloud
スナップショットを削除するには、gcloud compute snapshots delete
コマンドを使用します。
gcloud compute snapshots delete SNAPSHOT_NAME
SNAPSHOT_NAME は、削除対象のスナップショットの名前です。
API
compute.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
トピック フィルタに置き換えます。
たとえば、--filter="creationTimestamp>'2021-01-01'"
は 2021 年 1 月 1 日以降に作成されたすべてのスナップショットを削除します。
スナップショットの一覧取得
gcloud
特定のプロジェクトで使用可能なスナップショットの一覧を表示するには、gcloud compute snapshots list
コマンドを使用します。
gcloud compute snapshots list --project PROJECT_ID
PROJECT_ID はプロジェクト ID です。
API
特定のプロジェクトで使用可能なスナップショットの一覧を表示するには、snapshots.list
メソッドに対して GET
リクエストを作成します。
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots
PROJECT_ID はプロジェクト ID です。
スナップショットに関する情報の表示
作成時刻、サイズ、ソースディスクなど、特定のスナップショットについての情報を一覧表示するには、gcloud compute snapshots describe
コマンドを使用します。
gcloud compute snapshots describe SNAPSHOT_NAME
ここで、SNAPSHOT_NAME はスナップショットの名前です。
プロジェクト間でスナップショット データを共有する
あるプロジェクトのディスクから別のプロジェクトのディスクにデータを移動するには、次の手順に沿って操作します。
gcloud
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/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。
API
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/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。
- DISK_NAME: 新しいディスクの名前。
- SNAPSHOT_NAME: スナップショットの名前。
使用可能なスナップショットの一覧を取得するには、スナップショットの一覧表示をご覧ください。
次のステップ
- 永続ディスクのスナップショット スケジュールを作成する方法を学習する。
- スナップショットからディスク イメージを作成する方法を学習する。