vssadmin コマンドでシャドウ コピーが削除できない場合の対処方法について

こんにちは。Windows プラットフォーム サポートの石田です。

 

最近、ローカル ドライブに保存されているシャドウ コピーのデータを削除したいが行えないというお問い合わせをいただきました。実は、シャドウコピーにはいくつかの種類があり、特定のシャドウ コピーに対しては特定のツールを使わないと削除できない場合があります。いただいたお問い合わせの現象や背景を踏まえて解説します。

 

現象

==========

Windows Server 2008 や Windows Server 2008 R2 にて、ローカル ドライブにバックアップデータを保管している。

共有フォルダへのバックアップとは異なり、複数のバージョンのバックアップ データが保管されていることを確認した。空き領域の確保のため古いシャドウ コピーを vssadmin delete shadows コマンドで削除しようとしたが、バックアップにより作成されたシャドウ コピーは削除されなかった。

まずはじめに、シャドウ コピーの種類と vssadmin delete shadows コマンドにてシャドウ コピーが削除されなかった理由について説明します。

 

シャドウ コピーの種類について

=================================

vssadmin list shadows コマンドにて確認できるシャドウ コピーには大きく分けて以下の 2 つの種類があります。

 

a. 共有フォルダーのシャドウ コピー機能の利用により作成されるシャドウ コピー

b. アプリケーションなどからの要求で作成されるシャドウ コピー

  
※ Windows Server バックアップで作成されるシャドウ コピーは b. に分類されます。

 

vssadmin delete shadows にて、削除可能なのは、a. のシャドウ コピーです。

一方、 b. のアプリケーションなどからの要求にて作成されるシャドウ コピーを明示的に削除するには、diskshadow ユーティリティを利用します。

 

シャドウ コピーが残る理由について

=================================

Windows Server バックアップにて、ローカル ドライブにバックアップを取得すると最新の世代は VHD ファイルとして保存されます。この時、バックアップ データの世代管理のために、バックアップの保存先にシャドウ コピーが作成されます。こちらは、世代管理に使用されており、バックアップ後に削除されないためにこの現象が発生します。

 

バックアップの保存先の違いについては、以下の参考資料を参照してください。

 

- 参考情報

Windows Server のバックアップ まとめ

https://blogs.technet.com/b/infrajp/archive/2011/03/18/windows-server.aspx

 

Windows Server バックアップの概要

https://technet.microsoft.com/ja-jp/library/cc732091.aspx

 

保管されるシャドウ コピーの合計サイズは、シャドウ コピー記憶域の最大サイズの設定により異なります。この現象を回避するには、最大サイズの設定を “制限なし” から ”制限値” に変更し、任意のサイズを設定することにより、空き領域を確保することが可能です。

 

但し、シャドウ コピー記憶域の最大サイズの設定をする際には、運用にあわせた見積もりが必要なため、何か他に対応はないか。という疑問が発生します。そのため、一時的に diskshadow コマンドにてシャドウ コピーを削除して空き領域を確保する方法をご紹介します。

 

シャドウ コピー削除手順について

=================================

diskshadow ユーティリティは Windows Server 2008 以降に標準で実装されています。

Windows Server 2003 や Windows 7 ではこの方法は利用できません。

 

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

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

3. 削除したいシャドウ コピーにあわせ delete shadows コマンドを実行します。

 

以下に削除の実行例をご案内します。

 

実行例 1)

S ドライブの一番古いシャドウ コピーから 1 世代ずつ削除する場合は delete shadows oldest コマンドを実行します。

 

>diskshadow

>delete shadows oldest S:

 

実行例 2)

S ドライブの全てのシャドウ コピーを削除する場合には delete shadows volumeコマンドを実行します。

 

>diskshadow

>delete shadows volume S:

実行例 3)

特定のシャドウ コピーを削除するには delete shadows SET <セット ID> や delete shadows ID <シャドウ ID> コマンドを利用します。

<セット ID> や <シャドウ ID> に指定する値は list shadows all コマンドにて確認が可能です。

 

各コマンドの詳細については、delete /? にてヘルプを参照するか、以下の参考情報を参照してください。

 

- 参考情報

Delete shadows

https://technet.microsoft.com/en-us/library/cc754915(v=ws.10).aspx

 

Diskshadow

https://technet.microsoft.com/en-us/library/cc772172(v=ws.10).aspx