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

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

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

新しいディスクは、スナップショットからでもイメージからでも作成できます。マネージド インスタンス グループ(MIG)を作成する場合や、新しいインスタンス用に多数の同種のブートディスクを作成する場合は、イメージの方が役立ちます。永続ディスクのバックアップと復元には、スナップショットの方が役立ちます。

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

始める前に

スナップショットを一覧表示する

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

gcloud compute snapshots list

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

gcloud compute snapshots describe [SNAPSHOT_NAME]

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

スナップショットから新しい永続ディスクを作成する

スナップショットの内容を永続ディスクに復元できます。

新しい永続ディスクは、少なくともスナップショットの元のソースディスクと同じサイズか、それ以上である必要があります。スナップショットの元のソースディスクよりも大きい永続ディスクを作成する場合は、インスタンスで追加のコマンドを実行して、パーティションが余分なスペースを使用できるようにします。

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

永続ディスクのスナップショットを新しいディスクに復元する

Console

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

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

  2. 復元するスナップショットの名前を探します。
  3. Google Cloud Console で [ディスク] ページに移動します。

    [ディスク] ページに移動

  4. [新しいディスクの作成] をクリックします。
  5. 次の構成パラメータを指定します。
    • ディスクの名前。
    • ディスクの種類。
    • 必要に応じて、デフォルトのリージョンとゾーンの選択をオーバーライドできます。ソース スナップショットのストレージ ロケーションに関係なく、任意のリージョンとゾーンを選択できます。
  6. [ソースタイプ] で、[スナップショット] をクリックします。
  7. 復元するスナップショットの名前を選択します。
  8. (省略可)ディスクのサイズを GB 単位で選択します。この数は、スナップショットの元のソースディスク以上である必要があります。この値を指定しない場合、新しいディスクはスナップショットの元のソースディスクと同じサイズになります。
  9. [作成] をクリックしてディスクを作成します。

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 のいずれか)です。

API

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

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

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

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

    POST https://compute.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] は、復元するディスクのソース スナップショットです。

新しいディスクを既存のインスタンスにアタッチする(省略可)

Console

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

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

  2. ブートディスク以外のディスクを復元する先となるインスタンスの名前をクリックします。
  3. インスタンス詳細ページの一番上で [編集] をクリックします。
  4. [追加ディスク] で [既存のディスクを接続] をクリックします。
  5. スナップショットから作成された新しいディスクの名前を選択します。
  6. [完了] をクリックしてディスクをアタッチします。
  7. インスタンスの詳細ページの一番下にある [保存] をクリックして、変更内容をインスタンスに適用します。

gcloud

  1. gcloud compute instances attach-disk コマンドを使用して、永続ディスクをインスタンスにアタッチします。

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

    ここで

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

API

  1. instances.attachDisk メソッドに対する POST リクエストを作成し、スナップショットから作成したゾーン永続ディスクの URL を含めます。

    POST https://compute.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] は、新しいディスクの名前です。

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

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

スナップショットから新しい VM インスタンスのディスクを作成する

新しいインスタンスを作成するときに、スナップショットを使用して、そのインスタンスのブートディスクとデータディスクを作成できます。サービス停止が発生した場合、永続ディスクの 1 つ以上のスナップショットを新しいインスタンス上にある新しい永続ディスクに復元して、データを迅速に復元できます。

詳細については、永続ディスクのスナップショットからインスタンスを作成するをご覧ください。

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

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

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

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

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

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

次の図は、前述のプロセスを示しています。

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

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

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] は、削除するスナップショットの名前です。

次のステップ