web-dev-qa-db-ja.com

Windows 2008:WinSXSディレクトリが制御不能に増大し、サーバーがブロックされる

(リモートでホストされた)仮想サーバーをクライアント用のWindows 2008 Serverで実行しています。最初は、10 GBのスペースがありました。数週間のうちに、Webベースのicketシステムを使用した通常の作業を除いて、マシン上で何も行われなかった間、Windowsがいっぱいになりました悪名高い "winsxs"ディレクトリが非常に多くなり、最終的にハードディスクがいっぱいになり、さらに5 GBを注文する必要がありました。今、3週間後、これらの5 GBはwinsxsによっても消費されており、マシンで作業することはできません。 Winsxsのサイズは8 GBになり、残りのWindowsディレクトリは5 GBになります。

私は同じ問題を説明するさまざまな情報源をウェブ上で見つけました。どうやら、Windows 2008は、通常の更新プロセスでダウンロードするすべてのDLLのすべての言語バージョンを格納しています。そこにあるものを削除するだけでは、重要なコンポーネントが含まれているため、致命的に危険であると説明されています。不要になったファイルを特定して削除するためのツールや手順は見つかりませんでした。

私に何ができる?これは正常な動作ですか?正常な場合、スペースが同等に制限されている他のサーバーはどのように管理しますか?オフまたはオンにできるものはありますか?

事前定義されたサーバーの役割のうち、「ファイルサービス」(または英語で何と呼ばれていても、スイスサーバー)のみがアクティブ化されます。さらに、Apache、mySQL、およびSubversionをインストールしました。自動更新が有効になります。

編集:問題が解決しない。

注:WinSXSディレクトリは主にシンボリックリンクで構成されており、ユーザーがそのサイズを頻繁にパニックすることを認識しています。それでも、15 GBの領域のうち、プログラムとデータで1.5 MBを使用しています。 何もありません。いまいましいマシンにアクセスできてよかった。 *私はすでに1 GBのデータを解放しましたが、24時間以内にWindowsのWindowsによってデータがいっぱいになりました。ホラー映画のようなものです。私が試したこと:

  • SP2(compcln.exeに付属)のインストールはオプションではありません。ディスク容量が足りないためです。
  • おそらくSP1がシステムにマージされているため、マシンにvsp1clean.exeがありません。実際、* cln.exeという名前のファイルはどこにも存在しません。
  • いいえのシャドウコピーがあります。シャドウコピーはアクティブではありません。
  • 私の知る限り、アクティブなシステム復元ポイントはありません。
  • アクティブ化される唯一のサーバーの役割は「ファイルサーバー」です。
  • 標準の「クリーンアップ」機能(C:ドライブを右クリック)は、ごみ箱の内容と一時インターネットファイルに2 MBの不可解な機能を提供しています。
  • 「クリーンアップwinsxs」スクリプトの1つを使用することは、私にとっては選択肢ではありません。この問題に対処するマイクロソフトから直接何かを見つけることができません。
62
Pekka

WinSxSディレクトリは、実際のファイルではなく物理ファイルへのハードリンクを使用するため、エクスプローラーによって報告される領域のほとんどを占めません。 Explorerには、ハードリンクのサイズを報告する問題があります。

Disk Space に関するこの記事(ここで参照 http://aspoc.net/archives/2008/11/20/winsxs-disk-space-and-windows-7/ )は、WinSxSディレクトリに関するすばらしい説明を持っています。

実際のディスク使用量の問題について-COMPCLN.EXEを実行して、古いサービスパックとホットフィックスファイルをクリーンアップできるかどうかを確認できます。また、他に何かが起こっているかどうかを確認するために、ロギングディレクトリも調べます。

24

私はあなたと同じ船に乗っていました。私は5つの新しい2008 VMを持っていて、それらが昨年よりますます多くのディスク領域を必要としているのを見ていた。 windrstatで説明します。

これは、真新しい2008年サーバーの画面キャプチャです。

alt text 3.8 GB winsxsディレクトリ

これが本番2008サーバーの画面キャプチャです。

alt text 5.4GB winsxsディレクトリ

最後に、真新しい2008R2サーバーのスクリーンキャプチャ: alt text 5.4GB winsxsディレクトリ

私が知ることができることから、winsxsディレクトリを切り捨てる方法はありません。 WinSxSはWindows Side-by-Sideの略です。影響を軽減するための試みDLL hell(すなわち依存関係)Microsoftは、すべてのバージョンのすべてのDLLを常にシステムのwinsxsディレクトリにインストールするようにしておくことを決定しました。

これは2つのことを意味します(私は思う):

  1. Winsxsにはいくつかのハードリンクがありますが、唯一のハードリンクは現在のDLLのものでなければなりません。つまり、システムでアクティブな現在のDLLは、このwinsxsフォルダーにハードリンクされます。

  2. DLLの以前のバージョンはすべて引き続き利用可能で、winsxsディレクトリにバックアップされています。すべての例でわかるように、winsxsディレクトリが実際には「ほとんどハードリンク」だった場合、現在のディスク使用量の50%以上を占めることはありません。 winsxsディレクトリが「ほとんどハードリンク」であることが真実であっても、50%の使用はC:ドライブ全体がwinsxsディレクトリにハードリンクされたことを意味します。

私はすべてを試しました。古いファイルの削除、パッチのアンインストール、「$」パッチディレクトリの削除。すべて。

最後に、すべてのサーバーのすべてのC:パーティションをそれぞれ30 GBに増やしました。 winsxsディレクトリは拡大し続けるため、これは一時的な修正にすぎません。ただし、NTFSの最新バージョンでは、再起動せずにパーティションを拡張できるため、朗報です。なんて都合のいい。

WinSxSは迷惑なディレクトリではなく、すべてのWindows開発者にとって新しい方法です。 WinSxSがすぐになくなることはありません。開発者はWinSxSを使用しており、DLLアーカイブまたは依存関係の解決の新しい方法論が利用可能になるまで、そこに依存します。

すべての新しいウィンドウ2008/7/Vistaボックスで、30GB C:がほぼ正しいと感じています。パッチ、ログ、およびいくつかのアプリケーションのための十分なスペース(今のところ)。

私は誰かがこれをすべて理解し、rogue-manifestsを使用してプレパッチDLLの再アクティブ化を開始するまで待つことができません。これが攻撃/エクスプロイトベクトルになります。

18
Joseph Kern

これはおそらく手遅れで、Vistaの経験のみに基づいていますが、

  1. 「ほとんどがハードリンクであるため、フォルダは表示されるほど大きくありません」と言っている人を信じないでください。これは事実ですが、ディスク領域が足りなくなった場合は、大きすぎます。
  2. これまでに提案された唯一の「治療法」は、フォルダーに膨張を追加したアプリケーションを削除することです-しかし、犯人を見つけるために私が知っている文書化された方法はありません。
  3. 満足のいく答えが見つからなかった後の私の「解決策」は、最大の(そして不要な)フォルダーを残酷に削除することでした。例:

    • 6つのバージョンの「Microsoft自然言語検索」、各300kB
    • 私が使用しない多くのオリエンタルフォント(これらの6 vns、ほとんどが同一)
    • などなど.

良いバックアップ(画像)から始めると仮定して、試してみてください!

5
Martin Gerhold

15 GBは私の経験ではそれを削減しません、特にそれが何らかの活動を伴う64ビットマシンである場合...

VPSディスクを拡張してからシステムパーティションを拡張することは、何も再インストールする必要がなく簡単であるはずですが、コストはかかります。最近のWindows Server VPSに60 GB未満のシステムディスクを提供することは、30 GBがしばらくの間それを削減できるとしても、そもそも考え抜かれていないようです:7

32ビットインストールを実行するとオーバーヘッドが少し取り除かれ、Server Coreをインストールすると多くが取り除かれます。 svnserve、dfs、印刷サービスなどを実行し、定期的に更新される32ビットサーバー2008コアファイルサーバーは約5 GBです... 64ビットサーバー2008スタンダードは、Webアプリケーション(IISを使用するasp.netおよびphp)にサービスを提供します。現在30 GBを占めています。これらのメトリックは両方とも、もちろんデータストア/パーティションを除外しています。Windowsシステムのみです。どちらも、現在10〜35 GBを占める64ビットサーバー2008システムディスクの例にすぎません。

インストールするすべてのツール、アップグレード、またはアプリケーションはwinsxsディレクトリを拡大し、システムがそれらの依存関係が他のツールによって使用されているとシステムが考える可能性があるため、アンインストールしたものがwinsxsに必ずしも影響を与えるとは限りません。

5
Oskar Duveborn

可能であれば、回避策としてWinSXSを別のパーティションに移動してみてください。私の知る限り、WinSXSのコンテンツを削除する方法はありません。このかわいらしいものはVista/Win2008の動作の中心にあるので、別のパーティションに移動するほど良いことはありません。

これを行う方法を説明しているブログへのリンクは次のとおりです。 Click

手順を試す前に、C:パーティション全体の完全バックアップ(より良い:イメージ)を実行することをお勧めします。 Win2008サーバーではなく、Vistaでのみこれを試したことを覚えておいてください。

4
imagodei

主な原因がWindowsUpdateである場合、より多くのスペースを購入したり、システムファイルの手術を実行したりするための唯一の選択肢は、Microsoftのトリガーハッピーアップデートによって引き起こされる成長を制限することです。

主にマイクロソフト以外のアプリケーションプラットフォームを使用しているため、「重要な」更新の90〜95%をプッシュダウンせずに実行できる可能性があります。

したがって、できることは、自動更新を無効にしてから、どの「重要な」更新を適用するかを非常に選択することです。セキュリティ計画を直接侵害する脆弱性にパッチを適用するもののみを適用してください。ほとんどの「重要な」更新はおそらくセキュリティシナリオに適用されません。更新が適用される場合は、セキュリティプランを変更せずに実行できます(たとえば、サーバーでIEを使用しないでください。代替ファイルサービスを使用し、ネットワークセキュリティを強化します)。

3
Matias Nino

WinDirStatとOS自体(ちょうど[マイコンピュータ]の下に表示されます)が使用されているスペースの量を報告している場合、ハードリンクとしてサイズを誤ってカウントしている場合は問題ありません。 OSがスペース不足だと判断した場合-スペース不足です。

Storage Server 2008とDC(Server 2008)でこの問題が発生しました。DCにWindows Updateがインストールされている他のプログラムはありません。両方のサーバーがWinSXSで15GBのスペースを消費しています。 Storage ServerはHPによってプレインストールされ、C:に40 GBが搭載されているため、この問題も発生しています。

これはWindows 8/Server 2013でDISMを使用して置き換えられた更新(dism.exe/online/cleanup-image/startcomponentcleanup)をクリーンアップすることで修正されたため、残念ながら、これは彼らが認めた問題であり、残念ながら、行き詰まっている人のためにアップグレードする以外の修正はありません。 2008。

3
NickIzk99

Windows Server 2008 R2では、DISMを使用してWinSxSをクリーンアップできます。もちろん、これを実行すると、更新をロールバックできなくなります。ここに説明があります: http://www.sqlskills.com/blogs/glenn/how-to-reclaim-disk-space-in-your-windowswinsxs-directory-on-windows-server-2008-r2- sp1 /

要約すると、管理者として次のコマンドを実行する必要があります。

DISM.exe /online /Cleanup-Image /spsuperseded

Windows Server 2008(明らかにR2ではない)を使用しているので、これは適切な解決策ではないかもしれませんが、R2の解決策を探しているときにこの質問を見つけたので、一部の人にとって役立つかもしれません。

3
Ynhockey

マイクロソフトが提供するサーバー2008のシステム要件は、「ディスク容量:最小32Gb以上」です。

http://www.Microsoft.com/windowsserver2008/en/us/system-requirements.aspx

なぜその半分のスペースで快適に実行できると思いますか?

1

http://tech.xlab.si/2009/07/move-winsxs-folder/

この記事は見つかりましたが、試したことはありません。winsxsフォルダーを移動する方法があるようです。誰かがこれを試すことができる場合は、スルーして私に知らせてください

1
techsmarty

いくつかの提案:

  • スワップファイルはどこにありますか?

  • 同じソフトウェアを使用してテストマシンをセットアップし、問題を再現できるかどうかを確認します。これは間違いなく正常ではなく、私が考えることができる唯一のことは、そのボックスの何かが常にDLL(またはそのようなもの)を変更しているため、Windowsが常にそのバックアップを作成していることです。

15 GBは、Windows 2008のインストールでは非常に低い容量です。Windows2008ビルドの標準C:ドライブは60 GBです。

1

使用する1つのオプション-それが単純なものに使用する安価な古いVPSである場合、ディスクまたは特定のフォルダーでNTFS圧縮を有効にする価値があります。

これにより、ドライブの一部のスペースが圧迫される可能性があります。記事には、XPの場合と記載されていますが、Win7/2008でも同じ手順です。

0

同じ問題に遭遇しました。確かにWinSxsは部分的に非難するべきです...しかし、問題の一部はWinDirStatなどのツールがファイルのサイズとファイルへのジャンクションを同じ方法でカウントすることに起因していると思います。ジャンクションはファイルへのポインタにすぎず、ファイルを構成するすべてのブロックの複製ではありません。

VSSがこの問題の大きな原因であることがわかりました。次のコマンドを使用して、VSSがディスク領域を使いすぎているかどうかを確認し、その領域を再利用するか、制限を小さく設定します。

vssadminリストshadowstorage

vssadminはShadowStorageを削除します/ For = C:/ On = C:

vssadmin ShadowStorageのサイズ変更/ For = C:/ On = C:/ MaxSize = 20%

0
Clayton