スナップショットを作成して、ゾーン永続ディスクまたはリージョン永続ディスクからデータを定期的にバックアップします。
ディスクが実行中のインスタンスに接続されている場合でも、ディスクからスナップショットを作成できます。スナップショットはグローバル リソースであるため、これを使用して同じプロジェクト内の新しいディスクまたはインスタンスにデータを復元することができます。また、プロジェクト間でスナップショットを共有することもできます。
始める前に
- このガイドのコマンドラインの例を使用する場合、以下を行ってください。
- gcloud コマンドライン ツールの最新バージョンをインストールするか、最新バージョンに更新します。
- デフォルトのリージョンとゾーンを設定します。
- このガイドの API の例を使用する場合、API アクセスを設定します。
スナップショットの作成
永続ディスクのスナップショットを作成する準備をするには、次の手順を行います。
スナップショットのためにディスクを準備するには、永続ディスク スナップショットに関するおすすめの方法を確認してください。
スナップショット スケジュールを作成してディスクに関連付ける方法については、永続ディスクのスナップショット スケジュールの作成をご覧ください。 スケジュール設定されたスナップショットを使用してディスクを定期的にバックアップすると、予期しないデータ損失のリスクを軽減できます。
ゾーン永続ディスクのスナップショットの作成
コンソール
- Google Cloud Console で [スナップショットの作成] ページに移動します。
[スナップショットの作成] ページに移動 - スナップショットの [名前] を入力します。
- 必要に応じて、スナップショットの [説明] を入力します。
- プルダウン メニューから [ソースディスク] を選択します。
スナップショットのストレージ ロケーションを指定します。デフォルトのストレージ ロケーション、またはカスタムのストレージ ロケーションを使用できます。
- [場所] で、スナップショットを [マルチリージョン] ロケーションに保存するか、[リージョン] ロケーションに保存するかを選択します。
- 使用する特定のリージョンまたはマルチリージョンを選択します。ソースディスクに最も近いリージョンまたはマルチリージョンを使用するには、[ソースディスクのロケーションに基づく(デフォルト)] を選択します。
[作成] をクリックしてスナップショットを作成します。
gcloud
デフォルトのストレージ ロケーションまたは選択したストレージ ロケーションに、スナップショットを作成します。必要に応じて、--snapshot-names
フラグを使用してスナップショット名を指定できます。デフォルトのスナップショット名は、文字で始まるランダムな 12 文字の英数字文字列です。
デフォルトのストレージ ロケーションにゾーン永続ディスクのスナップショットを作成するには、
gcloud compute disks snapshot
コマンドを使用します。gcloud compute disks snapshot DISK_NAME
ここで
- DISK_NAME は、スナップショットを作成するゾーン永続ディスクの名前です。
カスタムのストレージ ロケーションにスナップショットを作成する場合には、
--storage-location
フラグを使用して、スナップショットの保存先を指定します。gcloud compute disks snapshot DISK_NAME \ --storage-location STORAGE_LOCATION
ここで
- DISK_NAME は、スナップショットを作成するゾーン永続ディスクの名前です。
- STORAGE_LOCATION は、スナップショットを保存する Cloud Storage マルチリージョンまたは Cloud Storage リージョンです。ストレージ ロケーションは 1 つだけ指定できます。
gcloud
ツールは、このオペレーションに対して READY
か FAILED
のステータスが返されるか、最長タイムアウトに達してスナップショットの最新の既知情報が返されるまで待機します。
API
デフォルトのストレージ ロケーションまたは選択したストレージ ロケーションに、スナップショットを作成します。必要に応じて、name
フィールドを使用してスナップショット名を指定できます。デフォルトのスナップショット名は、文字で始まるランダムな 12 文字の英数字文字列です。
デフォルトのストレージ ロケーションにスナップショットを作成するには、
disks.createSnapshot
メソッドに対するPOST
リクエストを作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/createSnapshot
ここで
- PROJECT_ID はプロジェクト ID です。
- ZONE は、インスタンスとディスクが配置されているゾーンです。
- DISK_NAME は、スナップショットを作成するゾーン永続ディスクの名前です。
カスタムのストレージ ロケーションにスナップショットを作成する場合には、
disks.createSnapshot
メソッドに対するPOST
リクエストを作成して、ストレージの場所を指定します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/createSnapshot { "storageLocations": STORAGE_LOCATION }
ここで
- PROJECT_ID はプロジェクト ID です。
- ZONE は、インスタンスとディスクが配置されているゾーンです。
- DISK_NAME は、スナップショットを作成するゾーン永続ディスクの名前です。
- STORAGE_LOCATION は、スナップショットを保存する Cloud Storage マルチリージョンまたは Cloud Storage リージョンです。ストレージ ロケーションは 1 つだけ指定できます。
リージョン永続ディスクのスナップショットの作成
ディスクの準備をしてから、スナップショットを作成します。リージョン永続ディスクのスナップショットを作成するときは、ディスクを配置するリージョンを指定する必要があります。
コンソール
- Google Cloud Console で [スナップショットの作成] ページに移動します。
[スナップショットの作成] ページに移動 - スナップショットの [名前] を入力します。
- 必要に応じて、スナップショットの [説明] を入力します。
- [ソースディスク] で、スナップショットを作成する既存のディスクを選択します。
必要であれば、カスタム ストレージ ロケーションを指定できます。
- [場所] で、スナップショットを [マルチリージョン] ロケーションに保存するか、[リージョン] ロケーションに保存するかを選択します。
- 使用する特定のリージョンまたはマルチリージョンを選択します。ソースディスクに最も近いリージョンまたはマルチリージョンを使用するには、[ソースディスクのロケーションに基づく] を選択します。
[作成] をクリックしてスナップショットを作成します。
gcloud
デフォルトのストレージ ロケーションまたは選択したストレージ ロケーションにスナップショットを作成します。
デフォルトのストレージ ロケーションにリージョン永続ディスクのスナップショットを作成するには、
gcloud compute disks snapshot
コマンドを使用します。gcloud compute disks snapshot DISK_NAME \ --region REGION
ここで
- DISK_NAME は、スナップショットを作成するリージョン永続ディスクの名前です。
- REGION は、リージョン永続ディスクが配置されているリージョンです。
必要であれば、カスタム ストレージ ロケーションを指定できます。
gcloud compute disks snapshot DISK_NAME --region REGION --storage-location STORAGE_LOCATION
ここで
- DISK_NAME は、スナップショットを作成するリージョン永続ディスクの名前です。
- REGION は、リージョン永続ディスクが配置されているリージョンです。
- STORAGE_LOCATION は、スナップショットを保存する Cloud Storage マルチリージョンまたは Cloud Storage リージョンです。ストレージ ロケーションは 1 つだけ指定できます。
gcloud
コマンドライン ツールは、このオペレーションに対してREADY
かFAILED
のステータスが返されるか、最長タイムアウトに達してスナップショットの最新の既知情報が返されるまで待機します。
API
デフォルトのストレージ ロケーションにスナップショットを作成するには、
regionDisk.createSnapshot
メソッドに対するPOST
リクエストを作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/createSnapshot
ここで
- PROJECT_ID はプロジェクト ID です。
- REGION は、リージョン永続ディスクが配置されているリージョンです。
- DISK_NAME はスナップショットを作成するディスクの名前です。
カスタムのストレージ ロケーションにスナップショットを作成する場合には、
regionDisk.createSnapshot
メソッドに対するPOST
リクエストを作成して、ストレージの場所を指定します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/VAR/disks/DISK_NAME/createSnapshot { "storageLocations": STORAGE_LOCATION }
ここで
- PROJECT_ID はプロジェクト ID です。
- REGION は、リージョン永続ディスクが配置されているリージョンです。
- DISK_NAME は、スナップショットを作成するリージョン永続ディスクの名前です。
- STORAGE_LOCATION は、スナップショットを保存する Cloud Storage マルチリージョンまたは Cloud Storage リージョンです。ストレージ ロケーションは 1 つだけ指定できます。
プロジェクト間でのスナップショットの共有
プロジェクト間でディスクデータを移動するには、他のプロジェクト ディスクとディスクのスナップショットを共有します。たとえば、project-a
のディスク disk-1
のデータを project-b
の新しいディスク disk-2
に移動するには、次の手順を行います。この例では、disk-1
は、ゾーン us-west2-a
にあり、instance-1
はゾーン us-west2-b
にあります。
gcloud
disk-1
のスナップショットを作成します。gcloud compute disks snapshot disk-1 --project project-a --snapshot-names snapshot-1
スナップショットに基づく
project-b
に新しいディスクを作成します。gcloud compute disks create disk-2 --project project-b --source-snapshot projects/project-a/global/snapshots/snapshot-1
新しいディスクを
project-b
のインスタンスinstance-1
にアタッチします。gcloud compute instances attach-disk instance-1 --project project-b --disk disk-2
ディスクをマウントします。永続ディスクのフォーマットとマウントのステップ 5~7 をご覧ください。
API
disks.createSnapshot
メソッドに対するPOST
リクエストを作成し、disk-1
のスナップショットを作成します。POST https://compute.googleapis.com/compute/v1/projects/project-a/zones/us-west2-a/disks/disk-1/createSnapshot { "name": "snapshot-1" }
スナップショットに基づく
project-b
に新しいディスクdisk-2
を作成します。POST
リクエストを作成して、disks.insert
メソッドを使用しているゾーン永続ディスクを作成します。POST https://compute.googleapis.com/compute/v1/projects/project-b/zones/us-west2-b/disks { "name": "disk-2", "type": "zones/us-west2-b/diskTypes/DISK_TYPE" "sourceSnapshot": "projects/project-a/global/snapshots/snapshot-1" }
以下を置き換えます。
- DISK_TYPE: 永続ディスクの種類(
pd-standard
、pd-ssd
、pd-balanced
のいずれか)。
- DISK_TYPE: 永続ディスクの種類(
新しいディスクを
project-b
のインスタンスinstance-1
に接続します。ディスクは、インスタンスと同じゾーンに存在している必要があります。instances.attachDisk
メソッドに対するPOST
リクエストを作成し、作成したゾーン永続ディスクへの URL をリクエスト本文に含めます。POST https://compute.googleapis.com/compute/v1/projects/project-b/zones/us-west2-b/instances/instance-1/attachDisk { "source": "/compute/v1/projects/project-b/zones/us-west2-b/disks/disk-2" }
ディスクをマウントします。永続ディスクのフォーマットとマウントのステップ 5~7 をご覧ください。
使用可能なスナップショットの一覧を取得するには、スナップショットの一覧表示をご覧ください。
スナップショットの復元
スナップショットの内容を新しいディスクに復元するには、次の方法があります。
スナップショットからの新しい永続ディスクの作成: 新しいディスクを作成し、スナップショットを [ソース] として選択します。
スナップショットからの新しいインスタンスの作成: 新しいインスタンスを作成するときに、スナップショットを使用してそのインスタンスのブートディスクとデータディスクを作成できます。イベントの停止が発生した場合、新しいインスタンスで新しい永続ディスクに 1 つ以上のスナップショットを復元して、データを迅速に復元できます。詳細については、スナップショットからのインスタンスの作成をご覧ください。
スナップショットから新しい永続ディスクを作成する
新しい永続ディスクは、少なくともスナップショットの元のソースディスクと同じサイズか、それ以上である必要があります。スナップショットの元のソースディスクよりも大きい永続ディスクを作成する場合は、その永続ディスクでファイル システムのサイズを変更して、追加のディスク スペースを含める必要があります。
新しいゾーンの永続ディスクは、特定のスナップショットから最大で 10 分ごとに作成できます。ディスクのスナップショット リクエストを大量に発行する場合、60 分で最大 6 件のリクエストを発行できます。この上限は、スナップショットからリージョン永続ディスクを作成する場合には適用されません。詳細については、スナップショットの頻度の制限をご覧ください。
オペレーティング システムおよびファイルシステムの種類によっては、異なるファイルシステム サイズ変更ツールの使用が必要になることがあります。詳細については、オペレーティング システムのドキュメントをご覧ください。
コンソール
Google Cloud Console で、[スナップショット] ページに移動します。
復元するスナップショットの名前を探します。
[ディスク] ページに移動
[新しいディスクの作成] をクリックします。
次の構成パラメータを指定します。
- ディスクの名前。
- ディスクの種類。
- 必要に応じて、デフォルトのリージョンとゾーンの選択をオーバーライドできます。ソース スナップショットのストレージ ロケーションに関係なく、任意のリージョンとゾーンを選択できます。
[ソースタイプ] で、[スナップショット] をクリックします。
復元するスナップショットの名前を選択します。
省略可: ディスクのサイズをギガバイト単位で選択します。この数は、スナップショットの元のソースディスク以上である必要があります。この値を指定しない場合、新しいディスクはスナップショットの元のソースディスクと同じサイズになります。
[作成] をクリックしてディスクを作成します。
gcloud
gcloud compute snapshots list
コマンドを使用して、復元するスナップショットの名前を確認します。gcloud compute snapshots list
gcloud compute snapshots describe
コマンドを使用して、復元するスナップショットのサイズを確認します。gcloud compute snapshots describe SNAPSHOT_NAME
SNAPSHOT_NAME は、復元対象のスナップショットの名前に置き換えます。
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: 新しいディスクのサイズ(ギガバイト単位)。この数は、スナップショットの元のソースディスク以上である必要があります。
- SNAPSHOT_NAME: 復元対象のスナップショットの名前。
- DISK_TYPE: 永続ディスクの種類。例:
pd-ssd
API
snapshots.list
へのGET
リクエストを作成して、プロジェクト内のスナップショットを一覧表示します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots
PROJECT_ID を実際のプロジェクト ID に置き換えます。
POST
リクエストを作成して、disks.insert
メソッドでゾーン永続ディスクを作成します。name
、sizeGb
、type
プロパティを含めます。スナップショットを使用してディスクを復元するには、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: 新しいディスクのサイズ(ギガバイト単位)。
- DISK_TYPE: 永続ディスクの種類。例:
pd-ssd
- SNAPSHOT_NAME: 復元するディスクのソース スナップショット。
必要に応じて、新しいディスクを既存のインスタンスにアタッチできます。
コンソール
- [VM インスタンス] ページに移動します。
- ブートディスク以外のディスクを復元する先となるインスタンスの名前をクリックします。
- インスタンス詳細ページの一番上で [編集] をクリックします。
- [追加ディスク] で [既存のディスクを接続] をクリックします。
- スナップショットから作成された新しいディスクの名前を選択します。
- [完了] をクリックしてディスクをアタッチします。
- インスタンスの詳細ページの一番下にある [保存] をクリックして、変更内容をインスタンスに適用します。
gcloud
gcloud compute instances attach-disk
コマンドを使用して、永続ディスクをインスタンスにアタッチします。gcloud compute instances attach-disk INSTANCE_NAME \ --disk DISK_NAME
ここで
- INSTANCE_NAME は、インスタンスの名前です。
- DISK_NAME は、スナップショットから作成されたディスクの名前です。
API
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 は新しいディスクの名前です。
新しいディスクを作成してインスタンスにアタッチしたら、ディスクをマウントする必要があります。こうすることで、オペレーティング システムが保存容量を使用できるようになります。
スナップショットを削除する
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 は削除するスナップショットの名前です。
スナップショットを一覧表示する
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 はスナップショットの名前です。
次のステップ
- 永続ディスクのスナップショット スケジュールを作成する方法を学習する。
- スナップショットからディスク イメージを作成する方法を学習する。