SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

KB4038782 等のインストールが長時間たっても完了しない場合に確認するポイントのメモ

leave a comment

IaaSクラウド上でWindows Server 2016のWindows Updateはハイリスク? でも解説されていますが、私が使用しているいくつかの環境でも KB4038782 が 20 時間ぐらいたっても適用が完了せず、Windows Update の進捗が 45% ~ 47% 程度の間から進まないという現象が発生しています。

この現象に合致し、あきらめてサーバーを再起動または、電源断を行うかの判断として見ておきたいポイントを少しまとめておきたいと思います。
投稿を書きながら画像をとれる環境が残っていないので、文字多めです。

Windows の「設定」から、更新プログラムの適用を実施した場合に、45 ~ 47%から進まなくなるのが今回の問題です。Windows Update Catalog からオフラインインストール用のモジュールを入手して実行しても同じ挙動になる可能性があるかもしれませんが、オフラインインストール用のモジュールから実行した場合は、「パッケージを Windows Update キャッシュにコピーしています」のダイアログが表示されたまま、進まなくなるかと思います。

処理が進んでいるかの判断をしなくてはいけない際に見ておきたいポイントとしては、次のような情報となるのではないでしょうか。

  • リソースモニター (resmon.exe) の「ディスク」タブの「ディスク活動」の情報
    image
  • 「C:\Windows\CbsTemp」ディレクトリの内容
  • 「C:\Windows\Logs\CBS\CBS.log」

「リソースモニター」のディスク活動では、どのプロセスがどのファイルにアクセスしているかを確認することができます。
「合計」「書き込み」「読み取り」でソートをしてみて、どのファイルに対してアクセスが行われているか、右のペインのグラフからディスクに対して I/O が発生しているかを確認し、Windows Update によるファイルの更新が行われているかを確認します。

今回の現象の場合「C:\Windows\CbsTemp」ディレクトリに対して、KB 番号が設定されているファイルのアクセスが行われているかを確認するのがポイントとなってくるかと。

次に「C:\Windows\CbsTemp」ディレクトリ内のファイルを確認します。
この下にはサブフォルダが作成され、実際のファイルはサブフォルダに格納されるのですが、現在の累積更新プログラムであれば、膨大なファイルがコピーされるかと。
この時、どの程度のファイル数までコピーが完了したかを確認する判断としては「C:\Windows\SoftwareDistribution\Download」内のファイルと比較するとよいのではないでしょうか。

Windows Update を実行したタイミングで作成された日時のディレクトリ内のファイルと、CbsTemp にコピーが完了したファイルの番号を比較します。
ファイル名が、連番のような形式になっていますので、これにより、Windows Update キャッシュにどの程度までコピーが完了したかの判断ができるかと思います。
(KB4038782 の場合、Azure の HDD の書き込みキャッシュの有効な C ドライブで、10 分程度もあれば完了していました)

今回私が遭遇した現象と同様の場合は、このフォルダへのコピーがいつまでたっても完了せず、ファイル数が類似値に近づいたと思ったら最初からやり直すというようなループが繰り返されているような動作となっているかと。
リソースモニターやエクスプローラーでファイルのコピー状況を確認していて、最後のほうの数字 -> 最初のほうの数字のコピーが繰り返されているようでしたら、Windows Update の完了をあきらめるかの判断が必要になってくる気がしています。

この際の動作のログですが、「C:\Windows\Logs\CBS\CBS.log」に記録されます。
20 時間たっても終わらなかった場合、このファイルのサイズが 2GB 以上になっており、Windows Update キャッシュへのコピーが延々と完了せずに実施されているように見受けられました。

オフラインインストーラーの場合は、「パッケージを Windows Update キャッシュにコピーしています」のダイアログにキャンセルボタンがあるため、これをクリックすることでキャンセルできますが、Windows Update 経由の場合は、バックグラウンドで実行されるため、今回は最終手段のポータルからの「停止」を実行して、強制的に落として、その後無事に起動しました…。
その後オフラインインストーラーを、Windows Update カタログ からダウンロードしてインストールしたところ、20 時間たっても終わらなかったものが、30 分ぐらいでインストールが完了しました。

こんな状況が頻繁に発生すると、メンテナンス時間帯にパッチ適用を行うということがそもそも無理になってしまうので、もう少し、パッチ適用の進捗を確認する方法を整備してもらいたいなと思った今日この頃です。
(Windows Update のログを Get-WindowsUpdateLog で見たり、「Get-Content」で CBS.log を Tail して監視するしかないんですかねぇ。。。。)

Written by masayuki.ozawa

10月 6th, 2017 at 12:44 pm

Posted in Windows Server

Tagged with

Leave a Reply

*