このドキュメントでは、ゾーンおよびリージョン Persistent Disk を定期的かつ自動的にバックアップするためにスナップショット スケジュールを作成する方法を説明します。Compute Engine ワークロードのバックアップには、スナップショット スケジュールを使用することをおすすめします。バックアップ時のアプリケーション データの状態をキャプチャするスナップショット スケジュールを作成する場合は、アプリケーション整合性、ゲストフラッシュ、または VSS スナップショットとも呼ばれます。詳しくは Linux アプリケーションの整合性のある永続ディスク スナップショットを作成するまたは Windows 永続ディスクのスナップショットを作成するをご覧ください。
スナップショット スケジュールを作成するときに、1 つ以上の永続ディスクに適用可能なリソース ポリシーを作成します。スナップショット スケジュールは次の方法で作成できます。
スナップショット スケジュールには、次のプロパティがあります。
- スケジュール名
- スケジュールの説明
- スナップショット頻度(時間、日、週単位)
- スナップショット開始時刻
- スナップショット スケジュールが利用可能なリージョン
- ソースディスク削除ポリシー(ソースディスクが削除された場合、自動生成されたスナップショットを処理するためのポリシー)
- 保持ポリシーを使用すると、スナップショット スケジュールによって生成されたスナップショットの保持期間を定義できます。
始める前に
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google Cloud プロジェクトを作成または選択します。
-
Google Cloud プロジェクトを作成する
gcloud projects create PROJECT_ID
-
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
-
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google Cloud プロジェクトを作成または選択します。
-
Google Cloud プロジェクトを作成する
gcloud projects create PROJECT_ID
-
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
-
制限事項
- 永続ディスクに一度に関連付けられるスナップショット スケジュールは 10 個までです。
- スナップショット スケジュールを使用してアーカイブ スナップショットを作成することはできません。
- リージョンごとの使用中のスナップショット スケジュールを最大で 1,000 個作成できます。
- スナップショット スケジュールは、それが作成されたプロジェクトにのみ適用されます。他のプロジェクトや組織では使用できません。
- リージョンで追加のリソースが必要になった場合、コンソールからリソース割り当ての増量を申請する必要があります。
- ディスクに関連付けられているスナップショット スケジュールを削除することはできません。このようなスケジュールを削除するためには、削除する前にすべてのディスクからそのスケジュールとの関連付けを解除する必要があります。
- スナップショット スケジュールの作成後に、説明、スケジュール、保持ポリシー、ラベルを変更できます。スナップショット スケジュールの他の値を更新するには、スナップショット スケジュールを削除して新しいスケジュールを作成する必要があります。
- 顧客指定の暗号鍵(CSEK)を使用する永続ディスクの場合、スナップショット スケジュールを作成することはできません。
- 顧客管理の暗号鍵(CMEK)を使用する永続ディスクの場合、スナップショット スケジュールで作成されたすべてのスナップショットは同じ鍵で自動的に暗号化されます。
スナップショット スケジュール頻度
スナップショット スケジュールを作成する前に、開始時刻とスナップショット頻度を決めてください。開始時刻は、スナップショット スケジュールを開始する時刻です。頻度は、時間、日、週単位で設定できます。
スナップショット スケジュールは、指定した開始時刻から 1 時間以内に開始されます。たとえば、開始時刻を 12 時にした場合、スナップショットは 12 時から 12 時 59 分の間に開始されます。スケジュールでは UTC タイムゾーンが使用されます。
スナップショット スケジュールは、夏時間(DST)によるシフトの影響を受けます。米国では、DST の開始時と終了時に、現地のタイムゾーンで DST が使用されているかどうかに関係なく、スナップショット スケジュール ジョブの開始時間がそれぞれ 1 時間前または後に移動します。
時間単位のスケジュールの設定: 時間単位のスケジュールを設定するには、開始時刻を選択し、1~23 の整数でスナップショット間隔を指定します。スナップショット間隔により、スナップショットが生成される頻度が定義されます。間隔を設定するときは、24 の約数(1、2、3、4、6、8、12)を選択して、スナップショットが毎日同じ時間に開始されるようにします。たとえば、開始時刻を 9:00 に設定して間隔を 6 に設定すると、スナップショット スケジュールは 9:00 から 10:00 の間に開始し、スナップショットが 6 時間ごとに生成されます。
日単位スケジュールの設定: スナップショットを 1 日 1 回生成するには、頻度を日単位に設定します。たとえば、スナップショットが毎日 9 時に生成されるようにスナップショット スケジュールを設定できます。
週単位スケジュールの設定: スナップショットを週の複数の曜日に生成するには、頻度を週単位に設定します。たとえば、開始時刻を 9 時に設定し、週単位スケジュールを月曜日、木曜日、日曜日に設定すると、スナップショット スケジュールは毎週月曜日、木曜日、日曜日の 9 時に実行されます。曜日ごとに週単位スケジュールを設定することもできます。たとえば、毎週月曜日の 14 時と木曜日の 10 時に週単位のスケジュールを設定できます。
スナップショット保持ポリシー
スナップショット保持ポリシーは、スナップショットを保持する期間を定義します。
スナップショット保持ポリシーを設定する場合は、スナップショット スケジュールの一部として定義する必要があります。gcloud CLI または Google Cloud コンソールを使用する場合は、スナップショット スケジュールを作成する際に、必ず保持ポリシーを設定する必要があります。API に直接リクエストを送信する場合は、このフィールドを省略できます。その場合、スナップショットは無期限に保持されます。
API にリクエストを送信し、すべての自動生成スナップショットを手動で削除するまで、永久に保持するデフォルトのオプションを選択した場合、それらのスナップショットを手動で削除するまでストレージ費用がかかります。
長期間にわたるスナップショットのストレージ費用を最小限に抑える保持ポリシーの設定を検討することをおすすめします。
- スナップショット保持ポリシーは、日数で指定する必要があります。最小保持日数は 1 日です。
- スナップショット保持ポリシーは自動スナップショットにのみ適用されます。手動で作成されたスナップショットには適用されません。
- 過去にさかのぼって保持ポリシーを適用することはできません。保持ポリシーを設定しないでスナップショット スケジュールを作成した後、保持ポリシーを設定したスナップショット スケジュールに切り替えた場合も、保持ポリシーは新しいスナップショットにのみ適用されます。
- 保持ポリシーに関係なく、自動生成されたスナップショットと手動のスナップショットは、常に手動で削除できます。
ソースディスクの削除ルール
スナップショット スケジュールを作成する際に、ソースディスクの削除ルールも設定できます。ソースディスクの削除ルールは、ソースディスクが削除された場合のスナップショットの処理方法を制御します。デフォルトでは、ソースディスクが削除されると、スナップショット スケジュールによって自動生成されたスナップショットは、当初設定した保持ポリシーに関係なく、手動で削除するまで永久に保持されます。
代わりの方法として、ソースディスクが削除された場合、保持ポリシーをスナップショットに適用するルールを設定することもできます。たとえばソースディスクが削除された後、スナップショットを 1 週間保持するポリシーを適用できます。
たとえば、保持ポリシーを 3 日に設定したスナップショット スケジュールを作成したものの、この保持ポリシーをソースディスクの削除時に適用しないことにしたとします。このポリシーを永続ディスクに適用すると、Compute Engine はスナップショットを自動生成しても、保持ポリシーによって 3 日後にスナップショットを自動的に削除します。ただし、ソースディスクが削除された場合は、保持ポリシーは適用されなくなっているため、このスケジュールによって生成された既存のスナップショットはすべて無期限に保持されます。
Windows インスタンスのスナップショットをスケジュールする
Windows VM インスタンスにアタッチされているディスクにスナップショット スケジュールを適用する場合、guest-flush
オプションを使用して VSS を有効にし、スナップショットのシャドーコピーを生成します。Windows のスナップショットの詳細については、Windows 永続ディスク スナップショットの作成をご覧ください。
スナップショットのロケーション ルールとスナップショット ラベル
手動で作成するスナップショットと同様に、スナップショット スケジュールでリソースラベルを指定し、ストレージ ロケーションを選択することにより、このスケジュールで自動生成されるスナップショットが、これらのプロパティで作成されるようにできます。
たとえば、スナップショットのロケーションを US
として設定すると、そのスケジュールによって生成されるすべてのスナップショットは米国に保存されます。これらのオプションの設定の詳細については、このドキュメントの例をご覧ください。
スケジュールされたスナップショットの名前
スナップショット スケジュールの一環としてキャプチャされるスナップショットには、自動生成された名前が付けられます。スナップショットの名前は、次のパターンに従って生成されます。
[disk-name-prefix]-[scope-name]-[timestamp]-[random-chars]
disk-name-prefix
: ソースディスクの名前。このフィールドの値は最大 20 文字です。scope-name
: ソースディスクのゾーンまたはリージョンの名前。timestamp
: 作成された時刻を示す、YYYYMMDDHHMMSS
形式の UTC タイムスタンプ。random-chars
: 他のスナップショットとの名前の競合を回避するためにランダムに生成される英数字。
スナップショット スケジュールの作成
Google Cloud コンソール、Google Cloud CLI、または Compute Engine API を使用して、永続ディスクのスナップショット スケジュールを作成します。スナップショット スケジュールは、永続ディスクが存在する同じリージョン内で作成する必要があります。たとえば、永続ディスクがゾーン us-west1-a
に存在する場合、スナップショット スケジュールは us-west1
リージョン内に存在する必要があります。ただし、スナップショット スケジュールによって生成されたスナップショットは別のロケーションに保存することもできます。
コンソール
-
Google Cloud コンソールで [VM インスタンス] ページに移動します。
[VM インスタンス] に移動
残りの手順は、Google Cloud コンソールに自動的に表示されます。 - VM インスタンスが含まれているプロジェクトを選択します。
- [名前] 列で、永続ディスクを含む VM の名前をクリックして、スナップショット スケジュールを作成します。
-
[
ストレージ ] で、ブートディスクの名前をクリックするか、スナップショット スケジュールを作成する追加ディスクの名前をクリックします。 - [編集] をクリックします。必要に応じて、 [その他の操作] メニューをクリックし、 [編集] をクリックします。
- [スナップショット スケジュール] で [スケジュールを作成] を選択します。
-
[名前] で、スナップショット スケジュールに次のいずれかの名前を入力します。
boot-disk-snapshot-schedule
attached-persistent-disk-snapshot-schedule
-
[ロケーション] セクションで、スナップショットのストレージ ロケーションを選択します。スナップショット設定で定義されている事前定義またはカスタマイズされたデフォルトのロケーションが自動的に選択されます。必要に応じて、スナップショット設定をオーバーライドして、次の方法でカスタム ストレージ ロケーションにスナップショットを保存できます。
-
スナップショットを保存するストレージ ロケーションの種類を選択します。
- より高いコストで高い可用性を実現するには、[マルチリージョン] を選択します。
- より低いコストでデータの物理的ロケーションをより細かく制御するには、[リージョン スナップショット] を選択します。
- より高いコストで高い可用性を実現するには、[マルチリージョン] を選択します。
-
[ロケーションを選択] フィールドで、使用する特定のリージョンまたはマルチリージョンを選択します。ソースディスクに最も近いリージョンまたはマルチリージョンを使用するには、[ディスクの場所に基づく] を選択します。
-
- スナップショット スケジュールの作成を終了するには、[作成] をクリックします。
- このスナップショット スケジュールを永続ディスクに適用するには、[保存] をクリックします。
gcloud
永続ディスクのスナップショット スケジュールを作成するには、gcloud compute resource-policies create snapshot-schedule
コマンドを使用します。スケジュール頻度を時間、日、週単位から設定します。
gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \
--description "SCHEDULE_DESCRIPTION" \
--max-retention-days MAX_RETENTION_DAYS \
--start-time START_TIME \
--hourly-schedule SNAPSHOT_INTERVAL \
--daily-schedule \
--weekly-schedule SNAPSHOT_INTERVAL \
--weekly-schedule-from-file FILE_NAME \
--on-source-disk-delete DELETION_OPTION
次のように置き換えます。
SCHEDULE_NAME
: 新しいスナップショット スケジュールの名前。SCHEDULE_DESCRIPTION
: スナップショット スケジュールの説明。引用符で説明を囲みます。MAX_RETENTION_DAYS
: スナップショットを保持する日数。たとえば、値を
3
にした場合、スナップショットが 3 日間保持されてから削除されることを意味します。1
以上の値を使用する必要があります。START_TIME
: UTC タイムゾーンでの開始時間。開始時刻は正時でなければなりません。次に例を示します。
- 午後 2 時(PST)は
22:00
と指定する必要があります。 - 開始時間を
22:13
に設定すると、エラーが発生します。
- 午後 2 時(PST)は
SNAPSHOT_INTERVAL
: スナップショットを生成する間隔です。時間単位のスケジュールを設定するには、1~23 の整数を使用します。毎日同じ時刻にスナップショットを生成するには、24 の約数である数値を時間として選択してください。たとえば、
--hourly-schedule
を12
に設定すると、スナップショットは 12 時間ごとに生成されます。週単位スケジュールの場合は、スナップショットを生成する曜日を定義します。曜日を指定する必要があります。大文字と小文字は区別されません。スナップショット頻度のフラグhourly-schedule
、daily-schedule
、weekly-schedule
は相互に排他的です。スナップショット スケジュールに応じて、いずれかのフラグを選択する必要があります。FILE_NAME
: 週単位スナップショット スケジュールが含まれるファイルの名前です(この形式でスケジュールを指定することを選択した場合)。ファイルを使用して、曜日ごとに異なる開始時刻を設定した週単位スケジュールを指定できます(コマンドラインで直接、複数の週単位スケジュールを指定することはできません)。たとえば、ファイルには、月曜日と水曜日のスナップショット スケジュールを[{"day": "MONDAY", "startTime": "04:00"}, {"day": "WEDNESDAY", "startTime": "02:00"}]
のように指定できます。開始時刻をファイルに含める場合、--start-time
フラグを設定する必要はありません。スケジュールでは UTC タイムゾーンが使用されます。DELETION_OPTION
: ソースディスクが削除された場合のスナップショットの処理方法を決定します。生成されたすべてのスナップショットを保持する場合は、このフラグを省略できます。保持ポリシーの設定を使用する場合は、apply-retention-policy
を指定します。
以下に、スナップショット スケジュールの設定の追加例を記載します。次の設定については、すべての例で共通しています。
- ディスク削除ルールが含まれています。
--on-source-disk-delete
フラグをデフォルトのkeep-auto-snapshots
に設定して、自動生成されたすべてのスナップショットを永久に保持します。あるいは、このフラグをapply-retention-policy
に設定してスナップショット保持ポリシーを使用することもできます。 - ストレージ ロケーションは手動で
US
に設定されているため、生成されたすべてのスナップショットは米国のマルチリージョンに保存されます。 - 生成されたすべてのスナップショットに、
env=dev
とmedia=images
のラベルが適用されます。 - 保持ポリシーは 10 日に設定されています。
時間単位スケジュール: この例では、スナップショット スケジュールは 22 時(UTC)に開始し、4 時間ごとに生成されます。
gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \
--description "MY HOURLY SNAPSHOT SCHEDULE" \
--max-retention-days 10 \
--start-time 22:00 \
--hourly-schedule 4 \
--region us-west1 \
--on-source-disk-delete keep-auto-snapshots \
--snapshot-labels env=dev,media=images \
--storage-location US
日単位スケジュール: この例では、スナップショット スケジュールは 22 時(UTC)に開始し、毎日同じ時刻に生成されます。--daily-schedule
フラグを指定する必要がありますが、ここでは値を設定していません。
gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \
--description "MY DAILY SNAPSHOT SCHEDULE" \
--max-retention-days 10 \
--start-time 22:00 \
--daily-schedule \
--region us-west1 \
--on-source-disk-delete keep-auto-snapshots \
--snapshot-labels env=dev,media=images \
--storage-location US
週単位スケジュール: この例では、スナップショット スケジュールは 22 時(UTC)に開始し、毎週火曜日と木曜日に生成されます。
gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \
--description "MY WEEKLY SNAPSHOT SCHEDULE" \
--max-retention-days 10 \
--start-time 22:00 \
--weekly-schedule tuesday,thursday \
--region us-west1 \
--on-source-disk-delete keep-auto-snapshots \
--snapshot-labels env=dev,media=images \
--storage-location US
REST
API で、resourcePolicies.insert
に対する POST
リクエストを作成し、スナップショット スケジュールを作成します。少なくとも、スナップショット スケジュール名とスナップショット頻度を含める必要があります。
デフォルトの onSourceDiskDelete
パラメータは keepAutoSnapshots
に設定されています。つまり、ソースディスクが削除されても、自動生成されたそのディスクのスナップショットは無期限に保持されます。あるいは、このフラグを applyRetentionPolicy
に設定して保持ポリシーを適用することもできます。
次の例では、毎日 12 時(UTC)に開始される日単位スナップショット スケジュールを設定しています。この例では、5 日の保持ポリシーも設定されています。したがって、スナップショットは生成されてから 5 日後に自動的に削除されます。
スナップショットのストレージ ロケーションを手動で指定して、リクエストにスナップショット ラベルを追加することもできます。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies
{
"name": "SCHEDULE_NAME",
"description": "SCHEDULE_DESCRIPTION",
"snapshotSchedulePolicy": {
"schedule": {
"dailySchedule": {
"startTime": "12:00",
"daysInCycle": "1"
}
},
"retentionPolicy": {
"maxRetentionDays": "5"
},
"snapshotProperties": {
"guestFlush": "False",
"labels": {
"env": "dev",
"media": "images"
},
"storageLocations": "US"
}
}
}
次のように置き換えます。
PROJECT_ID
: プロジェクト名REGION
: スナップショット スケジュール リソース ポリシーのロケーションSCHEDULE_DESCRIPTION
: スナップショット スケジュールの説明SCHEDULE_NAME
: スナップショット スケジュールの名前
週単位または月単位スケジュールも同じようにして作成できます。週単位または月単位スケジュールの設定に固有の詳細については、API リファレンスをご覧ください。
たとえば次のリクエストでは、月曜日の 9 時と木曜日の 2 時に実行される週単位スケジュールを作成しています。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies
{
"name": "SCHEDULE_NAME",
"description": "SCHEDULE_DESCRIPTION",
"snapshotSchedulePolicy": {
"schedule": {
"weeklySchedule": {
"dayOfWeeks": [
{
"day": "Monday",
"startTime": "9:00"
},
{
"day": "Thursday",
"startTime": "2:00"
}
]
}
},
"retentionPolicy": {
"maxRetentionDays": "5"
},
"snapshotProperties": {
"guestFlush": "False",
"labels": {
"production": "webserver"
},
"storageLocations": "US"
}
}
}
スナップショット スケジュールをディスクに関連付ける
スケジュールを作成したら、それを既存のディスクに関連付けます。コンソール、gcloud CLI、または Compute Engine API を使用します。
コンソール
スナップショット スケジュールを既存のディスクに関連付けます。
- Google Cloud コンソールで、[ディスク] ページに移動します。
- スナップショット スケジュールを関連付けるディスクの名前を選択します。[ディスクの管理] ページが開きます。
- [ディスクの管理] ページで、 [その他の操作] メニューにカーソルを合わせてクリックし、 [編集] を選択します。
- [スナップショット スケジュール] プルダウン メニューを使用して、スケジュールをディスクに追加します。または、新しいスケジュールを作成します。
- 新しいスケジュールを作成した場合は、[作成] をクリックします。
- [保存] をクリックしてタスクを完了します。
gcloud
スナップショット スケジュールをディスクに関連付けるには、gcloud disks add-resource-policies
コマンドを使用します。
gcloud compute disks add-resource-policies DISK_NAME \
--resource-policies SCHEDULE_NAME \
--zone ZONE
次のように置き換えます。
DISK_NAME
: 既存のディスクの名前SCHEDULE_NAME
: スナップショット スケジュールの名前ZONE
: ディスクのロケーション
REST
API で、disks.addResourcePolicies
に対する POST
リクエストを作成し、スナップショット スケジュールを既存のディスクに関連付けます。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/addResourcePolicies
{
"resourcePolicies": [
"regions/REGION/resourcePolicies/SCHEDULE_NAME"
]
}
次のように置き換えます。
PROJECT_ID
: プロジェクト名ZONE
: ディスクのロケーションREGION
: スナップショット スケジュールのロケーションDISK_NAME
: ディスクの名前SCHEDULE_NAME
: このディスクに適用するリージョン内のスナップショット スケジュールの名前
ディスクとスナップショット スケジュールを同時に作成する
Google Cloud コンソールまたは gcloud CLI のみを使用して、ディスクとスナップショット スケジュールを同時に作成できます。
コンソール
- Google Cloud コンソールで、[ディスク] ページに移動します。
- [ディスクを作成] をクリックします。
- ゾーンディスクまたはリージョン ディスクを作成するための必須フィールドに値を入力します。
- スナップショット スケジュールと同じリージョン内にディスクを作成します。
- [スナップショット スケジュール] のフィールドに値を入力します。
- プルダウン メニューを使用して、スケジュールを作成するためのフィールドに値を入力します。
- [作成] をクリックしてスケジュールを作成します。
- [作成] をクリックしてディスクを作成します。
gcloud
ゾーンまたはリージョン Persistent Disk を作成し、スナップショット スケジュールをアタッチするには、gcloud disks create
コマンドを使用します。
gcloud compute disks create DISK_NAME \
--resource-policies SCHEDULE_NAME \
--zone ZONE
次のように置き換えます。
DISK_NAME
: 新しいディスクの名前SCHEDULE_NAME
: スナップショット スケジュールの名前ZONE
: ディスクを作成するロケーション。このディスクは、スナップショット スケジュールのリージョン内のゾーンに作成する必要があります。
スナップショット スケジュールを表示する
スナップショット スケジュールのリストを取得するには、Google Cloud コンソール、Google Cloud CLI、または Compute Engine API を使用します。このリクエストにより、プロジェクト内のすべてのスナップショット スケジュールの名前、説明、リージョンが表示されます。
コンソール
- Google Cloud コンソールで、[スナップショット] ページに移動します。
- [スナップショット スケジュール] をクリックします。
- [フィルタ] を使用して、スケジュールの [名前] などのプロパティ値を選択します。
- スナップショット スケジュールをクリックして、その詳細を表示します。
gcloud
スナップショット スケジュールのリストを表示するには、gcloud resource-policies list
コマンドを使用します。
gcloud compute resource-policies list
特定のスナップショット スケジュールの説明を表示するには、gcloud resource-policies describe
コマンドを使用します。
gcloud compute resource-policies describe SCHEDULE_NAME
SCHEDULE_NAME
は、スナップショット スケジュールの名前に置き換えます。
REST
プロジェクト内のスナップショット スケジュールのリストを取得するには、resourcepolicies.aggregatedList
に GET
リクエストを送信します。
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/resourcePolicies
PROJECT_ID
は、プロジェクト名に置き換えます。
リージョン別にスナップショット スケジュールを表示する
特定のリージョン内のスナップショット スケジュールを表示するには、Google Cloud コンソール、Google Cloud CLI、Compute Engine API のいずれかを使用します。