スナップショット スケジュールを作成し、ゾーン Persistent Disk とリージョン Persistent Disk、Google Cloud Hyperdisk を定期的かつ自動的にバックアップします。Compute Engine ワークロードのバックアップには、スナップショット スケジュールを使用することをおすすめします。
バックアップ時に、アプリケーション生合成、ゲスト フラッシュ、または VSS スナップショットとも呼ばれる、アプリケーション データの状態をキャプチャするスナップショット スケジュールを作成する場合は、Linux アプリケーションの整合性のあるディスク スナップショットを作成するまたは Windows アプリケーションの整合性のあるディスク スナップショットを作成するをご覧ください。
スナップショット スケジュールのプロパティの詳細について詳しくは、スナップショット スケジュールのプロパティをご覧ください。
始める前に
- スナップショット スケジュールの制限事項を確認します。
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- デフォルトのリージョンとゾーンを設定します。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
必要なロールと権限
スナップショット スケジュールの作成に必要な権限を取得するには、プロジェクトに関する次の IAM ロールを付与するよう管理者に依頼してください。
- Compute インスタンス管理者(v1)(
roles/compute.instanceAdmin.v1
) - サービス アカウントとして実行できる VM に接続する: サービス アカウント ユーザー(v1)(
roles/iam.serviceAccountUser
)
ロールの付与の詳細については、アクセス権の管理をご覧ください。
これらの事前定義ロールには、スナップショット スケジュールの作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
スナップショット スケジュールを作成するには、次の権限が必要です。
-
スナップショット スケジュールを作成する: プロジェクトまたは組織に対する
compute.resourcePolicies.create
-
スナップショット スケジュールをディスクに適用する:
- ディスクに対する
compute.disks.addResourcePolicies
- リソース ポリシーに対する
compute.resourcePolicies.use
- ディスクに対する
-
ディスクとスナップショット スケジュールを同時に作成する:
- プロジェクトに対する
compute.disks.create
- プロジェクトに対する
compute.resourcePolicies.create
- ディスクに対する
compute.disks.addResourcePolicies
- プロジェクトに対する
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
スナップショット スケジュール作成の概要
スナップショット スケジュールを作成するときに、1 つ以上の Persistent Disk または Hyperdisk ボリュームに適用できるリソース ポリシーを作成します。
スナップショット スケジュールは次の方法で作成できます。
スナップショット スケジュールを使用した暗号化の使用
ディスクが顧客管理の暗号鍵(CMEK)を使用している場合、スナップショット スケジュールを使用してそのディスクのスナップショットを作成すると、作成されるすべてのスナップショットは同じ暗号鍵を使用して自動的に暗号化されます。
顧客指定の暗号鍵(CSEK)を使用するディスクでは、スナップショット スケジュールは使用できません。
スナップショット スケジュールの作成
ディスクのスナップショット スケジュールは、Google Cloud コンソール、Google Cloud CLI、または REST を使用して作成できます。スナップショット スケジュールは、ディスクが存在する同じリージョン内で作成する必要があります。たとえば、ディスクがゾーン 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 or \
--weekly-schedule-from-file FILE_NAME] \
--on-source-disk-delete DELETION_OPTION \
--storage-location=STORAGE_LOCATION
次のように置き換えます。
SCHEDULE_NAME
: スナップショット スケジュールの名前。SCHEDULE_DESCRIPTION
: スナップショット スケジュールの説明。引用符で説明を囲みます。MAX_RETENTION_DAYS
: スナップショットを保持する日数。たとえば、値を
3
にした場合、スナップショットが 3 日間保持されてから削除されることを意味します。1
以上の値を使用する必要があります。START_TIME
: UTC タイムゾーンでの開始時間。開始時刻は正時でなければなりません。次に例を示します。
- 午後 2 時(PST)は
22:00
と指定する必要があります。 - 開始時間を
22:13
に設定すると、エラーが発生します。
--weekly-schedule-from-file
フラグを使用して、ファイル内で開始時間を指定する場合は、このフラグを含める必要はありません。- 午後 2 時(PST)は
SNAPSHOT_INTERVAL
: 連続するスナップショットを作成する間隔。スナップショット頻度のフラグhourly-schedule
、daily-schedule
、weekly-schedule
、weekly-schedule-from-file
は相互に排他的です。スナップショット スケジュールに使用できるのは 1 つだけです。- 1 日のスケジュールを設定するには、値を指定しない
--daily-schedule
フラグを含めます。 - 時間単位のスケジュールを設定するには、
--hourly-schedule
フラグを 1~23 の整数値に設定します。毎日同じ時刻にスナップショットを生成するには、24 の約数である数値を時間として選択してください。たとえば、--hourly-schedule
を12
に設定すると、スナップショットは 12 時間ごとに作成されます。 - スナップショットを作成する曜日を
--weekly-schedule
フラグに設定して、週単位スケジュールを設定します。曜日を指定する必要があります。値では大文字と小文字は区別されません。たとえば、毎週金曜日にディスクをバックアップする場合は、コマンドに--weekly-schedule=friday
を含めます。 --weekly-schedule-from-file
フラグを含めることで、曜日ごとに異なる開始時間を設定した高度な週単位スケジュールを設定します。FILE_NAME
は、週次スナップショット スケジュールを含むファイル名に置き換えます。ファイルを使用して曜日ごとに異なる開始時間を指定することはできますが、コマンドラインで直接複数の週単位スケジュールを指定することはできません。たとえば、ファイルでは月曜日と水曜日の 2 つの週単位スケジュールを指定できますが、コマンドラインでこの設定を複製することはできません。[ {"day": "MONDAY", "startTime": "04:00"}, {"day": "WEDNESDAY", "startTime": "02:00"} ]
ファイルに開始時間を含める場合は、コマンドラインで
--start-time
フラグを設定する必要はありません。スケジュールでは UTC タイムゾーンが使用されます。
- 1 日のスケジュールを設定するには、値を指定しない
DELETION_OPTION
: ソースディスクが削除された場合のスナップショットの処理方法を決定します。生成されたすべてのスナップショットを保持する場合は、このフラグを省略できます。保持ポリシーの設定を使用する場合は、apply-retention-policy
を指定します。STORAGE_LOCATION
: 省略可。ストレージ ロケーション。このフラグを省略すると、デフォルトのストレージ ロケーションが使用されます。
例
次の設定については、すべての例で共通しています。
- ディスク削除ルールが含まれています。
--on-source-disk-delete
フラグをデフォルトのkeep-auto-snapshots
に設定して、自動生成されたすべてのスナップショットを永久に保持します。あるいは、このフラグをapply-retention-policy
に設定してスナップショット保持ポリシーを使用することもできます。 - ストレージ ロケーションは手動で
US
に設定されているため、生成されたすべてのスナップショットは米国のマルチリージョンに保存されます。 - 生成されたすべてのスナップショットに、
env=dev
とmedia=images
のラベルが適用されます。 - 保持ポリシーは 10 日に設定されています。
時間単位スケジュール: この例では、スナップショット スケジュールは 22 時(UTC)(14:00 PST)に開始し、4 時間ごとに生成されます。
gcloud compute resource-policies create snapshot-schedule hourly-schedule1 \
--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)(14:00 PST)に開始し、毎日同じ時刻に生成されます。--daily-schedule
フラグを指定する必要がありますが、関連付けられている値はありません。
gcloud compute resource-policies create snapshot-schedule daily-schedule2 \
--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)(14:00 PST)に開始し、毎週火曜日に生成されます。
gcloud compute resource-policies create snapshot-schedule weekly-schedule3 \
--description "MY WEEKLY SNAPSHOT SCHEDULE" \
--max-retention-days 10 \
--start-time 22:00 \
--weekly-schedule tuesday \
--region us-west1 \
--on-source-disk-delete keep-auto-snapshots \
--snapshot-labels env=dev,media=images \
--storage-location US
REST
スナップショット スケジュールを作成するには、resourcePolicies.insert
に対する POST
リクエストを作成します。スナップショット スケジュール名とスナップショット頻度を含める必要があります。
スナップショットのストレージ ロケーションを手動で指定して、リクエストにリソースラベルを追加することもできます。
デフォルトの onSourceDiskDelete
パラメータは keepAutoSnapshots
に設定されています。つまり、ソースディスクが削除されても、自動生成されたそのディスクのスナップショットは無期限に保持されます。あるいは、このフラグを applyRetentionPolicy
に設定して保持ポリシーを適用することもできます。
次の例では、毎日 12 時(UTC)(04:00 PST)に開始される日単位スナップショット スケジュールを設定します。この例では、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": "STORAGE_LOCATION"
}
}
}
次のように置き換えます。
PROJECT_ID
: プロジェクト名REGION
: スナップショット スケジュール リソース ポリシーのロケーションSCHEDULE_DESCRIPTION
: スナップショット スケジュールの説明SCHEDULE_NAME
: スナップショット スケジュールの名前STORAGE_LOCATION
: 省略可。ストレージ ロケーション。このフラグを省略すると、デフォルトのストレージ ロケーションが使用されます。
週単位または月単位スケジュールも同じようにして作成できます。週単位または月単位のスケジュールの設定に固有の詳細については、resourcePolicies.insert
メソッドをご覧ください。
たとえば、次のリクエストでは、火曜日の 9 時(UTC)に実行される週単位スケジュールを作成しています。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies
{
"name": "SCHEDULE_NAME",
"description": "SCHEDULE_DESCRIPTION",
"snapshotSchedulePolicy": {
"schedule": {
"weeklySchedule": {
"dayOfWeeks": [
{
"day": "Tuesday",
"startTime": "9: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
スナップショット スケジュールを既存のディスクにアタッチするには、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 またはリージョン Persistent Disk を作成し、スナップショット スケジュールをアタッチするには、gcloud disks create
コマンドを使用します。
gcloud compute disks create DISK_NAME \
--resource-policies SCHEDULE_NAME \
--zone ZONE
次のように置き換えます。
DISK_NAME
: 新しいディスクの名前SCHEDULE_NAME
: スナップショット スケジュールの名前ZONE
: ディスクを作成するロケーション。ディスクは、スナップショット スケジュールと同じリージョン内のゾーンに存在する必要があります。
次のステップ
- スナップショット スケジュールの管理について学習する。
- スケジュールされたスナップショットの頻度、保持ポリシー、命名規則については、ディスクのスナップショット スケジュールについてをご覧ください。
- スナップショットからディスク イメージを作成する方法を学習する。
- ログを表示する方法を学習する。