Ask CORE

Microsoft Japan Windows Technology Support

Windows Server 2012 以降の OS でイベント ログに、エラー Microsoft-Windows-Defrag ID:257 (0x8900002D) が記録される

こんにちは。Windows プラットフォーム サポートの加藤です。
本日は、よくお問い合わせをのある Windows Server 2012 以降の OS でイベント ログ (アプリケーション) に、エラー Microsoft-Windows-Defrag ID:257 (0x8900002D) が記録される件についてご紹介します。

<事象>
==============================
以下の条件を満たす環境で、OS でイベント ログ (アプリケーション) に、エラー Microsoft-Windows-Defrag ID:257 (0x8900002D) が記録される事象が報告されています。

1. Windows Server 2012 以降の OS
2. シン プロビジョニング対応ディスクを使用している。
※ 仮想ディスクもシン プロビジョニング対応ディスクとして認識される場合があります。そのため、Azure 上の仮想マシンでも発生します。

記録されるイベント ログ詳細
—————————-
ソース:           Microsoft-Windows-Defrag
イベント ID:       257
レベル:           エラー
説明:
エラーが発生したため、ボリューム ボリューム (D:) は最適化されませんでした: スラブが 8 MB 未満の場合は、スラブの統合とスラブの解析のどちらも実行されません。 (0x8900002D)
—————————-

Windows Server 2012 環境では既定でデフラグ タスクがスケジュールされており本イベントは当該タスクが動作した際に記録されます。

<原因>
==============================
本イベントは KB2964429 (または、本修正を含むロールアップ) を適用した環境で、シン プロビジョニング対応ディスクにデフラグ (スラブ統合) を実行した際に、対象ボリュームのスラブ サイズが 8 MB 未満の場合に記録されるイベントです。
本イベントのメッセージは、デフラグ対象のボリュームのスラブ サイズが8 MB未満で構成されている場合には、ストレージ デバイスによる記憶域の管理が効率的に行われるため、デフラグ コマンドによるスラブの統合は不要であると判断し実行されなかったことを示します。
そのため、イベント ログへエラーとして記録されますが、上述の通り、対象ボリュームがシン プロビジョニング対応ディスクであり、かつスラブ サイズが8 MB 未満の場合には想定された動作となるため、システムに影響はなく無視いただいて問題はございません。

文書番号: 2964429
Storage Optimizer memory use increases when it runs on thin provisioned LUNs
https://support.microsoft.com/en-us/kb/2964429
//
Neither Slab Consolidation nor Slab Analysis will run if slabs are less than 8 MB.
This is expected behavior because slab consolidation and slab analysis has been disabled on thin provisioned LUNs that have a slab size of less than 8 MB.
Thin provisioned LUNs that have a smaller slab size manage space more efficiently, and the benefits of defragmenting them are not as great.
//

スラブとは、シン プロビジョニングディスクで使用される管理単位であり、ストレージはこのスラブ単位で、ディスクの割り当て、解放を行います。
例えばスラブのサイズが 256 MB であった場合、10 MB のデータが書き込まれると 256 MB 拡張されることになります。
スラブの統合は、スラブ上のデータを最適化し、空いたスラブを解放します。
スラブサイズが 8 MB 以下である場合、ストレージは効率よくスラブを管理できるため、最適化するメリットは大きくないため、スラブの統合は実施されません。

なお、当該のディスクがシン プロビジョニング対応ディスクであるかは、以下の GUI から確認できます。

1. [ファイル名を指定して実行] もしくは [コマンド プロンプト] で dfrgui.exe を実行します。
2. デフラグの GUI が表示されますので、[メディアの種類] を確認します。
3. [メディアの種類] が “仮想プロビジョニング対応ドライブ” と表示されていれば、シン プロビジョニング対応ディスクです。

<回避策>
=======================
定期メンテナンス タスクによるデフラグ実行時の当イベントの記録を抑止したい場合、登録されているデフラグ コマンドのオプションを変更する方法が有効でございます。

デフォルトでは、スラブ統合およびスラブのトリムが実施されるオプション “-k” が指定されております。オプション  “-l” (エル) はスラブのトリムのみを行うオプションです。よってこのオプションを  “-l” (エル) に変更していただくことで、スラブ サイズが 8 MB未満で構成されたシン プロビジョニング ボリュームでは実行が不要な、スラブ統合を実行しなくなるため、このイベントログも記録されなくなります。

以下にオプションを変更する手順をご案内いたしますので、対応をご検討ください。

デフラグのオプションを変更する
————————–
1. コントロール パネル > 管理ツール > タスク スケジューラを起動します。
タスク スケジューラ ライブラリー > Microsoft > Windows > Defrag から ScheduledDefrag を右クリックし、プロパティを開きます。

2. [操作] タブで設定されているデフラグを選択し、編集を押下します。

3. 初期値 “-c -h -k -g -$” が設定されています。
スラブ統合が実施されるオプション “-k” を削除し、オプション “-l” (エル) を追加し、OK で閉じます。

※ オプションの詳細については、コマンド プロンプトより Defrag /? にて確認可能です。

※ デフラグ タスクのオプションの変更を行った場合、Windows Server 2012 環境では、手動でデフラグを実行する際にドライブの最適化ツール (dfrgui.exe) をご利用いただくことが可能でしたが、Windows Server 2012 R2 環境では、ツールの起動時のポップアップ画面にて “カスタム設定の維持” を選択するとツールを起動しないよう動作が変更になりました。
変更したデフラグ タスクのオプションの設定を保持したまま手動でデフラグを実行する場合は、コマンド プロンプトにて defrag.exe コマンドをご利用ください。

<影響について>
=======================
前述のとおり、対象ボリュームがシン プロビジョニング対応ディスクであり、かつスラブ サイズが 8 MB 未満の場合には想定された動作となるため、無視いただいて問題はございません。

本 Blog が少しでも皆様のお役に立てば幸いです。