62 votes

Windows 2008 : Le répertoire WinSXS grandit de manière incontrôlée et bloque le serveur.

Je gère un serveur virtuel (hébergé à distance) avec Windows 2008 Server pour un client. Au départ, il disposait de 10 Go d'espace. Au cours de quelques semaines - pendant lesquelles rien n'a été fait sur la machine, à l'exception du travail normal utilisant un système de billetterie 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. Aujourd'hui, trois semaines plus tard, ces 5 Go ont également été consommés par Winsxs, et je ne peux à nouveau pas travailler sur la machine. Winsxs a maintenant une taille de 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 pour toutes les DLL qu'il télécharge dans le processus normal de mise à jour. Le simple fait de supprimer des éléments à cet endroit est décrit comme mortellement dangereux car ils contiennent des composants vitaux. Je n'ai trouvé aucune sorte d'outil ou d'instructions pour identifier et supprimer ces fichiers qui ne sont plus nécessaires.

Qu'est-ce que je peux faire ? Ce comportement est-il normal et, si c'est le cas, comment les autres serveurs disposant d'un espace aussi limité s'en sortent-ils ? Y a-t-il quelque chose que je puisse désactiver ou activer ?

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

Edit : Le problème persiste.

Note : Je suis conscient que le répertoire WinSXS est principalement constitué de liens symboliques et que les utilisateurs paniquent souvent en regardant sa taille. Pourtant, sur les 15 Go d'espace, j'ai 1,5 Mo utilisés par les programmes et les données, et 1,5 Mo utilisés par les programmes et les données. rien gauche. Je suis content de pouvoir accéder à cette foutue machine. *J'ai déjà libéré 1 Go de données, qui a été rempli par le Windows en 24 heures. C'est comme dans un film d'horreur. Ce que j'ai essayé :

  • L'installation de SP2 (qui est livré avec compcln.exe) n'est pas une option, car l'espace disque n'est pas suffisant même pour cela.
  • Il n'y a pas de vsp1clean.exe sur la machine, probablement parce que SP1 a déjà été intégré au système. En fait, il n'existe aucun fichier nommé *cln.exe nulle part.
  • Il y a no copies fantômes. Les copies fantômes ne sont pas actives.
  • Pour autant que je sache, il n'y a pas de points de restauration du système actifs.
  • Le seul rôle de serveur activé est "serveur de fichiers".
  • La fonction standard de "nettoyage" (clic droit sur le lecteur C :) me propose une quantité déconcertante de 2 Mo de contenu de la corbeille et de fichiers Internet temporaires.
  • L'utilisation d'un des "winsxs de nettoyage" scripts qui existent n'est pas une option pour moi, ils ont tous l'air trop louches. Je ne trouve rien directement de Microsoft qui traite de ce problème.

24voto

JCCyC Points 583

Le répertoire WinSxS est loin d'occuper l'espace indiqué par l'Explorateur puisqu'il utilise des liens durs vers des fichiers physiques, et non des fichiers réels. Explorer a simplement des problèmes pour rapporter 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 excellente explication sur le répertoire WinSxS.

Pour ce qui est de votre problème d'utilisation du disque, vous pouvez essayer d'exécuter COMPCLN.EXE pour voir si vous pouvez nettoyer les anciens Service Packs et les fichiers Hot Fix, ce qui devrait vous aider. Je regarderais également les répertoires de journalisation pour voir s'il n'y a pas autre chose qui se passe.

18voto

Joseph Kern Points 9759

J'étais dans le même bateau que vous. J'avais 5 VMs 2008 toutes neuves et je les regardais demander de plus en plus d'espace disque au cours de l'année dernière. Laissez-moi illustrer cela avec windrstat.

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

alt text 3.8 GB winsxs directory

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

alt text Répertoire winsxs de 5,4 Go

Enfin, une capture d'écran d'une un tout nouveau serveur 2008R2 : alt text Répertoire winsxs de 5,4 Go

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

Cela signifie deux choses (je pense) :

  1. Bien qu'il y ait quelques liens durs dans winsxs, les seuls liens durs devraient être ceux des DLLs actuelles. En d'autres termes, les DLLs actuelles qui sont actives dans le système sont reliées à ce dossier winsxs.

  2. Toutes les versions précédentes des DLLs 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 ne pourrait pas prendre 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 l'ensemble de votre lecteur C : a été relié au répertoire winsxs.

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

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

WinSxS n'est pas seulement un répertoire gênant, c'est une nouvelle méthodologie pour tous les développeurs Windows. WinSxS ne disparaîtra pas de sitôt. Les développeurs utilisent WinSxS et comptent sur lui pour être là jusqu'à ce qu'une nouvelle méthodologie d'archivage des DLL ou de résolution des dépendances soit disponible.

Sur chaque nouvelle boîte Windows 2008/7/Vista, je pense qu'un C : de 30 Go est presque correct. Il y a 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 pré-patch avec Manifeste de voyou qui deviennent des vecteurs d'attaque/exploitation.

6voto

Guy Points 16718

D'après mon expérience, 15 Go ne suffiront pas, 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, même si c'est coûteux. Proposer moins de 60 Go de disque système pour un VPS Windows Server moderne ne semble pas avoir été pensé en premier lieu, même si ~30 Go pourraient suffire pendant un certain temps :7

En optant pour une installation 32 bits, vous éliminerez un peu de frais généraux, et en optant pour un Server Core, vous en éliminerez beaucoup. Mon serveur de fichiers 32 bits Server 2008 Core, qui exécute svnserve, dfs, print serving, etc. et qui est mis à jour régulièrement, occupe environ 5 Go... tandis que mon serveur 64 bits Server 2008 Standard, qui gère les applications Web (asp.net et php à l'aide d'IIS), occupe actuellement 30 Go. Ces deux mesures ne tiennent pas compte des magasins/partitions de données, bien sûr, mais uniquement du système Windows, et elles ne sont que des exemples. J'ai des disques d'ordinateur Server 2008 64 bits qui occupent entre 10 et 35 Go en ce moment.

Chaque outil, mise à jour ou application que vous installez fera grossir 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.

5voto

Martin Gerhold Points 51

C'est probablement trop tard pour vous, et je me base uniquement sur l'expérience de Vista, mais.. :

  1. Ne croyez pas ceux qui disent : "il s'agit essentiellement de liens hypertextes, donc le dossier n'est pas aussi volumineux qu'il n'y paraît" - c'est vrai, mais si vous n'avez plus d'espace disque, c'est qu'il était trop volumineux.
  2. Le seul "remède" jamais proposé est de supprimer les applications qui ont ajouté le bloat 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 "Microsoft natural language search", de ~300kB chacune
    • De nombreuses polices de caractères orientales que je n'utiliserai jamais (parfois 6 vns de celles-ci, la plupart identiques)
    • etc, etc.

En supposant que vous démarrez avec une bonne sauvegarde (image), essayez et voyez !

4voto

motobói Points 155

Si cela est possible, vous pouvez essayer de déplacer WinSXS sur une autre partition comme solution de contournement. À ma connaissance, il n'existe aucun moyen de se débarrasser du contenu de WinSXS. Cette jolie petite chose est au cœur du fonctionnement de Vista/Win2008, donc... Je n'ai rien entendu de mieux que de le déplacer sur une autre partition.

Voici un lien vers un blog qui décrit comment procéder : Cliquez sur

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X