Windows 永続ディスク スナップショットの作成


Compute Engine では、スナップショットを使用して永続ディスクのデータをバックアップできます。スナップショットは増分的であるため、完全な永続ディスク イメージを作成する場合と比べて、作成時のパフォーマンスが高く、ストレージ料金の総額も低くなります。

始める前に

Windows VSS スナップショットの作成

VSS スナップショットは、インスタンスの停止や永続ディスクの切断を行うことなく作成でき、VSS 対応アプリがインストールされているシステムでのバックアップと復旧を目的としています。

VSS スナップショットは通常の永続ディスクのスナップショットと同じ料金であり、スナップショットの合計サイズに対してのみ請求されます。

制限事項

  • VSS スナップショットは、イメージ バージョンが v20160810 以降の Windows インスタンスでのみ動作します。インスタンスのイメージがそれより古い場合は、通常のスナップショットを作成してください。
  • 永続ディスクは、NTFS、exFAT、または ReFS のファイル システムを使用する必要があります。
  • VSS スナップショットがデータの保存に役立つのは、整合性のあるデータ バックアップを作成するために調整可能な VSS 対応アプリケーションを実行している場合だけです。
  • VSS スナップショット オペレーションが 300 秒以内に完了しない場合、スナップショットはタイムアウト エラーで失敗します。

スナップショットの作成

Console

  1. [スナップショットの作成] ページに移動します。
  2. スナップショットの [名前] を入力します。
  3. 必要に応じて、スナップショットの [説明] を入力します。
  4. [ソースディスク] で、スナップショットを作成する既存のディスクを選択します。
  5. デフォルトのスナップショットのストレージ ロケーションを使用する場合は、この手順をスキップします。それ以外の場合は、デフォルト以外のストレージ ロケーションを使用します。

    1. [場所] で、スナップショットを [マルチリージョン] ロケーションに保存するか、[リージョン] ロケーションに保存するかを選択します。
    2. 使用する特定のリージョンまたはマルチリージョンを選択します。ソースディスクに最も近いリージョンまたはマルチリージョンを使用するには、[ディスクの場所に基づく] を選択します。
  6. [VSS を有効化] オプションをオンにして、このスナップショットでボリューム シャドーコピー サービスが使用されるように指定します。

  7. [作成] をクリックします。

gcloud

VSS スナップショットを作成するには、gcloud compute disks snapshot コマンドを使用して --guest-flush フラグを指定します。

gcloud compute disks snapshot [DISK_NAME] --guest-flush
  • [DISK_NAME] は、スナップショットを作成するゾーン永続ディスクの名前で置き換えます。

リージョン永続ディスクの VSS スナップショットを作成するには、--region [REGION] を上記のコマンドに追加し、[REGION] をリージョン永続ディスクの配置先リージョンで置き換えます。

gcloud コマンドライン ツールは、このオペレーションに対して READYFAILED のステータスが返されるか、最長タイムアウトに達してスナップショットの最新の既知情報が返されるまで待機します。

API

スナップショットを作成するときには、VSS スナップショットを作成することを示す ?guestFlush=true パラメータを指定します。

  • ゾーン永続ディスクの VSS スナップショットを作成するには、compute.disks.createSnapshot メソッドに対して POST リクエストを発行します。

    POST  https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/disks/[DISK_NAME]/createSnapshot?guestFlush=true
    

    ここで

    • [PROJECT_ID] はプロジェクト ID です。
    • [ZONE] は、ゾーン永続ディスクが配置されているゾーンです。
    • [DISK_NAME] は、VSS スナップショットを作成するゾーン永続ディスクの名前です。
  • リージョン永続ディスクの VSS スナップショットを作成するには、compute.regionDisk.createSnapshot メソッドに対して POST リクエストを発行します。

    POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/disks/[DISK_NAME]/createSnapshot?guestFlush=true
    

    ここで

    • [PROJECT_ID] はプロジェクト ID です。
    • [REGION] は、リージョン永続ディスクが配置されているリージョンです。
    • [DISK_NAME] は、VSS スナップショットを作成するリージョン永続ディスクの名前です。

省略可: ディスクを読み取り / 書き込み可能としてマークする

VSS スナップショットの作成時に、Windows Server はスナップショット内のボリュームを読み取り専用としてマークします。VSS スナップショットから作成する新しい永続ディスクも読み取り専用モードに設定されます。

これにより、問題が発生する場合があります。たとえば、既存のブートディスクの VSS スナップショットから作成した新しいブートディスクで VM インスタンスを作成すると、新しいブートディスクの読み取り専用フラグによって VM インスタンスが正常に起動できなくなります。

この問題を回避するには、次の手順に沿って VSS スナップショットから作成したすべての新しいディスクから読み取り専用フラグを削除します。

  1. ディスクが VM インスタンスにアタッチされていることを確認します。

    • VSS スナップショットから作成したディスクが非ブート データディスクである場合は、ディスクを新規または既存の VM インスタンスにアタッチできます。
    • VSS スナップショットから作成したディスクがブートディスクであり、それを使用して VM インスタンスを起動する場合は、ディスクを一時的に別の既存の VM インスタンスにアタッチする必要があります。以下の手順が完了したら、一時的にアタッチした VM インスタンスからディスクの接続を解除します。これで、このディスクを使用して新しい VM インスタンスを起動できるようになります。
  2. ディスクにアタッチした Windows VM インスタンスにログインします。

  3. PowerShell コマンド プロンプトを開き、diskpart ツールを実行します。

    PS C:\\> diskpart
    
  4. マウントするディスクを特定します。

    DISKPART> list disk
    
  5. select disk コマンドを使用して、ディスクを選択します。

    DISKPART> select disk [DISK_NUMBER]
    

    [DISK_NUMBER] は、マウントするディスクで置き換えます。

  6. ディスクをマウントします。

    DISKPART> online disk
    
  7. ディスク内のすべてのボリュームを一覧表示します。

    DISKPART> list volume
    
  8. 新しいボリュームを選択します。

    DISKPART> select volume [VOLUME_NUMBER]
    

    ここで、[VOLUME_NUMBER] は読み取り / 書き込み可能に構成する必要があるボリュームです。

  9. 読み取り専用フラグを削除します。

    DISKPART> attr volume clear readonly hidden nodefaultdriveletter shadowcopy
    
  10. diskpart ツールを終了します。

    DISKPART> exit
    
  11. ディスクが別のインスタンスのブートディスクである場合は、ブートディスク ファイルを新しいディスク署名と同期します。

    PS C:\\> bcdboot [DRIVE_LETTER]Windows /s [DRIVE_LETTER]
    

    [DRIVE_LETTER] は、同期するボリュームのドライブ文字で置き換えます(F:\ など)。

VSS を使用せずにスナップショットを作成する

Windows インスタンスにアタッチされているディスクのスナップショットを、VSS を使用せずに作成したい場合があります。

VSS を使用せずに Windows スナップショットを作成するには、以下の手順に沿って操作します。

  1. クリーンなスナップショットを作成するためのシステムを準備する
  2. スナップショットの作成
  3. ディスクの再マウント
  4. ディスクを読み取り / 書き込み可能としてマークする

クリーンなスナップショットを作成するためのシステムを準備する

永続ディスクのスナップショットを作成する前に、取得するスナップショットが希望する永続ディスクの状態と一致していることを確認します。永続ディスクが「クリーンでない」状態でスナップショットを取ると、ディスク チェックが強制的に行われ、場合によってはデータを損失する可能性があります。ファイル システムを同期してマウントを解除することを検討してください。

ファイル システムの同期

アプリケーションがディスクにデータの書き込みを行っているなど、永続ディスクのマウント解除ができない場合は、ファイル システムを同期してディスク バッファをフラッシュできます。ファイル システムを同期するには次のようにします。

  1. Windows インスタンスにログインします。
  2. 同期ツールをダウンロードし、インストールします。
  3. アプリケーションの永続ディスクへの書き込みを停止します。
  4. コマンド プロンプトのアイコンを右クリックし、[管理者として実行] を選択してコマンド プロンプトを管理者として実行します。
  5. コマンドライン ターミナルで、以下のコマンドを実行します。

    PS C:\\> sync [DRIVE_LETTER]
    

    [DRIVE_LETTER] は、同期するボリュームのドライブ文字で置き換えます(F:\ など)。

ディスクのマウント解除

  1. Windows インスタンスにログインします。

  2. PowerShell コマンド プロンプトを開き、diskpart ツールを実行します。

    PS C:\\> diskpart
    
  3. マウントを解除してスナップショットを作成するディスクを特定します。

    DISKPART> list disk
    
  4. 次に、確認したディスク番号を使用してディスクを選択します。

    DISKPART> select disk [DISK_NUMBER]
    

    [DISK_NUMBER] は、再マウントするディスクで置き換えます。

  5. 最後に、ディスクのマウントを解除します。

    DISKPART> offline disk
    

スナップショットの作成

ディスクの再マウント

  1. Windows インスタンスにログインします。

  2. PowerShell コマンド プロンプトを開き、diskpart ツールを実行します。

    PS C:\\> diskpart
    
  3. マウントするディスクを特定します。

    DISKPART> list disk
    
  4. select disk コマンドを使用して、ディスクを選択します。

    DISKPART> select disk [DISK_NUMBER]
    

    [DISK_NUMBER] は、マウントするディスクで置き換えます。

  5. ディスクをマウントします。

    DISKPART> online disk
    

読み取り専用フラグをディスクから削除する

  1. ディスク内のすべてのボリュームを一覧表示します。

    DISKPART> list volume
    
  2. 新しいボリュームを選択します。

    DISKPART> select volume [VOLUME_NUMBER]
    

    [VOLUME_NUMBER] は、読み取り / 書き込み用に構成する必要があるボリュームで置き換えます。

  3. 読み取り専用フラグを削除します。

    DISKPART> attr volume clear readonly hidden nodefaultdriveletter shadowcopy
    
  4. diskpart ツールを終了します。

    DISKPART> exit
    
  5. ディスクが別のインスタンスのブートディスクである場合は、ブートディスク ファイルを新しいディスク署名と同期します。

    PS C:\\> bcdboot [DRIVE_LETTER]Windows /s [DRIVE_LETTER]
    

    [DRIVE_LETTER] は、同期するボリュームのドライブ文字で置き換えます(F:\ など)。

次のステップ