Unified Write Filter (UWF) 環境での運用を考慮した設定について

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

今回は統合書き込みフィルター (Unified Write Filter (UWF)) の環境を運用する場合に、考慮すべき設定についてご紹介します。

Unified Write Filter (UWF) とは Windows 10 にて新しく利用できるようになったディスクへの書き込み処理をメモリ上のオーバーレイという一時領域に行う機能です。 UWF を有効化することで、物理デバイスへの書き込みを少なくすることでデバイスの摩耗を低減したり、再起動ごとに UWF の設定に基づいてオーバーレイ領域のデータを削除 (設定時の状態に戻す) する事で、ユーザーが保存したファイルなどで意図せずディスク容量を使用しないようにする事ができます。 本機能は Windows Embedded (組み込み向け) の機能として実装されておりましたが、Windows 10 でも利用できるようになったことにより、最近では OA PC などの用途にもご利用を検討いただくことが多くなっています。 本機能の概要や設定方法については、以下にブログがございますので、ご参照ください。

統合書き込みフィルター (Unified Write Filter (UWF)) について

上述の通り UWF 環境では、OS 動作中に実施されたオーバーレイ領域への書き込み処理は、すべてシャットダウン時に破棄されます。 次回起動時は UWF を設定したときの状態で起動しますが、 サービスによっては UWF 環境下でも再起動後にも保持されている必要がある情報や、保持されていると利便性が高い情報があります。 そのため、UWF では書き込みフィルターの除外設定を行うことで個別にファイルやフォルダ、レジストリの情報を再起動後も保持することが可能です。 UWF 環境を運用する際に除外設定や事前に設定を行う必要がある項目についてはいくつか公開情報がございますが、本ブログではそれらの各公開情報をおまとめすると共に、そのほかの留意事項や良くお問合せいただく設定情報についてご紹介いたしますので、UWF 環境の運用を検討する場合に参考にしていただけますと幸いです。

 


公開情報


 

 

 

 

 

 


よくあるお問い合わせ


(1) StartComponentCleanup タスクの無効化もしくは除外設定

システム メンテナンスを目的とするタスクのひとつに "StartComponentCleanup" と呼ばれるタスクがあります。 本タスクは不要なドライバーや Windows Update で更新されて使わなくなった古いコンポーネントを削除したり圧縮したりするタスクです。 本タスクが行った書き込み処理も再起動で破棄されるため、再起動ごとに本タスクが実行され、オーバーレイや CPU を消費してしまう事象が報告されております。 Windows Update を定期的に実行いただく運用など、定期的にドライバーのアップデートが実施される環境で本事象が発生します。

対処策: 以下のいずれかの対処により本事象を回避できます。
A. "StartComponentCleanup" タスクの無効化
UWF が無効化された状態で、タスク スケジューラーから、以下のタスクを右クリックで "無効" にした後、再度 UWF を有効化します。※ 後述の (4) の通り、Long-Term Servicing Channel (LTSC、以前の Long Term Servicing Branch (LTSB)) 環境以外の場合では、このタスクが再有効化されたり、追加のタスクが同様の処理を行う可能性がございますので、B もしくは C の対処をご検討ください。

パス: [システムツール] - [タスク スケジューラ] - [タスク スケジューラ ライブラリ] - [Microsoft] - [Windows] - [Servicing]
タスク: StartComponentCleanup

B. "StartComponentCleanup" タスクで利用されるフォルダ・レジストリの除外設定
以下の領域を除外設定に追加します。※ 後述の "留意事項" の通り、除外設定を行ってもオーバーレイが消費される可能性があるため、十分なオーバーレイのサイズを確保できる場合に有効です。

// フォルダ

C:\Windows\Winsxs
C:\Windows\servicing

// ログ

C:\Windows\Logs\CBS
C:\Windows\Logs\DISM
C:\Windows\System32\winevt\Logs\Setup.evtx

// レジストリ

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide
HKLM\COMPONENTS\CanonicalData
HKLM\COMPONENTS\ccpinterface
HKLM\COMPONENTS\DerivedData
HKLM\COMPONENTS\Drivers
HKLM\COMPONENTS\Installers
HKLM\COMPONENTS\NonCanonicalData
HKLM\COMPONENTS\ServicingStackVersions
HKLM\COMPONENTS\TransformerRollbackData

C. 類似コマンドの定期実行
本タスクと類似の処理を行うコマンドを UWF を無効化した状態で定期的に実行したのちに再度 UWF を有効化することで、本タスクが稼働してもすでにクリーンアップ済みのため、処理を行わずに終了します。

"StartComponentCleanup" タスクに相当するコマンドは管理者権限のコマンド プロンプトより以下のコマンドを実行します。

> Dism.exe /online /Cleanup-Image /StartComponentCleanup

※ "StartComponentCleanup" タスクとの違いとしては、30 日の猶予期間なく更新されたコンポーネントの以前のバージョンは削除され、1 時間のタイムアウトもないため、より強力に削除が実施されることになります。

[参考情報]
WinSxS フォルダーのクリーンアップ

UWF 環境では通常 Servicing Mode にて、修正プログラムの適用を実施しますので、以下のコマンドを定期的に実行する運用方法としては、Servicing Mode 時に実行されるスクリプトに組み込む方法もご検討ください。

UWF master servicing script

 

(2)ドメイン ユーザーのキャッシュ ログオン

ドメイン コントローラーに一時的に接続できない状況が発生する環境など、キャッシュでのログオンが必要な環境では、キャッシュを残せるようレジストリの除外設定が必要です。

対処策:
以下のレジストリを除外設定に追加します。

HKLM\SECURITY\Cache

 

(3) ディスプレイ設定の保存

最近使用されたトポロジ (複製、拡張など) や解像度、向きなど、ディスプレイの設定は再起動後も残したい環境では、関連するレジストリの除外設定が必要です。

対処策:
以下のレジストリを除外設定に追加します。

HKLM\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration
HKLM\System\CurrentControlSet\Control\GraphicsDrivers\Connectivity

 

(4) KB4023057 適用後の "StartComponentCleanup" タスク

Windows 10 の LTSC 以外のサービス提供モデルをご利用いただいている環境において Windows Update を実施した場合、KB4023057 が自動でインストールされます。KB4023057 は、OS の機能アップグレード (バージョンのアップグレード) のために提供される更新プログラムです。インストール後に追加された "shell" タスクというタスクがコンポーネントのクリーンアップ タスク ("StartComponentCleanup" タスク) の再有効化やドライバーのクリーンアップなど、機能アップグレード可能な環境にするための処理を行います。この処理により、(1) と同様にオーバーレイを消費する可能性があります。
※ LTSC 環境では OS の機能アップグレード (バージョンのアップグレード) が行われないため、KB4023057 は適用されず、"StartComponentCleanup" タスクを一度無効化していただければ本事象は発生しません。

対処策:
KB4023057 適用後、再起動時に "StartComponentCleanup" タスクが再有効化されてしまうため、(1) と同様の対処を実施いただく必要がありますが、"A. StartComponentCleanup タスクの無効化" の対処のみでは、"shell" タスクが行うドライバーのクリーンアップ処理がオーバーレイを消費してしまう可能性がございます。そのため、LTSC 環境では (1) の "B. StartComponentCleanup タスクで利用されるフォルダ・レジストリの除外設定" もしくは "C. 類似コマンドの定期実行" の対処をご検討ください。

 

(5) Microsoft Store のアップデートの無効化

Windows 10 の LTSC 以外のサービス提供モデルをご利用いただいている環境においては Microsoft Store が既定でインストールされます。ストア アプリの自動更新が有効になっている場合、Microsoft Store のアプリケーションの管理等を行う wsappx (AppX Deployment Service (AppXSVC)) サービスが、自動更新の処理がオーバーレイを消費する可能性があります。

対処策:
ストア アプリの自動更新を停止します。※ UWF が無効化されている状態で、以下の設定を実施します。

 

  1. Microsoft Store を開き、右上の 「…」をクリックして "設定" を開きます。
  2.  "アプリを自動的に更新" をオフにします。

 


留意事項


除外設定を行っている領域に書き込みを行った場合についても、オーバーレイのメモリは利用されます (オーバーレイ領域を経由して書き込みがディスクへ行われますので、一定量のオーバーレイ領域が使用されます)。 詳細は以下のブログで公開しておりますのでご確認いただければと思いますが、イベント ログなどへの書き込みなどの通常運用でもオーバーレイを消費することは避けられませんので、UWF 環境の運用にあたっては適切な間隔で再起動を行うことをご検討ください。

Windows 10 の統合書き込みフィルター機能 (UWF) で、フィルターの除外設定を行ってもオーバーレイのメモリを消費してしまう

また、UWF 関連モジュールは現在までにいくつかの修正が行われておりますので、UWF 環境を導入いただく際には最新のロールアップを適用し、既知の不具合を払拭した状態で動作検証いただく事をお勧めいたします。

 

なお、UWF 機能として、内部的に既定で除外設定が行われているファイル、フォルダやレジストリもありますが、それらの内部設定は公開されておらず、今後変更される可能性がございます。 本情報は現時点で有用と考えられる除外設定についてまとめました。 本情報がみなさまのお役に立てれば幸いです。