Exchange のバックアップについて知っておかなければならないすべてのこと* - パート 1
原文の記事の投稿日: 2012 年 6 月 5 日 (火曜日)
*質問するのをためらっていたあなたへ
ボリューム シャドウ コピー (英語) (VSS) を使用した Exchange データのバックアップのしくみがわかりづらいと感じているのはあなただけではありません。管理者は次のような疑問を持つでしょう。「イベント ログの "凍結" や "解凍" という用語は何を意味しているのだろう。Exchange VSS Writer とは何で、データベースに対してどのような処理を行っているのか。135 GB のデータベースのスナップショットを 60 秒未満で作成できるしくみはどのようなものだろう。」
このような疑問について調べたものの、答えを聞いてますますわからなくなってしまった方のために、ここではそれらの疑問を解決するための指針を示します。Exchange の VSS バックアップのしくみを理解するうえで、VSS 自体の基礎を理解することが重要です。これについての優れたドキュメントが TechNet および MSDN にいくつかあります。Windows Server コア チームのブログ「Ask the Core Team (英語)」にも記事があります。また、私の尊敬すべき同僚である Randy Monteleone がブログ記事の最初の方で VSS の基礎について非常にわかりやすくまとめています。この記事にも掲載されている VSS についての TechNet の優れた参考資料をここにも掲載しておきます。
How To: VSS Tracing – Randy Monteleone
https://blogs.technet.com/b/askcore/archive/2012/04/29/how-to-vss-tracing.aspx (英語)
How Volume Shadow Copy Service Works
https://technet.microsoft.com/ja-jp/library/cc785914(WS.10).aspx (英語)
Volume Shadow Copy Service
https://technet.microsoft.com/ja-jp/library/ee923636(WS.10).aspx (英語)
少なくとも VSS の基礎についてすでに理解している場合、このシリーズのパート 2 をお待ちください。パート 2 では、VSS Exchange バックアップで発生するイベントの詳細、および Exchange でそれらのイベントがどのようにアプリケーション イベント ログに記録されるかについて説明します。
VSS の基礎および Exchange Writer について簡単な参考資料が必要な方のために、上記の参考資料を補足するものとして、以下に図を使用してポイントをまとめました。
スナップショット
Exchange を含むすべてのアプリケーションにおいて、VSS ソリューションは、ハードウェア構成やソフトウェア構成によって大きく異なります。クローン スナップショット、COW スナップショット、ハードウェア ソリューション、ソフトウェア ソリューションなど、コア VSS サブシステムを基盤とするさまざまなテクノロジがあります。Exchange のバックアップを理解するために、ここでは多数のソリューションのうち、"書き込み時コピー (COW)" スナップショットという特定の種類のソリューションについて詳細に説明します。
Exchange の COW スナップショットベースの VSS バックアップでは、Exchange データがホストされているディスクのスナップショットが作成されます。バックアップ対象にかかわらず (1 つのデータベース ファイルといくつかのログだけであっても)、データが格納されているディスク全体のスナップショットが VSS によって作成されます。データが複数のディスクにまたがって存在している場合、たとえば Exchange データベースとログが別々のディスクに格納されている場合、これらすべてのディスクのスナップショットが VSS によって作成されます。
では "スナップショット" とは何でしょうか。ボリューム スナップショットは、"シャドウ ストレージ" 内の領域です。通常、シャドウ ストレージ自体は、ディスクの System Volume Information フォルダーに存在する小さな領域です。
ディスクのスナップショットが作成された時点以降にデータ ブロックが変更された場合、変更前のそのブロックのデータ (スナップショット作成時のデータ) のコピーがシャドウ ストレージの差分領域に書き込まれるまで、その変更内容は書き込まれません。このようにして、スナップショット作成時のディスク上のデータが、シャドウ ストレージ領域にブロックごとに保持されます。スナップショット データは、要求されたデータ ブロックが変更されていない場合は元のディスクから、変更されている場合は差分領域から取得できます。次の図に、この原理について示します。
ディスク E: には、午後 1 時に作成されたスナップショットがあります。
1 分後に、1 つのブロックに書き込みが行われますが、午後 1 時時点のデータが差分領域に保持されるまでは書き込まれません。
実際のディスクのデータが変更されると、午後 1 時時点のデータがシャドウ ストレージに書き込まれ、その時点のディスクの記録が保持されます。
次のステップが実行されます。
上図では、バックアップ サーバーがブロック 2 および 53 のスナップショットのデータを要求しています。午後 1 時時点のブロック 53 はスナップショットに保持されているため、シャドウ ストレージから直接コピーされます。ブロック 2 は午後 1 時から変更されていないため、VSS ドライバー VOLSNAP.SYS 経由でコピーされます。このドライバーは、NTFS.SYS ファイル システム ドライバーの下位にあるフィルター ドライバーのように動作します。ファイル システムの下位に位置する IRP スタック (カーネル メモリのディスク I/O を管理する部分) で動作するため、データのブロックの読み取り時に、ファイルが使用中であると NTFS に拒否されることがありません。また、VOLSNAP.SYS は、ブロックに対する書き込みが要求された場合に、それらのブロックが確実にシャドウ ストレージにコピーされるようにする機能も持っています。そのため、"書き込み時コピー" という名前が付いています。VOLSNAP.SYS の詳細については、Tim McMichael の次のブログ記事を参照してください。
Exchange / VSS / and differential block size...
https://blogs.technet.com/b/timmcmic/archive/2011/07/12/exchange-vss-and-differential-block-size.aspx (英語)
COW スナップショットの基礎について説明したので、Exchange においてどのように動作するか、および他のいくつかの重要な概念について説明します。
Microsoft Exchange Writer
Exchange データが格納されているすべてのディスクのスナップショットが VSS によって作成されることを説明しました。では、バックアップ アプリケーションは、どのディスクにデータが格納されているかをどのように判断するのでしょうか。多くの場合、管理者は、データ ファイルが格納されているディスクについて何も指定することなく、バックアップするデータベースを選択します。そのため、データ ファイルの場所についての情報や、VSS でスナップショットを作成する必要があるディスクについての情報を提供するしくみが必要になります。この情報によって、バックアップ アプリケーション (VSS リクエスター) は、バックアップ メディアに保持するためにスナップショットのどのデータ ファイルをコピーする必要があるかも判断できます。必要のないデータまでディスクからコピーしないようにする必要があるためです。
このためのメカニズムを提供するのが Microsoft Exchange VSS Writer です。すべてのアプリケーションの VSS ライターと同様 (多くの VSS ライターがあり、VSSADMIN LIST WRITERS を実行するとそれらを確認できます)、Exchange VSS Writer の第一の責務は、バックアップする必要があるデータ、特に要求された各データベースの EDB ファイル、ログ、およびチェックポイント ファイルをバックアップ アプリケーションに通知することです。これらの特定の Exchange データ ファイルについての情報は、 ライター メタデータ と呼ばれます。
(フル サイズ バージョンを表示するにはサムネイルをクリックしてください)
上図には、Exchange バックアップの初期のステップが示されています。Exchange Writer からバックアップ サーバー (リクエスター) に、ボリューム E: 上のフォルダーにデータベースがあり、そのデータベースのトランザクション ログが D: 上のフォルダーにあることが通知されます。バックアップ アプリケーションは、ジョブが進行すると、この情報に基づいてボリューム D: と E: のスナップショットを要求します。
Exchange VSS Writer には、VSS リクエスターにメタデータを提供する以外にも、重要な役割があります。必要なスナップショットを作成する間、ディスク上のデータベースおよびログへの書き込みを停止する (" 凍結 " する) 責務があります。通常、COW スナップショットを作成するにはほとんど時間がかかりません。最初は、実際のディスク上でブロックに変更があった場合にブロックを保持するためのシャドウ ストレージ内の領域を指定するだけだからです。ただし、時間がかからないとはいえ、最大で 1 分間ほどかかります。この時間があれば、スナップショット作成プロセスの開始と終了の間にディスク上でデータのブロックが変更されるには十分です。データのブロックが変更されたにもかかわらず、スナップショット作成開始時点での元データが保持されていない場合、これらのブロックは他のスナップショット データとの整合性が失われる可能性があります。特にログ、データベース、およびチェックポイント ファイル間でこの危険性があります。したがって、Exchange Writer は、インフォメーション ストア サービスや MS Exchange Replication サービスが、RAM の内容を凍結されたデータベース ファイルに書き込むことを防止します。インフォメーション ストア サービスの場合、Exchange Writer が VSS によるスナップショットの作成を許可する前に、現在のトランザクション ログ ファイル (Exx.log) が閉じられます。これにより、スナップショット作成の開始と完了の間にファイル データが一切変更されないことが保証されます。スナップショット作成が完了したら、データベースが " 解凍 " されます。データベースが解凍されると、RAM に保留されていた書き込み I/O が再度ディスクへのアクセスを許可されます。
凍結、解凍、およびスナップショット作成が完了するのに必要な時間に関する、アプリケーションの VSS ライターと VSS とのやり取りの詳細については、次のドキュメントを参照してください。
CVssWriter::OnFreeze method
https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa381563(v=vs.85).aspx (英語)
Exchange Writer の最後の主要な責務に、インフォメーション ストア サービス (パッシブ コピー バックアップの場合は MS Exchange Replication サービス) に対してバックアップの完了を通知すること、そして必要に応じて、ログの切り詰めやデータベースに対してバックアップ進行中でないとマークするなどの、バックアップ後タスクを実行することがあります。
このシリーズのパート 2 およびパート 3 では、Exchange のバックアップにおいて上記の要素がどのような役割を担うかについて詳細に分析します。また、生成されるアプリケーション イベント ログについて説明し、マウントされたデータベースのプロセスとパッシブ データベース コピーのプロセスを比較します。
これらの記事の内容に協力いただいた Michael Blanton、Tim McMichael、Randy Monteleone、Dave Vespa、Tom Kern に感謝します。
Jesse Tedoff
これはローカライズされたブログ投稿です。原文の記事は、「Everything You Need to Know About Exchange Backups* - Part 1」をご覧ください。