Microsoftのボリュームシャドウコピー技術を活用した一貫性のあるバックアップ
アプリケーションが実行中の仮想マシンや物理マシンのバックアップを作成する際、特にファイルやデータベースへのデータ書き込みを頻繁に行うアプリケーションの場合は、バックアップデータの一貫性を確保することが不可欠です。バックアップデータの一貫性が確保されていれば、データの破損や遅延を招くことなく復旧を行うことができます。この目的のために、マイクロソフトはVSS技術を開発しました。
このブログ記事では、ボリュームシャドウコピーサービス(VSS)とは何か、その仕組み、そしてこの技術がWindowsベースの仮想マシンや物理マシンのバックアップにおいてなぜ重要なのかについて解説します。
VSSとは何ですか?
Windows オペレーティングシステムのネイティブ機能であるボリュームシャドウコピーサービス(VSS)は、アプリケーションの状態を反映した一貫性のあるバックアップの作成を可能にします。バックアップデータの一貫性を確保するために、以下の処理が行われます。
- VSS は、アプリケーションによる書き込み操作を一時的に停止します。
- メモリ内のバッファがディスクに書き込まれ、つまりフラッシュされ、ファイルシステムが凍結されます。
- Windows オペレーティングシステムでは、ボリュームスナップショット(シャドウコピーとも呼ばれる)が作成されます。
ボリューム・シャドウ・コピー(Volume Shadow Copy)は、ボリューム・スナップショット・サービスとも呼ばれ、一連の COM(コンポーネント・オブジェクト・モデル) Windows のインターフェースであり、さまざまなアプリケーション向けに一貫性のあるバックアップを作成するためのフレームワークを提供します。VSS は、Windows XP および Windows Server 2003 で初めてリリースされました。
VSSテクノロジーが必要な理由
アプリケーションデータの一貫性は、VM や物理サーバーのバックアップにおいて重要です。一貫性が確保されることで、仮想マシンや物理マシン上で実行されているアプリケーションが、バックアップから復元された後も完全に機能することが保証されます。
VSS を使用しない場合、一貫性のないバックアップが作成されます。このようなバックアップは、各ブロックをコピー時点の状態のまま単にコピーするだけで作成されます。データベースやシステムアプリケーションなどのアプリケーションによって、あるファイルが継続的に使用されていると仮定しましょう。 このアプリケーションは、ブロックの書き込みや削除によって、開かれているファイル内のデータを絶えず変更しています。ファイルの最初の部分がコピーされている間に、ファイルの他の部分で使用されているブロックは変化しています。ファイルの他の部分がバックアップリポジトリにコピーされる頃には、最初の部分のブロックはすでに変化してしまっています。その結果、一貫性のないデータブロックが得られ、特定の時点の状態を正確に反映したものではなくなってしまいます。
このような状況を回避する1つの方法は、 スナップショットベースの VMのバックアップ。バックアップ処理が開始されると、スナップショット、つまりVMの完全なコピーが作成されます。この処理中、すべてのVMディスク(これらは .vmdk (VMware環境内のファイル)が読み取り専用になります。バックアップ処理中に加えられた変更をマスターディスクに保存するため、VMware ESXiはメインのディスクに接続されたデルタファイルを作成します。 .vmdk ファイル。デルタファイルの作成が完了すると、バックアップソフトウェアは読み取り専用 .vmdk ファイル。バックアップ処理が完了すると、デルタファイルは .vmdk ファイル。
このアプローチは、内部ファイルストレージやWebサーバーなど、負荷がそれほど高くないファイルシステムではうまく機能するかもしれません。しかし、特定のトランザクションが実行中で、I/O(入出力)操作が行われている最中にバックアッププロセスが開始されると、データが失われる可能性があります。Microsoft SQL Server、Active Directory、Exchange Serverなどのアプリケーションやデータベースを使用している場合、単にファイルを閉じてからデータを追加することはできません。 そこで、ボリューム・シャドウ・コピー・サービス(VSS)が役立ちます。この技術により、開かれて使用中のファイルについて、その整合性や使用性を損なうことなく、特定の時点の状態を反映したコピーを作成することができます。
ボリュームシャドウコピーサービスの仕組み
VSSの仕組みを理解するには、まずこの機能を構成する要素について確認する必要があります。VSSの主要な構成要素は以下の通りです。
- その VSSプロバイダー VSSの中核となるコンポーネントであり、ボリュームのシャドウコピー(スナップショット)を作成します。VSSプロバイダーには、ソフトウェア実装とハードウェア実装の2種類があります。コピーオンライト方式のソフトウェアVSSプロバイダーは、Windows OSに組み込まれています。ハードウェアプロバイダーは通常、SAN(ストレージエリアネットワーク)ストレージで使用されます。ハードウェアプロバイダーは、シャドウコピーを作成する際にホストOSの負荷を軽減します。
- その 作家たち これらは、一貫性を確保するためにファイルやデータベースにデータを書き込むソフトウェアコンポーネントです。VSSをサポートする各アプリケーションは、インストール時にオペレーティングシステムに独自のライターを追加します。VSSライターを提供するアプリケーションの例としては、Microsoft SQL Server や Exchange Server などがあります。
- その 依頼者 これは、VSS プロバイダーに対して、処理(シャドウコピーの作成、削除、またはインポート)の開始または停止を指示するソフトウェアコンポーネントです。この要求元としては、Windows のネイティブコンポーネント(NTBackup や Hyper-V 用スナップショットマネージャーなど)や、バックアップソフトウェアなどのサードパーティ製アプリケーションが考えられます。
- その VSSサービス これは、他のすべてのコンポーネントが相互に通信し、連携して動作できるようにするOSのコンポーネントです。
スナップショットはボリュームレベルで作成され、VSS はブロック単位で動作します(ファイルはブロックを使用して構成されています)。そのため、ファイルやフォルダのスナップショットを作成することはできません。シャドウコピーは、同じボリューム上または別のボリューム上に保存することができます。ボリューム上でシャドウコピーの保存用に割り当てられた領域は、”差分領域(diff area)”と呼ばれます。
“System Volume Information”フォルダは、VSS シャドウコピーファイルを保存するために使用されます。これらのファイルには、次のような識別子が付いています。 3517271a-d214-3a47-c5ea-01137a4fe675.
VSS テクノロジーは、ディスクボリュームの特定時点のコピー(スナップショット)を保存するための Windows ネイティブツールとして利用できます。このコピーを使用することで、変更を元に戻し、ボリューム全体または特定のファイルを保存された状態に戻すことができます。とはいえ、より信頼性の高いデータ保護のためには、外部メディアに保存する本格的なバックアップを作成することをお勧めします。
VSS は増分処理であり、Windows は複数のボリュームスナップショットを連続して作成することができます。 最初のシャドウコピーを作成した後、VSS はデータを 16 KB のブロックに分割して、ディスク上の変更を追跡します。ディスクに変更がある場合、このサービスはそのブロック全体をシャドウコピーに書き込みます。その結果、新しいスナップショットを作成するたびにデータセット全体をコピーする必要はなく、変更されたブロックのみがコピーされます。
VSSの主な要件と制限事項:
- VSSスナップショットを作成するには、少なくとも300 MBのディスク容量が必要です。
- ボリュームスナップショットの最大数は、デフォルトで64です。
- Windows システムによって、ボリューム領域の 10% がシャドウコピー用に割り当てられます。
なお、バックアップアプリケーションによって作成されたVSSスナップショットは、通常、バックアップジョブが完了すると削除されます。
VSSシャドウコピーを管理するためのネイティブツール
Windowsのネイティブツールを使用して、ボリュームシャドウコピーを管理することができます。これらのツールがスナップショットとどのように連携するかを理解することで、VSSテクノロジーをより深く理解し、発生しうる問題(たとえば、バックアップ完了後に一時的なVSSスナップショットが削除されない場合など)のトラブルシューティングに役立ちます。
WindowsのGUIでは一部のVSSオプションが利用可能ですが、すべてのオプションはコマンドラインから利用でき、私たちにとってはそちらの方が興味深いでしょう。Windows PowerShellまたはCMDで使用できるVSSツールは2つあります:
vssadmin– Windows XP以降(Windows 10を含む)のすべてのWindowsバージョンで利用可能ですが、Windows 8は除きます。diskshadow– Windows Server 版でのみ利用可能です。これは、 vssadmin, これにより、対話モードでの作業だけでなく、スクリプトの作成も可能になります。
なお、これら2つのユーティリティは別のものであり、異なる状況で動作することに注意してください。で作成されたシャドウコピーは vssadmin では管理できません diskshadow その逆も同様です。別のツールで作成されたスナップショットを表示することはできますが、それに対して何らかの操作を行うことはできません。
ボリュームシャドウコピーサービス(VSS)API を利用することで、バックアップアプリケーションが VSS を使用して、バックアップデータの一貫性を確保するためのアプリケーション対応バックアップを作成できるようになります。
Windows を実行している VMware 仮想マシンでは、ゲストの Windows オペレーティングシステム内で VMware VSS コンポーネントを VSS ドライバーとして使用し、クワイエスシングを行います。このドライバーは、 VMware Tools をインストールする. それ以外のケースでは、古いバージョンの Windows を使用する場合、SYNC ドライバーが使用されます。以下に サポートされているゲストOSの一覧 VMware環境におけるアプリケーションを意識したクワイエシングのためのシステム。
シャドウコピーの作成方法
シャドウコピー(ボリュームスナップショット)が作成されると、そのサイズは 0 バイトになります。新しいデータが書き込まれると、そのデータは(本来あるべき場所である)ディスクに書き込まれますが、古いデータはシャドウコピーに書き込まれるため、後でその古いデータを復元することができます。その結果、シャドウコピーのサイズは大きくなります。
スナップショットの作成時にデータを書き込む主な方法は 2 つあります:
Redirect on write (RoW): スナップショット(シャドウコピー)に新しいブロックを書き込み、ディスク上のどのブロックに書き込むべきかという情報を含むメタデータを保存します。このアプローチでは、データの書き込みは高速ですが、読み取りは低速になります。スナップショットが作成された時点の初期状態に戻す必要がある場合、スナップショットを削除することで数秒で復元できます(ほぼ瞬時です)。RoWアプローチは、 VMの仮想ディスクのスナップショットを作成する (VMDK) を VMware ESXi および VMware Workstation で使用します。Copy on Write (CoW): ディスク上の必要な場所に新しいブロックを書き込み、書き換えられたブロックの内容をスナップショットに送信します。書き込みは遅いですが、読み取りは高速です。以前のスナップショット(以前のデータ状態)は数秒で(ほぼ瞬時に)削除されます。VSSスナップショットでは、CoW方式が採用されています。
ディスクにデータを書き込むことができるアプリケーションは数多く存在するため、マイクロソフトはVSSを用いて統一されたインターフェースを構築し、スナップショットの作成を開始した後、すべてのアプリケーションに対してスナップショットが作成されようとしていることを通知するようにしました。この通知メッセージの趣旨は、”システムがスナップショットを作成します。書き込み処理を停止し、書き込みバッファをディスクにフラッシュして、データを一貫性のある状態に整えてください”というものです。
VSSスナップショットを作成するワークフローは以下の通りです:
- VSSリクエスターは、通信可能な利用可能なサービスを調べ、ライターを列挙し、メタデータを収集します。
- ライターのリストを収集した後、依頼者はVSSプロバイダーと通信し、どのデータについてスナップショットを作成したいか、およびスナップショットをどこに配置すべきかを伝えます。ほとんどの場合、スナップショットは元のディスク上の同じボリュームに配置されます。また、場合によっては、SANハードウェアプロバイダーが”ストレージスナップショット”と呼ばれる、スナップショット専用の別のボリュームを作成することもあります。
-
バックアップの準備。このステップでは、(メタデータを取得した後)VSSライターの実際のステータスを確認し、ライターが順番に処理を実行しなければならない最も重要な操作に備えます。 ライターには、スナップショットの作成準備を行うよう通知されます。一貫性のあるデータコピーを作成できるように、システムバッファがフラッシュされ、アプリケーションがフリーズされます。各ライターは、デフォルトで割り当てられた60秒の時間内に処理を完了する必要があります。Microsoft Exchange Serverでは、この操作に割り当てられる時間はわずか20秒です(この時間はMicrosoftによって設定されています)。
注: 20 秒は短い時間です。アプリケーションがこの時間内に処理を完了できない場合、ライターはエラーを返し、スナップショットは作成されません。ストレージのパフォーマンスがこの時間制限内に処理を完了するのに不十分な場合は、ハードウェアのアップグレードを試みて、この問題を解決することができます。 たとえば、HDDからSSDストレージデバイスに変更することができます。あるいは、他のワークロードを別のストレージに移行し、Microsoft Exchange Serverを実行しているマシン専用にストレージを割り当てることも試してみてください。ログを確認して、どのライターがスナップショットの作成タスクに失敗したかを特定してください。
-
すべてが正常で、システムの動作が一時停止している場合、VSSはプロバイダーに対してシャドウコピーの作成が可能であることを通知します。スナップショットの作成には10秒しかありません。この期間中、ファイルシステムのI/O要求は一時的に利用できなくなります。この時間帯は、VMのスナップショットを作成することも可能です。10秒が経過すると、すべてのライターの動作制限が解除され、入出力(I/O)操作が再開されます。
注: VSS プロバイダーがシャドウコピーのコミットに 10 秒以上かかった場合、操作は失敗します。
- VSS は、アプリケーションに対して、I/O 要求の凍結を解除し、ディスクへのデータ書き込みを再開できることを通知します。バックアップ アプリケーションを使用しており、Windows VSS サービスを使用したバックアップが作成されている場合、VSS スナップショットを削除することができます。この操作は、バックアップ アプリケーション自体によって実行できます。あるいは、次のコマンドを使用してボリューム スナップショットを削除することもできます。
diskshadowまたはvssadmin.VSSに関する問題が発生した場合、他の方法が効かないときは、多くの場合、マシンを再起動することで問題を解決できます。 時間制限に関連する問題(たとえば、スナップショットの作成に10秒しかかからないなど)のいくつかは、ディスクデバイスを含むハードウェアのアップグレード、または負荷の軽減によって解決できます。
手動でスナップショットを作成し、割り当てられた20秒以内に完了するかどうかを確認してください(Exchange Serverを例として)。失敗した場合は、再起動して負荷を軽減し、再度試してください。
Windows Server 2012 以降、VSS は Windows の SMB ファイル共有をサポートしています。VSS テクノロジーはファイル共有において非常に有用です。これは、ユーザーやアプリケーションによってファイルへの書き込みが継続的に行われる可能性があるため、VSS なしでは共有フォルダのバックアップが困難になるからです。 NAKIVO Backup & Replication 10.7は対応しています ファイル共有のバックアップ.
NAKIVOのソリューションにおけるボリュームシャドウコピーサービスの仕組み
VSSの一般的な仕組みについてはすでに解説しました。それでは、次のような専用のバックアップソフトウェアを使用してVMware vSphereの仮想マシンのバックアップを作成する場合、VSS技術がどのように機能するのかを見ていきましょう。 NAKIVO Backup & Replication.
簡単に言えば、ボリューム・シャドウ・コピー・サービス(VSS)は次のように動作します。要求元がVSSプロバイダーを起動します。プロバイダーは、書き込み元に対してデータをログファイルに書き込むようリダイレクトし、ボリュームのスナップショットの作成を開始します。要求元がプロバイダーに停止信号を送信すると(通常はスナップショットの準備が完了した後)、プロバイダーはログファイルからボリュームへのデータの転送を開始します。
この場合、 NAKIVO Backup & Replication VSS を使用して VMware vSphere VM をバックアップする際、VSS リクエスタとなります。
- VMのバックアップが開始される前に、NAKIVOソリューションはVSSライターを介してデータを書き込みます。
- バックアップが開始されると、 NAKIVO Backup & Replication VSSプロバイダに対して処理を開始するよう要求します。ボリュームが”フリーズ”している間、ライターはデータをログファイルにリダイレクトします。
- NAKIVO Backup & Replication VMレイヤーでのスナップショットの作成を開始します。VMFSストレージの負荷状況によっては、数秒から数分かかる場合があります。この間も、ライターはログファイルへの書き込みを継続します。
- VMのスナップショットが正常に作成されました。 NAKIVO Backup & Replication、依頼者はプロバイダーに対し、作業を中止するよう信号を送る。
- VSS プロバイダーは、ログファイルからの変更をボリュームに反映します。 NAKIVO Backup & Replication VMスナップショットのデータブロックをバックアップリポジトリにコピーします。
バックアップデータの一貫性を確保するためのアプリケーション対応モードは、ウィザードの
Options手順。これにより、Windows を実行しているマシンで VSS を有効にし、そのマシンのバックアップが可能になります。
結論
ボリューム・シャドウ・コピー・サービス(VSS)は、VMのバックアップの一貫性を確保するための優れた技術ですが、Windowsベースのマシンでのみ機能します。Linuxベースのマシンで一貫性のあるバックアップを作成するには、特別な”プレフリーズ”および”ポストソー”スクリプトを実装する必要があります。NAKIVOのソリューションでは、Linuxサーバーやワークステーション向けの自動化された一貫性のあるバックアップも提供しています。



