Compute Engine では、スナップショットを使用してディスクのデータをバックアップできます。スナップショットは増分的であるため、完全なディスク イメージを作成する場合と比べて、作成時のパフォーマンスが高く、ストレージ料金の総額も低くなります。
アプリケーション整合性のあるスナップショットは、すべてのアプリケーション トランザクションが完了し、保留中の書き込みがすべてディスクにフラッシュされた状態で、バックアップの時点でのアプリケーション データの状態をキャプチャします。Windows VM では、ボリューム シャドーコピー サービス(VSS)を使用することで、最初にインスタンスを停止したり VM からディスクを切断したりすることなく、アプリケーション整合性のあるスナップショットを作成できます。
始める前に
- 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
-
制限事項
Windows のディスク スナップショットには次の制限があります。
- VSS スナップショットは、イメージ バージョンが
v20160810
以降の Windows インスタンスでのみ動作します。インスタンスのイメージがそれより古い場合は、VSS を使用せずにスナップショットを作成します。 - アタッチされているディスクは、NTFS、exFAT、または ReFS のファイル システムを使用する必要があります。
- VSS スナップショットがデータの保存に役立つのは、整合性のあるデータ バックアップを作成するために調整可能な VSS 対応アプリケーションを実行している場合だけです。
- VSS スナップショット オペレーションが 300 秒以内に完了しない場合、スナップショットはタイムアウト エラーで失敗します。
Windows VSS スナップショットの作成
インスタンスの停止や VM からのディスクの切断を行うことなく、ボリューム シャドーコピー サービス(VSS)のスナップショットを作成できます。VSS 対応アプリがインストールされているシステムでのバックアップと復旧を目的としています。
VSS スナップショットは通常の Persistent Disk または Hyperdisk のスナップショットと同じ料金であり、スナップショットの合計サイズに対してのみ請求されます。
スナップショットの作成
コンソール
Google Cloud コンソールで [スナップショットの作成] ページに移動します。
[スナップショットの作成] ページに移動- スナップショットの名前を入力します。
-
スナップショットの種類を選択します。デフォルトは
STANDARD
(標準)スナップショットです。これは、長期のバックアップや障害復旧に適しています。データの保持にかかる費用対効果を高めるには、[アーカイブ スナップショット] を選択します。
- 省略可: スナップショットの説明を入力します。
- [ソースディスク] で、スナップショットを作成する既存のディスクを選択します。
[ロケーション] セクションで、スナップショットの保存場所を選択します。
スナップショット設定で定義されている事前定義またはカスタマイズされたデフォルトのロケーションが自動的に選択されます。必要に応じて、スナップショット設定をオーバーライドして、次の方法でカスタマイズされた保存場所にスナップショットを保存できます。
スナップショットを保存する保存場所の種類を選択します。
- より高いコストで高い可用性を実現するには、[マルチリージョン] を選択します。
- より低いコストでデータの物理的ロケーションをより細かく制御するには、[リージョン スナップショット] を選択します。
- [ロケーションを選択] フィールドで、使用する特定のリージョンまたはマルチリージョンを選択します。ソースディスクに最も近いリージョンまたはマルチリージョンを使用するには、[ディスクの場所に基づく] を選択します。
- [アプリケーション間で整合性のあるスナップショットを有効にする] チェックボックスをオンにします。
- [作成] をクリックしてスナップショットを作成します。
gcloud
VSS スナップショットを作成するには、gcloud compute snapshots create
コマンドを使用して --guest-flush
フラグを指定します。
スナップショットは、スナップショット設定で定義された保存場所ポリシー内に作成するか、別の保存場所を使用して作成できます。詳細については、スナップショットの保存場所を選択するをご覧ください。
スナップショット設定で構成した事前定義またはカスタマイズされたデフォルトの場所にスナップショットを作成するには、
gcloud compute snapshots create
コマンドを使用します。gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --guest-flush
-
また、スナップショット設定をオーバーライドしてスナップショットをカスタマイズされた保存場所に作成するには、
--storage-location
フラグを含めて、スナップショットの保存先を指定します。gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --storage-location=STORAGE_LOCATION \ --guest-flush
次のように置き換えます。
- SNAPSHOT_NAME: スナップショットの名前。
- SOURCE_ZONE: ソースディスクのゾーン。
- SOURCE_DISK_NAME: スナップショットを作成するディスク ボリュームの名前。
- SNAPSHOT_TYPE: スナップショットの種類(標準またはアーカイブ)。スナップショットの種類が指定されていない場合は、
STANDARD
(標準)スナップショットが作成されます。 -
STORAGE_LOCATION: スナップショットを保存する Cloud Storage マルチリージョンまたは Cloud Storage リージョン(オプション)。保存場所は 1 つだけ指定できます。
--storage-location
パラメータは、スナップショット設定で構成した事前定義またはカスタマイズされたデフォルトの保存場所をオーバーライドする場合にのみ使用します。
リージョン Persistent Disk の VSS スナップショットを作成するには、前の例の
--source-disk-zone=
を--source-disk-region=
に置き換え、リージョン Persistent Disk の配置先リージョンを七します。Google Cloud CLI は、オペレーションが
READY
またはFAILED
のステータスを返すか、最長タイムアウトに達してスナップショットの最新の既知情報が返されるまで待機します。
REST
スナップショットを作成するときに、VSS スナップショットを作成することを示すために、compute.snapshots.insert
メソッドに対する POST
リクエストのリクエスト本文に guestFlush
プロパティを指定します。
スナップショットは、スナップショット設定で定義された保存場所ポリシー内に作成するか、別の保存場所を使用して作成できます。詳細については、スナップショットの保存場所を選択するをご覧ください。
-
スナップショット設定で構成した事前定義またはカスタマイズされたデフォルトの場所にスナップショットを作成するには、
snapshots.insert
メソッドにPOST
リクエストを発行します。POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotType": "SNAPSHOT_TYPE", "guestFlush": true, }
-
または、スナップショット設定をオーバーライドしてカスタマイズされた保存場所にスナップショットを作成するには、
snapshots.insert
メソッドにPOST
リクエストをstorageLocations
プロパティを含めて送信します。POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotType": "SNAPSHOT_TYPE", "storageLocations": [ "STORAGE_LOCATION" ], "guestFlush": true, }
次のように置き換えます。
- DESTINATION_PROJECT_ID: スナップショットを作成するプロジェクトの ID。
- SNAPSHOT_NAME: スナップショットの名前。
- SOURCE_PROJECT_ID: ソースディスク プロジェクトの ID。
- SOURCE_ZONE: ソースディスクのゾーン。
- SOURCE_DISK_NAME: スナップショットを作成するディスクの名前。
- SNAPSHOT_TYPE: スナップショットの種類(標準またはアーカイブ)。スナップショットの種類が指定されていない場合は、
STANDARD
(標準)スナップショットが作成されます。 -
STORAGE_LOCATION: スナップショットを保存する Cloud Storage マルチリージョンまたは Cloud Storage リージョン(オプション)。保存場所は 1 つだけ指定できます。
storageLocations
パラメータは、スナップショット設定で構成した事前定義またはカスタマイズされたデフォルトの保存場所をオーバーライドする場合にのみ使用します。
リージョン Persistent Disk の VSS スナップショットを作成するには、前述の POST
リクエストで次の行を置き換えます。
"sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
"sourceDisk": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME",
省略可: ディスクを読み取り / 書き込み可能としてマークする
VSS スナップショットの作成時に、Windows Server はスナップショット内のボリュームを読み取り専用としてマークします。VSS スナップショットから新しいディスクを作成すると、そのディスクも読み取り専用モードに設定されます。
これにより、問題が発生する場合があります。たとえば、既存のブートディスクの VSS スナップショットから作成した新しいブートディスクで VM インスタンスを作成すると、新しいブートディスクの読み取り専用フラグによって VM が正常に起動できなくなります。
この問題を回避するには、次の手順に沿って VSS スナップショットから作成したすべての新しいディスクから読み取り専用フラグを削除します。
ディスクが VM にアタッチされていることを確認します。
- VSS スナップショットから作成したディスクが非ブート データディスクである場合は、ディスクを新規または既存の VM にアタッチできます。
- VSS スナップショットから作成したディスクがブートディスクであり、それを使用して VM を起動する場合は、ディスクを一時的に別の既存の VM にアタッチする必要があります。以下の手順が完了したら、VM からディスクを切断します。これで、このディスクを使用して新しい VM インスタンスを起動できるようになります。
ディスクがアタッチされている Windows VM にログインします。
PowerShell コマンド プロンプトを開き、
diskpart
ツールを実行します。PS C:\> diskpart
マウントするディスクを特定します。
DISKPART> list disk
select disk
コマンドを使用して、ディスクを選択します。DISKPART> select disk DISK_NUMBER
DISK_NUMBER
は、マウントするディスクの数に置き換えます。ディスクをマウントします。
DISKPART> online disk
ディスク内のすべてのボリュームを一覧表示します。
DISKPART> list volume
新しいボリュームを選択します。
DISKPART> select volume VOLUME_NUMBER
VOLUME_NUMBER
は、読み取りおよび書き込み可能として構成するボリュームの番号に置き換えます。読み取り専用フラグを削除します。
DISKPART> attr volume clear readonly hidden nodefaultdriveletter shadowcopy
diskpart
ツールを終了します。DISKPART> exit
ディスクが別の VM のブートディスクである場合は、ブートディスク ファイルを新しいディスク署名と同期します。
PS C:\> bcdboot DRIVE_LETTERWindows /s DRIVE_LETTER
DRIVE_LETTER
は、同期するボリュームのドライブ文字で置き換えます。たとえば、F:\
の場合はF
です。
VSS を使用せずにスナップショットを作成する
Windows VM にアタッチされているディスクのスナップショットを、VSS を使用せずに作成したい場合があります。
VSS を使用せずに Windows VM にディスク スナップショットを作成するには、以下の手順に沿って操作します。
クリーンなスナップショットを作成するためのシステムを準備する
ディスク スナップショットを作成する前に、取得するスナップショットが、希望するディスクの状態と一致していることを確認します。ディスクが「クリーンでない」状態でスナップショットを取ると、ディスク チェックが強制的に行われ、場合によってはデータを損失する可能性があります。ファイル システムを同期してマウントを解除することを検討してください。
ファイル システムの同期
アプリケーションがディスクにデータの書き込みを行っているなど、ディスクのマウント解除ができない場合は、ファイル システムを同期してディスク バッファをフラッシュできます。ファイル システムを同期するには次のようにします。
- Windows VM にログインします。
- Microsoft から Sync ツールをダウンロードしてインストールします。
- アプリケーションによるディスクへの書き込みを停止します。
- 管理者特権のコマンド プロンプト ウィンドウを開きます。
コマンドライン ウィンドウで、次のコマンドを実行します。
PS C:\> sync DRIVE_LETTER
DRIVE_LETTER
は、同期するボリュームのドライブ文字で置き換えます。たとえば、F:\
の場合はF
です。
ディスクのマウント解除
Windows VM にログインします。
PowerShell コマンド プロンプトを開き、
diskpart
ツールを実行します。PS C:\> diskpart
マウントを解除してスナップショットを作成するディスクを特定します。
DISKPART> list disk
次に、確認したディスク番号を使用してディスクを選択します。
DISKPART> select disk DISK_NUMBER
DISK_NUMBER
は、再マウントするディスクの数に置き換えます。ディスクをマウント解除します。
DISKPART> offline disk
スナップショットの作成
- ディスクが単一のゾーン(ゾーン Persistent Disk または Hyperdisk)に配置されている場合は、ゾーン Persistent Disk ボリュームのスナップショットを作成するの手順に沿って操作します。
- Persistent Disk が複数のゾーンに配置されている場合は、リージョン Persistent Disk ボリュームのスナップショットを作成するの手順に沿って操作します。
ディスクの再マウント
Windows VM にログインします。
PowerShell コマンド プロンプトを開き、
diskpart
ツールを実行します。PS C:\> diskpart
マウントするディスクを特定します。
DISKPART> list disk
select disk
コマンドを使用して、ディスクを選択します。DISKPART> select disk DISK_NUMBER
DISK_NUMBER
は、マウントするディスクの数に置き換えます。ディスクをマウントします。
DISKPART> online disk
読み取り専用フラグをディスクから削除する
必要に応じて、次の操作を行います。
Windows VM にログインします。
PowerShell コマンド プロンプトを開き、
diskpart
ツールを実行します。PS C:\> diskpart
ディスク内のすべてのボリュームを一覧表示します。
DISKPART> list volume
新しいボリュームを選択します。
DISKPART> select volume VOLUME_NUMBER
VOLUME_NUMBER
は、読み取りおよび書き込み可能として構成するボリュームの番号に置き換えます。読み取り専用フラグを削除します。
DISKPART> attr volume clear readonly hidden nodefaultdriveletter shadowcopy
diskpart
ツールを終了します。DISKPART> exit
ディスクが別の VM インスタンスのブートディスクである場合は、PowerShell コマンド プロンプトで、新しいディスク署名でブートディスク ファイルを同期します。
PS C:\> bcdboot DRIVE_LETTER:\Windows /s DRIVE_LETTER
DRIVE_LETTER
は、同期するボリュームのドライブ文字で置き換えます。たとえば、F:\
の場合はF
です。
次のステップ
- ブートディスクのスナップショットを取得した場合は、スナップショットから VM を作成できます。
- Windows Server を構成して、VM やインスタンス テンプレート用にカスタマイズした Windows Server イメージの作成に使用できるようにする方法については、カスタム Windows Server イメージを作成するをご覧ください。