2015年1月29日

WSUSディスク枯渇、ドライブ変更


やけに更新が来ないと思い確認したところWSUSサーバーのディスクが枯渇していました。WSUSはDドライブにインストールしていたのですが、残容量が数百KBしかありません。


「Update Services」を立ち上げ、「サーバークリーンアップウィザード」を実行したのですが「致命的なエラー」になってしまいます。
イベントビューアを見ると「ディスクに十分な空き領域がありません」となっています。
また、「コンテンツドライブの空きディスク領域は200MB未満です」というメッセージもあります。

空き領域を増やしたくてクリーンアップしようとしているのに空き領域が無いと実行できないとは…

DドライブはWSUSでしか利用していません。更新ファイルは圧縮されているので効果は薄いと思いつつディスククリーンアップを実行してみました。一時的に数MB空いたのですがすぐに待ちになっていた更新ファイルがダウンロードされ、結局空きが0KBになってしまいました。

ネットで対策方法を探ったところ
wsusutil deleteunneededrevisions
で不要な更新プログラムを削除できるようなので実行すると、そのようなオプションは無いと返ってきます。どうやらインストールされているバージョン(WSUS 3.0 SP2)では既に無効になっているオプションのようです。

この時点でDドライブでの運用をあきらめました。
USB外付HDDを取り付け、そちらで運用することにしました。
手順は簡単です。
wsusutil movecontents <移動先フォルダ> <ログファイル名>

数時間かかりましたが無事終了しました。
移動先にはちゃんとファイルが移っていますが、Dドライブを見ると何も変わっていません。どうやらコンテンツファイルは移動ではなくコピーされ、プログラムの見に行く先が移動先に変更されるようです。

ここで「サーバークリーンアップウィザード」を実行したのですが予想に反してエラーとなってしまいます。もちろん移動したディスクの残容量は十分です。

よくよく見てみるとDドライブの「UpdateServicesDbFiles」フォルダは移動先にありません。このフォルダにはデータベースのファイルが納められています。
調べてみると「wsusutil movecontents」で移動されるのはコンテンツ(更新ファイル)だけでデータベースは移動されないようです。データベースまで移動させるにはWSUSの再インストールしか手が無いようです。

必要無くなったDドライブのコンテンツファイルを削除したところ「サーバークリーンアップウィザード」が無事完了しました。
その後、待ちになっていた更新ファイルが移動先ドライブにダウンロードされ、クライアントにも配布されるようになったことが確認できました。

当初の予定では外付HDDに移動し、クリーンアップしてサイズを縮小した上で再びDドライブに戻そうと思っていました。
ところがクリーンアップ後のファイル容量はDドライブに収まるほど小さくなりませんでした。

「製品とクラス」でWindowsXP関連などの必要無くなったもののチェックを外してサーバークリーンアップウィザードをかけたのですが、思っていたほど小さくなりません。

ネットで「WSUS DB インデックス再構築」を見つけました。
http://blogs.technet.com/b/jpwsus/archive/2014/03/06/wsusdb.aspx
この手順に従い「Microsoft SQL Server Management Studio Express」をインストールしWSUSデータベースメンテナンス用スクリプトを実行しました。
しかし効果はほとんどありませんでした。

現時点で出来ることはここまでと考えました。
このサーバーはWindows 2003 Serverです。後半年でサポート切れとなりますので更新しなければなりません。長い期間では無いので、それまではこのまま外付HDDで運用していくことにしました。

1 件のコメント:

  1. すみません。あるwsusトラブルで、解決法ググってもが日本語で出ないためこちらをお借りします。英語読める方には、意味ありませんが苦労しましたので記録として。
    wsusでautorecallさせたところ、再起動時にWOUTempAdminアカウントでパスワードが違います。と出てしまった後、アカウント削除などいくらやっても再起動時に必ず、同様にパスワードが違います。となってしまった場合の対応。
    wsusで作成したisoをマウント→管理者権限でcmd(コマンドプロンプト)を起動→isoのドライブへ移動→cmdフォルダに移動→creanuprecall.cmdを起動
    以上で解決できました。
    wsusのcmdフォルダには、creanuprecall.cmdは入っていません。必ず作成済みiso内のcmdフォルダで実行してください。

    ブログ主様、場所お借りしてすみません。
    通りすがりのco majuより。

    返信削除