web-dev-qa-db-fra.com

Windows 2008: le répertoire WinSXS croît de façon incontrôlable, bloquant le serveur

J'exécute un serveur virtuel (hébergé à distance) avec Windows 2008 Server pour un client. Initialement, il avait 10 Go d'espace. Au cours de quelques semaines - pendant lesquelles rien n'a été fait sur la machine, sauf un travail normal à l'aide d'un système de ticket électronique basé sur le Web -, Windows a commencé à remplir son infâme répertoire "winsxs" à tel point qu'à la fin, le disque dur était plein et nous avons dû commander 5 Go supplémentaires. Maintenant, trois semaines plus tard, ces 5 Go ont également été consommés par Winsxs, et encore une fois, je ne peux pas travailler sur la machine. Winsxs fait maintenant 8 Go, le reste du répertoire Windows 5 Go.

J'ai trouvé diverses sources sur le Web qui décrivent le même problème. Apparemment, Windows 2008 stocke toutes les versions linguistiques de toutes les DLL qu'il télécharge dans le processus de mise à jour normal. Le simple fait de supprimer des éléments là-bas est décrit comme mortellement dangereux car il contient des composants vitaux. Je n'ai trouvé aucun type d'outil ou d'instructions pour identifier et supprimer les fichiers qui ne sont plus nécessaires.

Que puis-je faire? Est-ce un comportement normal et si tel est le cas, comment les autres serveurs avec un espace également limité sont-ils gérés? Puis-je activer ou désactiver quelque chose?

Parmi les rôles de serveur prédéfinis, seuls les "services de fichiers" (ou quel que soit le nom en anglais, c'est un serveur suisse) sont activés. De plus, j'ai installé Apache, mySQL et Subversion. Les mises à jour automatiques sont activées.

Modifier: le problème persiste.

Remarque: je sais que le répertoire WinSXS se compose principalement de liens symboliques et que les utilisateurs paniquent souvent en regardant sa taille. Pourtant, sur 15 Go d'espace, j'ai 1,5 Mo utilisé par les programmes et les données, et il ne reste plus rien . Je suis content de pouvoir même accéder à cette fichue machine. * J'ai déjà libéré 1 Go de données, qui ont été remplies par les fenêtres Windows dans les 24 heures. C'est comme dans un film d'horreur. Ce que j'ai essayé:

  • L'installation du SP2 (fourni avec compcln.exe) n'est pas une option, car l'espace disque n'est pas suffisant pour cela.
  • Il n'y a pas de vsp1clean.exe sur la machine, probablement parce que SP1 a déjà été fusionné dans le système. En fait, il n'existe aucun fichier nommé * cln.exe nulle part.
  • Il n'y a pas de clichés instantanés. Les clichés instantanés ne sont pas actifs.
  • Pour autant que je sache, aucun point de restauration système n'est actif.
  • Le seul rôle serveur activé est "serveur de fichiers".
  • La fonction standard de "nettoyage" (clic droit sur le lecteur C:) me propose un déroutant 2 Mo de contenu de corbeille et de fichiers Internet temporaires.
  • L'utilisation d'un des scripts "cleanup winsxs" n'est pas une option pour moi, ils ont tous l'air trop louches. Je ne trouve rien directement de Microsoft qui résout ce problème.
62
Pekka

Le répertoire WinSxS n'occupe pas presque l'espace signalé par Explorer car il utilise des liens physiques vers des fichiers physiques, pas des fichiers réels. Explorer a juste des problèmes pour signaler la taille des liens durs.

Cet article sur Espace disque (référencé ici http://aspoc.net/archives/2008/11/20/winsxs-disk-space-and-windows-7/ ) a une grande explication sur le répertoire WinSxS.

En ce qui concerne votre problème réel d'utilisation du disque - Vous pouvez essayer d'exécuter COMPCLN.EXE pour voir si vous pouvez nettoyer les anciens fichiers de service pack et de correctif, ce qui devrait vous aider un peu. Je voudrais également regarder tous les répertoires de journalisation pour voir s'il y a autre chose.

24

J'étais dans le même bateau que toi. J'avais 5 nouvelles machines virtuelles 2008 et je les regardais constamment avoir besoin de plus en plus d'espace disque au cours de la dernière année. Permettez-moi d'illustrer avec windrstat.

Voici une capture d'écran d'un tout nouveau serveur 2008:

alt text  3,8 Go de répertoire Winsxs

Voici maintenant une capture d'écran d'un serveur de production 2008:

alt text  5,4 Go de répertoire Winsxs

Enfin une capture d'écran d'un tout nouveau serveur 2008R2alt text  5,4 Go de répertoire Winsxs

D'après ce que je peux dire, il n'y a aucun moyen de tronquer le répertoire winsxs. WinSxS signifie Windows côte à côte. Dans leur tentative de réduire les effets DLL enfer (c'est-à-dire les dépendances), Microsoft a décidé de conserver chaque version de chaque DLL jamais installée sur votre système dans le répertoire winsxs).

Cela signifie deux choses (je pense):

  1. Bien qu'il existe des liens durs dans Winsxs, les seuls liens durs doivent être ceux des DLL actuelles. En d'autres termes, les DLL actuelles qui sont actives dans le système sont liées de nouveau à ce dossier winsxs.

  2. Toutes les versions précédentes des DLL sont toujours disponibles et sauvegardées dans le répertoire winsxs. Comme vous pouvez le voir dans tous les exemples, si le répertoire winsxs était vraiment "principalement des liens durs", il n'y aurait aucun moyen qu'il puisse occuper plus de 50% de votre utilisation actuelle du disque. Maintenant, même s'il était vrai que le répertoire winsxs est "principalement des liens durs", une utilisation de 50% signifierait que votre lecteur C: entier a été lié de nouveau dans le répertoire winsxs.

J'ai tout essayé. Suppression d'anciens fichiers, désinstallation de correctifs, suppression des répertoires de correctifs "$". Tout.

Enfin, j'ai fini par faire passer toutes les partitions C: sur tous mes serveurs à 30 Go chacune. Ce ne sera qu'un correctif temporaire, car le répertoire winsxs continuera de croître. Bonne nouvelle cependant, car la dernière version de NTFS vous permet d'agrandir vos partitions sans redémarrer. Comme c'est pratique.

WinSxS n'est pas seulement un répertoire ennuyeux, c'est une nouvelle méthodologie pour tous les développeurs Windows. WinSxS ne partira pas de sitôt. Les développeurs utilisent WinSxS et en dépendent pour être là jusqu'à ce qu'une nouvelle méthodologie d'archivage DLL ou résolution de dépendance devienne disponible).

Sur chaque nouvelle boîte Windows 2008/7/Vista, je pense qu'un C de 30 Go est presque correct. Assez de place (pour l'instant) pour les correctifs, les journaux et quelques applications.

Je ne peux pas attendre que quelqu'un comprenne tout cela et commence à réactiver les DLL de pré-patch avec manifestes escrocs , qui deviennent des vecteurs d'attaque/d'exploitation.

18
Joseph Kern

C'est probablement trop tard pour vous, et uniquement basé sur l'expérience Vista, mais:

  1. Ne croyez pas ceux qui disent `` ses liens principalement durs, donc le dossier n'est pas aussi grand qu'il y paraît '' - c'est vrai, mais si vous manquiez d'espace disque, il était trop grand.
  2. Le seul "remède" jamais suggéré est de supprimer les applications qui ont ajouté le ballonnement au dossier - mais il n'y a aucun moyen documenté que je connaisse pour trouver les coupables.
  3. Mon "remède" après avoir échoué à trouver des réponses satisfaisantes a été de supprimer brutalement les dossiers les plus volumineux (et indésirables), par exemple:

    • 6 versions de la "recherche en langage naturel Microsoft", à ~ 300 Ko chacune
    • Beaucoup de polices orientales que je n'utiliserai jamais (parfois 6 vns de celles-ci, pour la plupart identiques)
    • etc.

En supposant que vous commenciez par une bonne sauvegarde (image), essayez-le et voyez!

5
Martin Gerhold

15 Go ne suffiront pas selon mon expérience, surtout s'il s'agit d'une machine 64 bits avec une certaine activité ...

L'extension du disque VPS puis de la partition système devrait être facile sans avoir à réinstaller quoi que ce soit, si cher qu'il soit. Offrir moins de 60 Go de disque système pour un VPS Windows Server moderne ne semble pas pensé en premier lieu même si ~ 30 Go pourraient le couper pendant un certain temps: 7

Opter pour une installation 32 bits supprimera un peu de surcharge, et opter pour un serveur Core en supprimera beaucoup. Mon serveur de fichiers Server 2008 Core 32 bits qui exécute svnserve, dfs, le service d'impression et ainsi de suite et est mis à jour régulièrement est d'environ 5 Go ... tandis que mon standard Server 2008 64 bits qui dessert les applications Web (asp.net et php utilisant IIS) prend 30 Go en ce moment. Ces deux mesures excluent les magasins de données/partitions bien sûr, uniquement le système Windows, et les deux ne sont que des exemples de disques système 64 bits Server 2008 qui prennent actuellement de 10 à 35 Go.

Chaque outil, mise à niveau ou application que vous installez augmentera le répertoire winsxs et la désinstallation n'aura pas toujours d'effet sur winsxs car le système peut penser que ces dépendances sont utilisées par d'autres outils.

5
Oskar Duveborn

Si cela est possible, vous pouvez essayer de déplacer WinSXS vers une autre partition comme solution de contournement. À ma connaissance, il n'y a aucun moyen de se débarrasser du contenu de WinSXS. Ce petit truc mignon est au cœur du fonctionnement de Vista/Win2008, donc ... Je n'ai rien entendu de mieux que de le déplacer vers une autre partition.

Voici un lien vers un blog décrivant comment le faire: Cliquez

Je vous suggère de faire une sauvegarde complète (encore mieux: une image) de l'ensemble de votre partition C: avant d'essayer la procédure. Rappelez-vous que j'ai essayé cela uniquement sur Vista, pas sur Win2008 Server.

4
imagodei

Si le principal coupable est WindowsUpdate, je dirais que votre seule alternative à l'achat de plus d'espace ou à la chirurgie de fichiers système est de limiter la croissance causée par les mises à jour de déclencheur de Microsoft.

Étant donné que vous utilisez principalement une plate-forme d'application non Microsoft, vous pouvez probablement vous passer de 90 à 95% des mises à jour "importantes".

Ainsi, ce que vous pouvez faire est de désactiver les mises à jour automatiques, puis d'être TRÈS sélectif sur les mises à jour "importantes" à appliquer. Appliquez uniquement celles qui corrigent des vulnérabilités qui compromettent DIRECTEMENT votre plan de sécurité. La plupart des mises à jour "importantes" ne s'appliquent probablement pas à votre scénario de sécurité, et si c'est le cas, vous pouvez probablement modifier votre plan de sécurité pour vous en passer (par exemple, n'utilisez pas IE sur le serveur, utiliser des services de fichiers alternatifs, renforcer la sécurité du réseau).

3
Matias Nino

Si WinDirStat et le système d'exploitation lui-même (juste sous sous Poste de travail) signalent la même quantité d'espace utilisé, ce n'est pas utile si son dénombrement est incorrect en tant que liens durs. Si le système d'exploitation pense que vous manquez d'espace - VOUS ÊTES HORS DE L'ESPACE.

J'ai ce problème sur un serveur de stockage 2008 et un DC (Server 2008). Aucun autre programme mais des mises à jour Windows n'ont été installés sur le DC, les deux serveurs consomment 15 Go d'espace sous WinSXS. Le Le serveur de stockage a été préinstallé par HP avec 40 Go sur C :, donc je souffre également de ce problème. Jusqu'à 5 Go d'espace libre.

Cela a été corrigé dans Windows 8/Server 2013 en utilisant DISM pour nettoyer les mises à jour remplacées (dism.exe/online/cleanup-image/startcomponentcleanup) .Il s'agit donc clairement d'un problème qu'ils ont reconnu, malheureusement sans autre solution que la mise à niveau pour ceux qui sont coincés avec 2008.

3
NickIzk99

Dans Windows Server 2008 R2, vous pouvez utiliser DISM pour nettoyer WinSxS, bien sûr, vous ne pourrez pas annuler les mises à jour après cela. Voici une explication: http://www.sqlskills.com/blogs/glenn/how-to-reclaim-disk-space-in-your-windowswinsxs-directory-on-windows-server-2008-r2- sp1 /

En résumé, vous devez exécuter la commande suivante en tant qu'administrateur:

DISM.exe /online /Cleanup-Image /spsuperseded

Je sais que cela pourrait ne pas être une solution pertinente pour vous puisque vous avez Windows Server 2008 (pas R2 apparemment), mais j'ai trouvé cette question lors de la recherche d'une solution pour R2, donc cela pourrait être utile pour certaines personnes.

3
Ynhockey

La configuration système requise par Microsoft pour Server 2008 est "Espace disque: minimum 32 Go ou plus".

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

Pourquoi pensez-vous qu'il peut fonctionner confortablement dans la moitié de cet espace?

1

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

J'ai trouvé cet article mais je ne l'ai jamais essayé. Il semble qu'il existe un moyen de se déplacer dans le dossier winsxs. si personne ne peut essayer ceci, merci de me faire signe

1
techsmarty

Quelques suggestions:

  • Où est votre fichier d'échange?

  • Configurez une machine de test avec le même logiciel pour voir si vous pouvez reproduire le problème. Ce n'est certainement pas normal, et la seule chose à laquelle je peux penser est que quelque chose sur cette boîte modifie constamment un DLL (ou quelque chose comme ça) et donc Windows en fait constamment des sauvegardes.

15 Go sont très bas pour une installation de Windows 2008 - mon lecteur C: standard pour les versions de Windows 2008 est de 60 Go.

1

Une option à utiliser - si c'est juste un vieux VPS bon marché que vous utilisez pour des choses simples, alors cela vaut la peine d'activer la compression NTFS sur le disque ou des dossiers spécifiques:

Cela pourrait libérer de l'espace sur le lecteur. Les articles disent que c'est pour XP mais ce sont les mêmes étapes sur Win7/2008:

0

J'ai rencontré le même problème. Sûrement WinSxs est en partie à blâmer ... Mais je pense que le problème est en partie dû à des outils comme WinDirStat comptant de la même manière les tailles des fichiers et des jonctions vers les fichiers. Une jonction n'est qu'un pointeur vers le fichier, pas un doublon de tous les blocs qui composent le fichier.

J'ai trouvé que VSS est un plus grand coupable de ce problème. Utilisez les commandes suivantes pour voir si VSS consomme trop d'espace disque, récupérer cet espace ou définir une limite plus petite:

liste vssadmin shadowstorage

vssadmin Supprimer ShadowStorage/For = C:/On = C:

vssadmin Resize ShadowStorage/For = C:/On = C:/MaxSize = 20%

0
Clayton