永続ディスクのスナップショットの復元と削除

スナップショットを使用して、永続ディスクからデータをバックアップします。スナップショットを作成する方法については、永続ディスクのスナップショットを作成するをご覧ください。スナップショットを作成すると、ブート永続ディスクまたは非ブート永続ディスクを使用して、ポイントインタイム スナップショットによって保存された以前に状態に復元することができます。

スナップショット スケジュールを使ったデータのバックアップは、ワークロードを管理し、データ損失の影響を最小限に抑えるのに効果的な方法です。

特定のスナップショットが不要になったら、スナップショットを削除してストレージ コストを削減できます。

プロジェクトで使用可能なスナップショットの一覧を表示するには、gcloud compute snapshots list コマンドを使用します。

gcloud compute snapshots list

特定のスナップショットについての情報を一覧表示するには、gcloud compute snapshots describe コマンドを使用します。

gcloud compute snapshots describe [SNAPSHOT_NAME]

ここで、[SNAPSHOT_NAME] は、情報を表示したいスナップショットの名前です。

始める前に

スナップショットを使用して永続ディスクを復元する

スナップショットをブート永続ディスクまたは非ブート永続ディスクに復元します。

ブートディスク スナップショットの復元

Compute Engine コンソール、gcloud、または API を使用して、ブート永続ディスク スナップショットを復元します。

Console

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

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

  2. 復元するスナップショットの名前を探します。
  3. [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  4. ブートディスクを復元するインスタンスの名前をクリックします。
  5. [停止] をクリックして、インスタンスを停止します。インスタンスが停止するまでに数秒かかる場合があります。
  6. インスタンスが停止したら、変更を加えるためにクリックします。
  7. [VM インスタンスの詳細] ページの上部にある [編集] をクリックします。
  8. [ブートディスク] で、[X] をクリックして既存のブートディスクを切り離します。
  9. [ブートディスク] で、[項目を追加] をクリックします。
  10. [名前] プルダウン メニューで、[ディスクを作成] をクリックします。
  11. 次の構成パラメータを指定します。
    • ディスクの名前。
    • ディスクの種類。スナップショットで使用されている種類と同じものを選択する必要があります。
  12. [ソースタイプ] で、[スナップショット] をクリックします。
  13. ブートディスクに復元するスナップショットの名前を選択します。
  14. (省略可)ディスクのサイズを GB 単位で選択します。スナップショットのサイズ以上の値を指定する必要があります。指定しない場合、スナップショットと同じサイズに設定されます。
  15. [作成] をクリックしてディスクを作成します。
  16. [インスタンスの詳細] ページの下部で、[保存] をクリックして変更をインスタンスに適用し、新しいブートディスクを接続します。

gcloud

  1. gcloud compute snapshots list コマンドを使用して、復元するスナップショットの名前を確認します。

    gcloud compute snapshots list
    
  2. gcloud compute snapshots describe コマンドを使用して、復元するスナップショットのサイズを確認します。

    gcloud compute snapshots describe [SNAPSHOT_NAME]
    

    [SNAPSHOT_NAME] は、復元対象のスナップショットの名前です。

  3. gcloud compute instances stop コマンドを使用して、インスタンスを停止します。

    gcloud compute instances stop [INSTANCE_NAME] \
        --zone [INSTANCE_ZONE]
    

    ここで

    • [INSTANCE_NAME] は、停止するインスタンスの名前です。
    • [INSTANCE_ZONE] は、停止するインスタンスのゾーンです。
  4. gcloud compute instances detach-disk コマンドを使用して、インスタンスからブートディスクの接続を解除します。

    gcloud compute instances detach-disk [INSTANCE_NAME] \
        --disk [DISK_NAME]
    

    ここで

    • [INSTANCE_NAME] はインスタンスの名前です。
    • [DISK_NAME] は、ブートディスクの名前です。
  5. gcloud compute disks create コマンドを使用して、ブートディスク以外のディスクのスナップショットから、新しいゾーン永続ディスクを作成します。スループットや IOPS を上げるために SSD 永続ディスクが必要な場合は、--type フラグで pd-ssd を指定します。

    gcloud compute disks create [DISK_NAME] \
        --size [DISK_SIZE] \
        --source-snapshot [SNAPSHOT_NAME] \
        --type [DISK_TYPE]
    

    ここで

    • [DISK_NAME] は新しいディスクの名前です。
    • [DISK_SIZE] は、新しいディスクのサイズ(GB)です。スナップショットのサイズ以上の値を指定する必要があります。
    • [SNAPSHOT_NAME] は、復元対象のスナップショットの名前です。
    • [DISK_TYPE] は、永続ディスクのタイプ(pd-standard または pd-ssd のいずれか)です。
  6. gcloud compute instances attach-disk コマンドを使用して、永続ディスクをインスタンスに接続します。このディスクをブートディスクとして接続するには、--boot フラグを追加する必要があります。

    gcloud compute instances attach-disk [INSTANCE_NAME] \
        --disk [DISK_NAME] \
        --boot
    

    ここで

    • [INSTANCE_NAME] はインスタンスの名前です。
    • [DISK_NAME] は、スナップショットから作成されたディスクの名前です。

API

スナップショットを使用して、ブート永続ディスクを復元します。

  1. snapshots.list への GET リクエストを作成して、プロジェクト内のスナップショットを一覧表示します。

    GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/snapshots
    

    ここで、[PROJECT_ID] はプロジェクト ID です。

  2. instances.stop への POST リクエストを作成して、VM インスタンスを停止します。

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/stop
    

    ここで

    • [PROJECT_ID] はプロジェクト ID です。
    • [ZONE] はインスタンスが配置されているゾーンです。
    • [INSTANCE_NAME] はインスタンスの名前です。
  3. instances.detachDisk への POST リクエストを作成して、VM インスタンスからブートディスクの接続を解除します。

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/detachDisk/[DISK_NAME]
    

    ここで

    • [PROJECT_ID] はプロジェクト ID です。
    • [ZONE] はインスタンスが配置されているゾーンです。
    • [INSTANCE_NAME] はインスタンスの名前です。
    • [DISK_NAME] はブートディスクの名前です。
  4. disks.insert メソッドを使用する POST リクエストを作成して、ゾーン永続ディスクを作成します。namesizeGbtype のプロパティを含めます。スナップショットを使用してディスクを復元するには、sourceSnapshot プロパティを含める必要があります。

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/disks
    
    {
     "name": "[DISK_NAME]",
     "sizeGb": "[DISK_SIZE]",
     "type": "zones/[ZONE]/diskTypes/[DISK_TYPE]"
     "sourceSnapshot": "[SNAPSHOT_NAME]"
    }
    

    ここで

    • [PROJECT_ID] はプロジェクト ID です。
    • [ZONE] はインスタンスと新しいディスクが配置されるゾーンです。
    • [DISK_NAME] は新しいディスクの名前です。
    • [DISK_SIZE] は新しいディスクのサイズ(GB)です。
    • [DISK_TYPE] は永続ディスクの種類です。pd-standard または pd-ssd を指定します。
    • [SNAPSHOT_NAME] は復元するディスクのソース スナップショットです。
  5. instances.attachDisk メソッドに対する POST リクエストを作成し、先ほど作成したゾーン永続ディスクへの URL をリクエスト本文に含めます。ブートディスクなので、boot パラメータを true に設定します。

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/attachDisk
    
    {
     "boot": true,
     "source": "/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/disks/[DISK_NAME]
    }
    

    ここで

    • [PROJECT_ID] はプロジェクト ID です。
    • [ZONE] はインスタンスと新しいディスクが配置されるゾーンです。
    • [INSTANCE_NAME] は新しい永続ディスクを追加するインスタンスの名前です。
    • [DISK_NAME] は新しいディスクの名前です。
    • boot: true

新しいディスクを作成してインスタンスに接続したら、ディスクをフォーマットしてマウントする必要があります。こうすることで、オペレーティング システムが保存容量を使用できるようになります。

あるいは、ブート永続ディスクのスナップショットを使用して、新しい VM インスタンスを作成することもできます。詳しくは、スナップショットからのインスタンスの作成をご覧ください。

ブートディスク以外のディスク スナップショットの復元

ブートディスク以外の永続ディスクのスナップショットは元のスナップショットより大きいサイズの永続ディスクに復元できますが、拡張した容量を認識させるにはインスタンス内で複数のコマンドを実行する必要があります。

オペレーティング システムおよびファイル システムの種類によっては、異なるファイル システム サイズ変更ツールの使用が必要になることがあります。詳細については、オペレーティング システムのドキュメントをご覧ください。

ブートディスク以外の永続ディスクのスナップショットを復元するには:

Console

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

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

  2. 復元するスナップショットの名前を探します。
  3. [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  4. ブートディスク以外のディスクを復元する先となるインスタンスの名前をクリックします。
  5. インスタンス詳細ページの一番上で [編集] をクリックします。
  6. [追加ディスク] の下で [項目を追加] をクリックします。
  7. [名前] プルダウン メニューで、[ディスクを作成] をクリックします。
  8. 次の構成パラメータを指定します。
    • ディスクの名前。
    • ディスクの種類。スナップショットで使用されている種類と同じものを選択する必要があります。
  9. [ソースタイプ] で、[スナップショット] をクリックします。
  10. 復元するスナップショットの名前を選択します。
  11. (省略可)ディスクのサイズを GB 単位で選択します。スナップショットのサイズ以上の値を指定する必要があります。指定しない場合、スナップショットと同じサイズに設定されます。
  12. [作成] をクリックしてディスクを作成します。
  13. インスタンス詳細ページの一番下で [保存] をクリックし、変更内容をインスタンスに適用して新しいディスクを接続します。

gcloud

  1. gcloud compute snapshots list コマンドを使用して、復元するスナップショットの名前を確認します。

    gcloud compute snapshots list
    
  2. gcloud compute snapshots describe コマンドを使用して、復元するスナップショットのサイズを確認します。

    gcloud compute snapshots describe [SNAPSHOT_NAME]
    

    [SNAPSHOT_NAME] は、復元対象のスナップショットの名前です。

  3. gcloud compute disks create コマンドを使用して、ブートディスク以外のディスクのスナップショットから、新しいリージョン永続ディスクまたはゾーン永続ディスクを作成します。スループットや IOPS を上げるために SSD 永続ディスクが必要な場合は、--type フラグで pd-ssd を指定します。

    gcloud compute disks create [DISK_NAME] \
        --size [DISK_SIZE] \
        --source-snapshot [SNAPSHOT_NAME] \
        --type [DISK_TYPE]
    

    ここで

    • [DISK_NAME] は新しいディスクの名前です。
    • [DISK_SIZE] は、新しいディスクのサイズ(GB)です。スナップショットのサイズ以上の値を指定する必要があります。
    • [SNAPSHOT_NAME] は、復元対象のスナップショットの名前です。
    • [DISK_TYPE] は、永続ディスクのタイプ(pd-standard または pd-ssd のいずれか)です。
  4. gcloud compute instances attach-disk コマンドを使用して、永続ディスクをインスタンスに接続します。

    gcloud compute instances attach-disk [INSTANCE_NAME] \
        --disk [DISK_NAME]
    

    ここで

    • [INSTANCE_NAME] はインスタンスの名前です。
    • [DISK_NAME] は、スナップショットから作成されたディスクの名前です。

API

スナップショットを使用して、非ブート永続ディスクを復元します。

  1. snapshots.list への GET リクエストを作成して、プロジェクト内のスナップショットを一覧表示します。

    GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/snapshots
    

    ここで、[PROJECT_ID] はプロジェクト ID です。

  2. disks.insert メソッドを使用する POST リクエストを作成して、ゾーン永続ディスクを作成します。namesizeGbtype のプロパティを含めます。スナップショットを使用してディスクを復元するには、sourceSnapshot プロパティを含める必要があります。

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/disks
    
    {
     "name": "[DISK_NAME]",
     "sizeGb": "[DISK_SIZE]",
     "type": "zones/[ZONE]/diskTypes/[DISK_TYPE]"
     "sourceSnapshot": "[SNAPSHOT_NAME]"
    }
    

    ここで

    • [PROJECT_ID] はプロジェクト ID です。
    • [ZONE] はインスタンスと新しいディスクが配置されるゾーンです。
    • [DISK_NAME] は新しいディスクの名前です。
    • [DISK_SIZE] は新しいディスクのサイズ(GB)です。
    • [DISK_TYPE] は永続ディスクの種類です。pd-standard または pd-ssd を指定します。
    • [SNAPSHOT_NAME] は復元するディスクのソース スナップショットです。
  3. instances.attachDisk メソッドに対する POST リクエストを作成し、先ほど作成したゾーン永続ディスクへの URL をリクエスト本文に含めます。

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/attachDisk
    
    {
     "source": "/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/disks/[DISK_NAME]"
    }
    

    ここで

    • [PROJECT_ID] はプロジェクト ID です。
    • [ZONE] はインスタンスと新しいディスクが配置されるゾーンです。
    • [INSTANCE_NAME] は新しい永続ディスクを追加するインスタンスの名前です。
    • [DISK_NAME] は新しいディスクの名前です。

新しいディスクを作成してインスタンスに接続したら、ディスクをフォーマットしてマウントする必要があります。こうすることで、オペレーティング システムが保存容量を使用できるようになります。

ディスクがスナップショットのサイズより大きい場合、拡張したディスク容量を認識させるには、その永続ディスクでファイル システムのサイズを変更する必要があります。

これで、インスタンスを使用して復元されたデータにアクセスし、拡張した永続ディスク容量を使用して新しいデータを保存できるようになります。

スナップショットを削除する

Compute Engine は増分スナップショットを使用しているので、各スナップショットには前回のスナップショットより後に変更されたデータのみが含まれます。変更されていないデータについては、スナップショットは以前のスナップショットのデータを参照します。 永続ディスクのスナップショットのストレージ コストは、スナップショットの合計サイズに対してのみ請求されます。

スナップショットを削除すると、Compute Engine は直ちにシステム内でスナップショットを DELETED とマークします。依存スナップショットを持たないスナップショットは、無条件に削除されます。一方、依存スナップショットがあるスナップショットは、次のように処理されます。

  1. 他のスナップショットの復元に必要なすべてのデータが、次のスナップショットに移動され、移動先のスナップショットのサイズが増えます。
  2. 他のスナップショットの復元に必要ないデータはすべて削除されます。これにより、すべてのスナップショットの合計サイズは減ります。
  3. 次のスナップショットは、削除としてマークされたスナップショットを参照しなくなり、それより前のスナップショットを参照します。

後のスナップショットで前のスナップショットに保存されていた情報が必要になることがあるため、スナップショットを削除しても、そのスナップショット上のすべてのデータが削除されるとは限りません。削除するようにマークされたスナップショットのデータが後続のスナップショットの復元に必要な場合、そのデータは対応する次のスナップショットに移動されます。スナップショットからデータを完全に削除するには、すべてのスナップショットを削除する必要があります。

ディスクにスナップショット スケジュールが設定されている場合は、スケジュールを削除する前に、ディスクからスナップショット スケジュールを削除する必要があります。ディスクからスナップショット スケジュールを削除すると、それ以上スナップショット アクティビティが発生しなくなります。ディスクに関連付けられているスケジュールを削除することはできません。スナップショットはいつでも手動で削除できます。

次に示す図は、上で説明したプロセスを表したものです。

スナップショットの削除プロセスを説明する図

スナップショットを削除するには:

Console

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

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

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

gcloud

スナップショットを削除するには、gcloud compute snapshots delete コマンドを使用します。

gcloud compute snapshots delete [SNAPSHOT_NAME]

[SNAPSHOT_NAME] は、削除対象のスナップショットの名前です。

API

compute.snapshots.delete に対して DELETE リクエストを行い、スナップショットを削除します。

DELETE https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/snapshots/[SNAPSHOT_NAME]

ここで

  • [PROJECT_ID] はプロジェクトの名前です。
  • [SNAPSHOT_NAME] は削除するスナップショットの名前です。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント