ディスク スナップショットを作成して管理する

スナップショットを作成して、ゾーン永続ディスク、またはリージョン永続ディスクからデータを定期的にバックアップします。

ディスクが実行中のインスタンスに接続されている場合でも、ディスクからスナップショットを作成できます。スナップショットはグローバル リソースであるため、スナップショットを使用して同じプロジェクト内の新しいディスクまたはインスタンスにデータを復元できます。また、プロジェクト間でスナップショットを共有することもできます。

始める前に

スナップショット作成の準備をする

永続ディスクのスナップショットを作成する準備をするには、次の手順を行います。

ゾーン永続ディスクのスナップショットを作成する

コンソール

  1. コンソールで [VM インスタンス] ページに移動します。

    VM インスタンスに移動
    残りの手順は、コンソールに自動的に表示されます。

  2. [名前] 列で、バックアップする永続ディスクを持つ VM の名前をクリックします。
  3. ストレージ内:
    • ブートディスクをバックアップするには、[ブートディスク] セクションでブートディスクの [名前] をクリックします。
    • アタッチされた永続ディスクをバックアップするには、[追加ディスク] でアタッチされた永続ディスクの [名前] をクリックします。
  4. [スナップショットを作成] をクリックします。
  5. [名前] に、スナップショットの目的を識別するのに役立つ一意の名前を入力します。例:
    • boot-disk-snapshot
    • attached-persistent-disk-snapshot
  6. [ロケーション] で、デフォルト値は [マルチリージョン] であり、より高いコストでより高い可用性を提供します。

    より低いコストでデータの物理的な位置をより細かく制御するために、[リージョン スナップショット] を選択します。

  7. 手動スナップショットを作成するには、[作成] をクリックします。

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

  1. Google Cloud Console で [スナップショットの作成] ページに移動します。
    [スナップショットの作成] ページに移動
  2. スナップショットの [名前] を入力します。
  3. 必要に応じて、スナップショットの [説明] を入力します。
  4. [ソースディスク] で、スナップショットを作成する既存のディスクを選択します。
  5. 必要であれば、カスタム ストレージ ロケーションを指定できます。

    1. [ロケーション] で、スナップショットをマルチリージョン ロケーションに保存するか、リージョン ロケーションに保存するかを選択します。
    2. 使用する特定のリージョンまたはマルチリージョンを選択します。ソースディスクに最も近いリージョンまたはマルチリージョンを使用するには、[ソースディスクのロケーションに基づく] を選択します。
  6. [作成] をクリックしてスナップショットを作成します。

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

  1. Google Cloud Console で [スナップショット] ページに移動します。

    [スナップショット] ページに移動

  2. 削除するスナップショットを 1 つ以上選択します。
  3. [スナップショット] ページの上部の [削除] をクリックします。

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

  1. 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。
  2. 宛先プロジェクトで、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

  1. 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: ソースディスクの名前。
  2. 宛先プロジェクトで、ゾーン 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: スナップショットの名前。

使用可能なスナップショットの一覧を取得するには、スナップショットの一覧表示をご覧ください。

次のステップ