ディスク スナップショットのスケジュールを作成する


スナップショット スケジュールを作成し、ゾーン Persistent Disk とリージョン Persistent DiskGoogle Cloud Hyperdisk を定期的かつ自動的にバックアップします。Compute Engine ワークロードのバックアップには、スナップショット スケジュールを使用することをおすすめします。

バックアップ時に、アプリケーション生合成、ゲスト フラッシュ、または VSS スナップショットとも呼ばれる、アプリケーション データの状態をキャプチャするスナップショット スケジュールを作成する場合は、Linux アプリケーションの整合性のあるディスク スナップショットを作成するまたは Windows アプリケーションの整合性のあるディスク スナップショットを作成するをご覧ください。

スナップショット スケジュールのプロパティの詳細について詳しくは、スナップショット スケジュールのプロパティをご覧ください。

始める前に

  • スナップショット スケジュールの制限事項を確認します。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

必要なロールと権限

スナップショット スケジュールの作成に必要な権限を取得するには、プロジェクトに関する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与の詳細については、アクセス権の管理をご覧ください。

これらの事前定義ロールには、スナップショット スケジュールの作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

スナップショット スケジュールを作成するには、次の権限が必要です。

  • スナップショット スケジュールを作成する: プロジェクトまたは組織に対する 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 リージョンにスナップショット スケジュールを作成する必要があります。ただし、スナップショット スケジュールによって生成されたスナップショットは別のロケーションに保存することもできます。

コンソール

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動
    残りの手順は、Google Cloud コンソールに自動的に表示されます。

  2. VM インスタンスが含まれているプロジェクトを選択します。
  3. [名前] 列で、永続ディスクを含む VM の名前をクリックして、スナップショット スケジュールを作成します。
  4. [ストレージ] で、ブートディスクの名前をクリックするか、スナップショット スケジュールを作成する追加ディスクの名前をクリックします。
  5. [編集] をクリックします。必要に応じて、 [その他の操作] メニューをクリックし、 [編集] をクリックします。
  6. [スナップショット スケジュール] で [スケジュールを作成] を選択します。
  7. [名前] で、スナップショット スケジュールに次のいずれかの名前を入力します。
    • boot-disk-snapshot-schedule
    • attached-persistent-disk-snapshot-schedule
  8. [ロケーション] セクションで、スナップショットのストレージ ロケーションを選択します。スナップショット設定で定義されている事前定義またはカスタマイズされたデフォルトのロケーションが自動的に選択されます。必要に応じて、スナップショット設定をオーバーライドして、次の方法でカスタム ストレージ ロケーションにスナップショットを保存できます。

    1. スナップショットを保存するストレージ ロケーションの種類を選択します。

    2. [ロケーションを選択] フィールドで、使用する特定のリージョンまたはマルチリージョンを選択します。ソースディスクに最も近いリージョンまたはマルチリージョンを使用するには、[ディスクの場所に基づく] を選択します。

  9. スナップショット スケジュールの作成を終了するには、[作成] をクリックします。
  10. このスナップショット スケジュールを永続ディスクに適用するには、[保存] をクリックします。

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 \
    --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 フラグを使用して、ファイル内で開始時間を指定する場合は、このフラグを含める必要はありません。

  • SNAPSHOT_INTERVAL: 連続するスナップショットを作成する間隔。スナップショット頻度のフラグ hourly-scheduledaily-scheduleweekly-scheduleweekly-schedule-from-file は相互に排他的です。スナップショット スケジュールに使用できるのは 1 つだけです。

    • 1 日のスケジュールを設定するには、値を指定しない --daily-schedule フラグを含めます。
    • 時間単位のスケジュールを設定するには、--hourly-schedule フラグを 1~23 の整数値に設定します。毎日同じ時刻にスナップショットを生成するには、24 の約数である数値を時間として選択してください。たとえば、--hourly-schedule12 に設定すると、スナップショットは 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 タイムゾーンが使用されます。

  • DELETION_OPTION: ソースディスクが削除された場合のスナップショットの処理方法を決定します。生成されたすべてのスナップショットを保持する場合は、このフラグを省略できます。保持ポリシーの設定を使用する場合は、apply-retention-policy を指定します。

  • STORAGE_LOCATION: 省略可。ストレージ ロケーション。このフラグを省略すると、デフォルトのストレージ ロケーションが使用されます。

次の設定については、すべての例で共通しています。

  • ディスク削除ルールが含まれています。--on-source-disk-delete フラグをデフォルトの keep-auto-snapshots に設定して、自動生成されたすべてのスナップショットを永久に保持します。あるいは、このフラグを apply-retention-policy に設定してスナップショット保持ポリシーを使用することもできます。
  • ストレージ ロケーションは手動で US に設定されているため、生成されたすべてのスナップショットは米国のマルチリージョンに保存されます。
  • 生成されたすべてのスナップショットに、env=devmedia=images のラベルが適用されます。
  • 保持ポリシーは 10 日に設定されています。

時間単位スケジュール: この例では、スナップショット スケジュールは 22 時(UTC)(14:00 PST)に開始し、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)(14:00 PST)に開始し、毎日同じ時刻に生成されます。--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)(14:00 PST)に開始し、毎週火曜日と木曜日に生成されます。

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

スナップショット スケジュールを作成するには、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 時と木曜日の 2 時(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": "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 を使用します。

コンソール

スナップショット スケジュールを既存のディスクにアタッチします。

  1. Google Cloud コンソールで、[ディスク] ページに移動します。

    [ディスク] に移動

  2. スナップショット スケジュールをアタッチするディスクの名前を選択します。[ディスクの管理] ページが開きます。

  3. [ディスクの管理] ページで、[ 編集] をクリックします。必要に応じて、最初に [ その他の操作] メニューをクリックします。

  4. [スナップショット スケジュール] プルダウン メニューを使用して、スケジュールをディスクに追加します。または、新しいスケジュールを作成します。

  5. 新しいスケジュールを作成した場合は、[作成] をクリックします。

  6. [保存] をクリックしてタスクを完了します。

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 を使用して、ディスクとスナップショット スケジュールを同時に作成できます。

コンソール

  1. Google Cloud コンソールで、[ディスク] ページに移動します。

    [ディスク] に移動

  2. [ディスクを作成] をクリックします。

  3. ゾーンディスクまたはリージョン ディスクを作成するための必須フィールドに値を入力します。

  4. スナップショット スケジュールと同じリージョン内にディスクを作成します。

  5. [スナップショット スケジュール] のフィールドに値を入力します。

  6. プルダウン メニューを使用して、スケジュールを作成するためのフィールドに値を入力します。

  7. [作成] をクリックしてスケジュールを作成します。

  8. [作成] をクリックしてディスクを作成します。

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: ディスクを作成するロケーション。ディスクは、スナップショット スケジュールと同じリージョン内のゾーンに存在する必要があります。

次のステップ