仮想マシン環境の DC で ActiveDirectory_DomainService ID: 1539 のイベントが記録された場合の対応について

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

Hyper-V 上の仮想マシン環境のドメイン コントローラー (DC) にて記録される、ActiveDirectory_DomainService ID: 1539 の警告イベントは無視してよいか、というお問い合わせをいただくことがあります。

今回はこのイベント ログの出力される原因および無視可能な場合の条件についてご紹介いたします。

1. 概要

仮想マシン環境の DC では、以下のイベントが記録されます。

ログの名前:   Directory Serviceソース:       Microsoft-Windows-ActiveDirectory_DomainServiceイベント ID:  1539レベル:       警告説明:Active Directory ドメイン サービスは、次のハード ディスク上の、ソフトウェア ベースのディスク書き込みキャッシュを無効にできませんでした。
ログの名前:   Systemソース:       diskイベント ID:  32レベル:       警告説明:ドライバーは、デバイス xxxxxx の書き込みキャッシュが有効であることを検出しました。 データが壊れる可能性があります。

本イベントは以下の構成のいずれかに該当している場合は無視していただいて問題ありません。

・Hyper-V ホストに接続されているディスクの書き込みキャッシュが無効化されている。
・Hyper-V ホストに接続されているディスクが Force Unit Access (FUA) をサポートしており、仮想マシン側の仮想ディスクも SCSI 接続で構成されている。

2. 仮想マシン環境にて本イベントが記録される原因

Active Directory はドライブの電源が切断され重要な更新が失われてしまうことを防ぐため、データベースやログ ファイルを格納する各論理ドライブのディスクの書き込みキャッシュを無効化します。

本イベントは IOCTL_DISK_SET_CACHE_INFORMATION コマンドにて該当デバイスの書き込みキャッシュの無効化に失敗した場合に出力されます。

しかしながら、仮想マシン環境における仮想ディスクは以下の理由のため、書き込みキャッシュの無効化の設定ができない仕様となっております。

・複数の仮想ディスクが、単一の物理ディスクに配置される可能性があり、すべての仮想ディスクが同一のキャッシュ設定を持つことが保証されないため
・仮想マシンのライブ マイグレーションや記憶域の移動により、仮想ディスクが別の物理ディスクに移動する可能性があるため

従いまして、仮想マシン環境にて仮想ディスクの書き込みキャッシュが無効化できない事象は想定された挙動であるため、本イベントが出力されることも想定された挙動となります。
無視の可否につきましては、後述しております Hyper-V ホストのハードウェア構成についてご確認いただく必要があります。

3. 無視可能な場合の条件

■ Hyper-V ホストに接続されたディスクが IDE 接続や ATA 接続など FUA をサポートしていないハードウェアの場合

Hyper-V ホストにて物理ディスクの書き込みキャッシュを無効化にすることで、データの整合性が保たれるため、本イベントは無視しても問題ありません。

■ Hyper-V ホストに接続されたディスクが FUA をサポートする SCSI 接続のハードウェアの場合

SCSI 環境では、Force Unit Access (FUA) と呼ばれるディスク キャッシュを使用せずに書き込みを行うフラグを付けた SCSI コマンドを利用することができます。FUA を利用した書き込みの処理は、直接ディスクへの書き込みが行われ、停電などの障害時にもデータの整合性を保つことができます。

仮想マシン環境でも SCSI 接続のディスクに Active Directory のデータベースを配置している場合は、Active Directory から FUA を利用した書き込みの I/O が発行され、その FUA が物理ディスクまで透過的に届けられます。よって、本イベントは無視しても問題ありません。

なお、第 1 世代の仮想マシンでは SCSI 接続のディスクからの起動ができませんので、C ドライブは必ず IDE 接続となります。C ドライブ配下に Active Directory のデータベースを配置する場合は、第 2 世代で仮想マシンが作成されている必要があります。

仮想マシン環境にて SCSI 接続のディスクをご利用いただけない場合は、FUA に対応していないハードウェアの対処と同様に、Hyper-V ホストにて物理ディスクの書き込みキャッシュを無効化していただく必要がございますので、ご注意ください。

また、お使いの SCSI 接続のディスクが FUA をサポートしているかどうかについては、ハードウェア ベンダーにご確認ください。

4. まとめと注意事項

以下に仮想マシン環境での本イベントの無視の可否を判断するために必要な対処策についてまとめました。

Hyper-V ホストに接続された物理ディスク
FUA をサポートしていないディスク FUA をサポートする SCSI ディスク

仮想マシンに接続された仮想ディスク

IDE 接続 Hyper-V ホストにて物理ディスクの書き込みキャッシュを無効化 Hyper-V ホストにて物理ディスクの書き込みキャッシュを無効化
SCSI 接続 Hyper-V ホストにて物理ディスクの書き込みキャッシュを無効化 対処不要 (Active Directory から FUA を利用した書き込み I/O 発行)

また、Windows Server 2008 R2 / Windows Server 2012 では、Hyper-V 環境の Active Directory のデータの整合性について、以下の修正が行われておりますので、本修正プログラムが適用されているかをご確認ください。

IDE に接続されている仮想ハード ディスクで HYPER-V ホスト サーバーで発生した、計画外の再起動との整合性の損失
https://support.microsoft.com/ja-jp/kb/2853952

[参考情報]
Hyper-V storage: Caching layers and implications for data consistency
https://support.microsoft.com/en-us/kb/2801713

仮想化ドメイン コントローラーの展開に関する考慮事項
https://technet.microsoft.com/ja-jp/library/dd348449.aspx

仮想ホスト環境で Active Directory ドメイン コントローラーをホストする場合の考慮事項
https://support.microsoft.com/ja-jp/kb/888794

Clarifications on KB 2853952, Server 2012 and Active Directory error c00002e2 or c00002e3
https://blogs.technet.microsoft.com/askpfeplat/2013/09/10/clarifications-on-kb-2853952-server-2012-and-active-directory-error-c00002e2-or-c00002e3/