Windows Server バックアップにおける容量と世代管理について

こんにちは。Windows プラットフォーム サポートの野村です。
今回は Windows Server バックアップにおける容量と世代管理についてご紹介します。
 

Windows Server バックアップは OS 標準で搭載されている機能です。

GUI とコマンド (Wbadmin.exe) によるバックアップ・リストアができます。

バックアップ データの保存形式として仮想ディスク (VHD または VHDX 形式) を使用し、VSS (ボリューム シャドウ コピー サービス) の機能を用いて複数世代のバックアップを保持できます。

バックアップ データの格納先として、[バックアップ専用のハードディスクにバックアップする]、[ボリュームにバックアップする] と [共有ネットワーク フォルダーにバックアップする] を指定できますが、格納先の種類により保持可能なバックアップの世代数が異なります。

バックアップ格納先での容量の圧迫を避けるために、バックアップの容量・世代数を制限したいとのお問い合わせをいただくことがあります。

本ブログでは、この世代数の管理の違いについてご案内いたします。
 

Backup
 

=============================
保持可能なバックアップの世代数について
=============================

それぞれのバックアップ格納先における世代管理について纏めると、以下の表のようになります。

バックアップ格納先 世代 世代数の変更 バックアップ格納先の容量が圧迫した場合の動作
[バックアップ専用のハードディスクにバックアップする] 最大 512 世代保存 変更不可 シャドウ コピーを保存する容量が足りないと最も古い世代から自動的に削除 (※1)
[ボリュームにバックアップする] 最大 512 世代保存 変更不可 シャドウ コピーを保存する容量が足りないと最も古い世代から自動的に削除 (※2)
[共有ネットワーク フォルダーにバックアップする] 最新 1 世代のみ保存 変更不可 バックアップに失敗

※1 世代数が 512 に達した場合も、同様に最も古い世代のシャドウ コピーから自動的に削除します。
※2 格納先がバックアップ専用ボリュームの場合は「バックアップ専用ボリュームにバックアップを取得する場合の制限値について」をご参照ください。
 

==============================
バックアップ データの容量を制限したい場合
==============================

ディスクをバックアップ専用として使用できず [ボリュームにバックアップする] を指定している環境において、他のデータ領域の圧迫を避けるために、バックアップ格納先として使用される領域・世代数を制限したいとのご要望をいただくことがあります。

明示的に指定して容量や世代数を制限 (ex. ○○GB まで / ××世代まで) することはできませんが、バックアップ領域に保存されるシャドウ コピーの容量は制限することができます。詳細は以下でご説明いたします。

Windows Server バックアップでは、バックアップの実データを Windows Server 2008 R2 以前の OS では VHD 形式、Windows Server 2012 以降の OS では VHDX 形式でバックアップ格納先に保存し、そこに保存してある前回のバックアップ データに対しての更新分はシャドウ コピーとして保持することで世代管理を行っています。

さらに、バックアップのリストのカタログ情報などをメタデータとして xml ファイルに保管しています。

具体的には、以下のイメージのように、WindowsImageBackup フォルダ配下に実際にファイルとして保存されているデータは最新の世代のもののみとなり、過去のデータはシャドウ コピーとして、システムで保護された System Volume Information に保存されています。
 

// バックアップ先ボリュームの保存イメージ

<バックアップ先ボューム>:\
|─ WindowsImageBackup <== 最新状態のバックアップ データとメタ データが保存
|─ System Volume Information <== シャドウ コピー (*)
 

バックアップで使用されるディスク容量としては、以下の合計値となります。
実データの仮想ディスク (VHD または VHDX) の容量 + シャドウ コピーの容量 + メタデータの xml ファイルの容量

バックアップ格納先の容量について制限可能なのは、上記のシャドウ コピーで利用される記憶域 (*) です。
ここの領域を制限することで、保持されるバックアップの世代数を減らすことができます。
 

--------------------------------------------------------------------------------------
シャドウ コピー記憶域の容量制限変更手順について
--------------------------------------------------------------------------------------

記憶域ボリュームの制限設定を変更するには以下の手順を実行します。
例として D:\ の設定変更手順を記載いたします。
 

1. [スタート] - [管理ツール] - [サーバー マネージャー] をクリックします。

2. "記憶域" - "ディスクの管理" と展開し、"ディスクの管理"の右クリック メニュー の"すべてのタスク"からシャドウ コピーの構成を起動します。

3. ボリューム D: を選択した状態で [設定] をクリックします。

4. 最大サイズ、制限値を設定します。
 

また、バックアップ データの容量の管理については、バックアップ データを削除することも考えられます。

しかしながら、バックアップ格納先にバックアップ専用ハードディスクまたはボリュームを指定した場合、Windows Server バックアップから任意のバックアップを削除できません。

この場合、diskshadow ユーティリティーと呼ばれるシャドウ コピーの管理ユーティリティーからは以下の手順で削除できます。
 

---------------------------------------------------------------------------------
任意の世代のシャドウコピーの削除手順について
---------------------------------------------------------------------------------

1. 管理者権限にてコマンド プロンプトを起動します。

2. diskshadow と入力し diskshadow ユーティリティを起動します。

3. delete shadows SET <セット ID> や delete shadows ID <シャドウ ID> コマンドを利用します。
<セット ID> や <シャドウ ID> に指定する値は list shadows all コマンドにて確認できます。
 

なお、削除対象のシャドウ コピーが一番古いものではない場合には、表示上のシャドウ コピーの削除のみが行われ System Volume Information 配下のファイルは削除が行われないため、使用領域は削減されません。

Diskshadow コマンドでは、全てのシャドウコピーを削除、一番古いシャドウ コピーを削除といった操作を行うこともできます。
詳細な手順は、以下のブログに記載させていただいています。

しかしながら、この方法では Windows Server バックアップにて作成されるバックアップのカタログからは削除されないため、"回復" を実行した際に、すでに存在しないシャドウ コピーのバックアップも選択可能となってしまいます。
この場合、リストアはできません。バックアップのシャドウ コピーが保存場所に見つからないためです。

次回のバックアップ取得時にバックアップの履歴は更新されます。運用時は十分ご注意ください。
 

// 参考情報
- vssadmin コマンドでシャドウ コピーが削除できない場合の対処方法について
https://blogs.technet.com/b/askcorejp/archive/2013/11/29/vssadmin.aspx
 

------------------------------------------------------------------------------------------------------------------
バックアップ専用ボリュームにバックアップを取得する場合の制限値について
------------------------------------------------------------------------------------------------------------------

Windows Server バックアップの世代管理について、バックアップ格納先がバックアップ専用ボリュームであった場合、標準では、バックアップ格納先のシャドウ コピーの記憶域の上限値が無制限となります。

それにより、バックアップ格納先ではシャドウ コピーにより空き容量が逼迫し、バックアップ データが増大した場合に VHDX が拡張できない場合があるため、シャドウ コピーの記憶域を制限することが推奨されます。

具体的には、シャドウ コピーの記憶域は、
「バックアップ格納先のボリューム サイズ - (バックアップ元のボリューム サイズ + 数 MB)」
に設定することを推奨しています。詳しくは、下記の例で説明します。

下記の図では、バックアップ専用ボリュームにバックアップを取得する際のボリュームの状態を、例として示します。
例の環境では、サーバーに 2 つのボリュームがあり、Windows Server バックアップを用いて、ボリューム C のバックアップをバックアップ専用ボリュームに繰り返し取得します。

例:バックアップ専用ボリューム

ボリューム C は、100 GB の容量で、現在 20 GB が使用されており、バックアップ専用ボリュームの容量は、200 GB です。

バックアップ格納先がバックアップ専用ボリュームであった場合、標準では、シャドウコピーの記憶域の制限が無制限になっているため、空き容量があるかぎりシャドウ コピーが保存されます。

その結果、バックアップ専用ボリューム の容量が逼迫し、ボリューム C のバックアップ データが増加した際には、VHDX を拡張することができずに、バックアップが失敗します。

バックアップ専用ボリュームとシャドウ コピー

この事象の対処策としては、バックアップ格納先のシャドウ コピーの記憶域容量を制限する必要があります。
バックアップ データの最大値は、「管理データ (カタログやログ データ) など数 MB のデータ + バックアップ元のボリュームのサイズ」となります。

そのため、シャドウ コピーの記憶域は、「バックアップ格納先のボリューム サイズ - (バックアップ元のボリューム サイズ + 数 MB)」に設定することをご検討ください。

シャドウ コピーの記憶域の制限

バックアップ元とバックアップ格納先の容量が同量以下の場合は、バックアップ データのサイズの増加を見込んだ上で、シャドウコピーの記憶域の上限値を設定することをご検討ください。
 

========
補足
========
運用時にバックアップ格納先の容量が不足してバックアップに失敗することがありますが、それ以外の要因でも失敗することがあります。

この原因が既知の不具合である場合、Windows Server バックアップに関連するモジュール (wbengine.exe、volsnap.sys および vssvc.exe) の修正プログラムを適用することで回避できる可能性があります。

以下にこれらの最新版 (2018 年 9 月 1 日時点) をご案内いたしますので、未適用の場合は予防保守の観点で適用をご検討ください。
 

– Windows Server 2008 R2

// wbengine.exe
// volsnap.sys
// vssvc.exe
Convenience rollup update for Windows 7 SP1 and Windows Server 2008 R2 SP1
https://support.microsoft.com/kb/en-us/3125574 https://support.microsoft.com/ja-jp/kb/3125574 (機械翻訳)
※ ロールアップ プログラムのため、ほかのモジュールの修正を含みます。

– Windows Server 2012

// wbengine.exe
July 2016 update rollup for Windows Server 2012
https://support.microsoft.com/en-us/kb/3172615 https://support.microsoft.com/ja-jp/kb/3172615 (機械翻訳)
※ ロールアップ プログラムのため、ほかのモジュールの修正を含みます。

// volsnap.sys
August 2014 update rollup for Windows RT, Windows 8, and Windows Server 2012
https://support.microsoft.com/en-us/kb/2975331 https://support.microsoft.com/ja-jp/kb/2975331 (機械翻訳)
※ ロールアップ プログラムのため、ほかのモジュールの修正を含みます。

// vssvc.exe
“VSS_E_PROVIDER_VETO” error occurs when VSS restore fails in Windows Server 2012
https://support.microsoft.com/en-us/kb/3137726 https://support.microsoft.com/ja-jp/kb/3137726 (機械翻訳)

– Windows Server 2012 R2

// wbengine.exe
August 30, 2018—KB4343891 (Preview of Monthly Rollup)
https://support.microsoft.com/en-us/kb/3140791 https://support.microsoft.com/ja-jp/kb/3140791 (機械翻訳)
※ ロールアップ プログラムのため、ほかのモジュールの修正を含みます。

// volsnap.sys
MinDiffAreaFileSize registry value limit is increased from 3 GB to 50 GB in Windows 8.1 or Windows Server 2012 R2
https://support.microsoft.com/en-us/kb/3145384 https://support.microsoft.com/ja-jp/kb/3145384 (機械翻訳)

// vssvc.exe
VSS restore fails when you use ResyncLuns VSS API in Windows Server 2012 R2-based failover cluster
https://support.microsoft.com/en-us/kb/3137728 https://support.microsoft.com/ja-jp/kb/3137728 (機械翻訳)
 

以上の通り、Windows Server バックアップにおける容量と世代管理についてお伝えいたします。
本ブログが皆様のお役に立てましたら、幸いです。
 

<参考情報>

- Windows Server バックアップ
https://technet.microsoft.com/ja-jp/library/cc754572(WS.10).aspx

- Windows 2008 R2 のバックアップと回復の概要
https://technet.microsoft.com/ja-jp/library/dd979562(v=ws.10).aspx

- サーバーをバックアップする
https://technet.microsoft.com/ja-jp/library/cc753528.aspx

- Backup Version and Space Management in Windows Server Backup
https://blogs.technet.com/b/filecab/archive/2009/06/22/backup-version-and-space-management-in-windows-server-backup.aspx