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

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

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

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

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

gcloud compute snapshots list

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

gcloud compute snapshots describe [SNAPSHOT_NAME]

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

始める前に

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

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

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

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

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

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

ブートディスク以外の永続ディスクのスナップショットを、既存のインスタンスの新しいディスクに復元するには:

Console

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

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

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

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

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

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. POST リクエストを作成して、disks.insert メソッドでゾーン永続ディスクを作成します。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 ドキュメント