Windows 2008: répertoire WinSXS en croissance incontrôlable bloquant le serveur

62

J'exécute 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’était fait sur la machine sauf un travail normal avec un système Web basé sur un ticket -, Windows commença à remplir son infâme répertoire "winsxs" à tel point que le disque dur fut finalement complet et nous avons dû commander un autre 5 Go. Trois semaines plus tard, ces 5 Go ont également été consommés par Winsxs et, encore une fois, je ne peux plus 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 téléchargées dans le processus de mise à jour normal. La suppression d'éléments est décrite comme mortellement dangereuse car elle contient des composants vitaux. Je n'ai trouvé aucun outil ni instruction permettant d'identifier et de supprimer les fichiers devenus inutiles.

Que puis-je faire? Ce comportement est-il normal et, le cas échéant, comment gère-t-il les autres serveurs disposant d’un espace également limité? Y at-il quelque chose que je peux activer ou désactiver?

Parmi les rôles de serveur prédéfinis, seuls les "services de fichiers" (ou quelque chose comme ça s'appelle 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.

Edit: le problème persiste.

Remarque: Je suis conscient que le répertoire WinSXS consiste principalement en liens symboliques et que les utilisateurs paniquent souvent en regardant sa taille. Malgré tout, sur 15 Go d’espace, 1,5 Mo sont utilisés 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 Windows sous 24 heures. C'est comme dans un film d'horreur. Ce que j'ai essayé

  • L'installation de SP2 (qui vient avec compcln.exe) n'est pas une option, car l'espace disque n'est même pas suffisant.
  • Il n'y a pas de vsp1clean.exe sur la machine, probablement parce que le SP1 a déjà été fusionné dans le système. En fait, il n’existe aucun fichier nommé * cln.exe n’importe où.
  • Il n'y a pas de clichés instantanés. Les clichés instantanés ne sont pas actifs.
  • Autant que je sache, aucun point de restauration système n'est actif.
  • Le seul rôle de serveur activé est "serveur de fichiers".
  • La fonction standard de "nettoyage" (clic droit sur le lecteur C:) me propose un déroutant contenu de 2 Mo dans la corbeille et les fichiers Internet temporaires.
  • Utiliser l'un des scripts de "nettoyage winxs" n'est pas une option pour moi, ils ont tous l'air trop louche. Je ne trouve rien directement de Microsoft qui réponde à ce problème.
Pekka soutient GoFundMonica
la source
Avez-vous résolu ce problème à la fin?
UpTheCreek
@ UpTheCreek en fait, malheureusement, non! Le fournisseur nous a accordé 5 Go d’espace supplémentaire sur le VPS, que Windows n’a pas eu la chance de remplir. Mais le répertoire Windows occupe toujours 20 Go. Le contrat expirera bientôt et nous allons changer de société d'hébergement.
Pekka soutient GoFundMonica le

Réponses:

24

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

Cet article sur l’ espace disque (référencé ici http://aspoc.net/archives/2008/11/20/winsxs-disk-space-and-windows-7/ ) explique en détail le répertoire WinSxS.

En ce qui concerne votre problème d'utilisation du disque - Vous pouvez essayer d'exécuter COMPCLN.EXE pour voir si vous pouvez nettoyer tous les anciens fichiers du service pack et des correctifs, ce qui devrait vous aider un peu. J'examinerais également tous les répertoires de journalisation pour voir s'il se passait autre chose.

Christopher_G_Lewis
la source
Cela semble bien, mais le répertoire Windows semble en réalité consommer plus de 12 Go (c'est un espace de 15 Go, les programmes et les données de travail occupent 2,5 Go et il n'y a plus d'espace disponible). Compcln.exe n'existe pas en 2008, y a-t-il quelqu'un qui connaisse une commande similaire?
Pekka soutient GoFundMonica
Peut-être W2K8 SP2 uniquement: news.softpedia.com/news/…
Christopher_G_Lewis
Le SP2 semble intéressant, mais le serveur est si plein que je ne peux même pas l'installer. J'ai demandé au fournisseur un espace supplémentaire pendant quelques jours, mais ils ne se sont pas révélés trop utiles par le passé. C'est vraiment troublant et cause de graves problèmes. J'ouvre une prime et j'ajoute quelques captures d'écran.
Pekka soutient GoFundMonica
Je suppose que réimagerie de la machine et exécution de mises à jour ne sont pas une option pour vous?
blueberryfields
En dernier recours, j’ai investi beaucoup de travail pour tout mettre en place ... Cela résoudrait probablement le problème, mais je serais très heureux de le contourner.
Pekka soutient GoFundMonica
18

J'étais dans le même bateau que toi. J'avais 5 machines virtuelles 2008 toutes neuves et je les observais constamment, cela demande 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 :

texte alternatif 3,8 Go de répertoire winsxs

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

texte alternatif Répertoire de 5.4xWinsxs

Enfin, une capture d’écran d’un tout nouveau serveur 2008R2 : texte alternatif répertoire WinSSs 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 synonyme de Windows côte à côte. Dans leur tentative de réduire les effets des enfers de DLL (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 matériels dans Winsxs, les seuls liens matériels doivent être ceux des DLL actuelles. En d'autres termes, les DLL actuelles 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 constater dans tous les exemples, si le répertoire winsxs était réellement "principalement des liens durs", il ne pourrait en aucun cas occuper plus de 50% de votre utilisation actuelle du disque. Maintenant, même s’il était vrai que le répertoire winsxs était "principalement constitué de liens durs", une utilisation de 50% signifierait que l’intégralité de votre lecteur C: était reliée dans le répertoire winsxs.

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

Finalement, 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 à se développer. Bonne nouvelle cependant, car la dernière version de NTFS vous permet de développer vos partitions sans redémarrer. Comme c'est pratique.

WinSxS n'est pas simplement un répertoire ennuyeux, c'est une nouvelle méthodologie pour tous les développeurs Windows. WinSxS ne partira pas de si tôt. Les développeurs utilisent WinSxS et dépendent de cette fonctionnalité jusqu'à ce qu'une nouvelle méthodologie d'archivage des DLL ou de résolution des dépendances soit disponible.

Sur chaque nouvelle fenêtre Windows 2008/7 / Vista, j’ai le sentiment qu’un C: 30 Go est presque correct. Assez d'espace (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é-correctif avec des manifestes non fiables , qui deviennent des vecteurs d'attaque / exploit.

Joseph Kern
la source
1
Merci, si aucun moyen miraculeux de maigrir WinSXS n'apparaît, j'accepterai cette réponse pour m'avoir informé que je ne suis pas le seul à qui cela arrive. Dommage qu'il ne semble pas y avoir de solution. La mise à niveau à 30 Go sera difficile à justifier, car il s'agit d'un hébergement externe payé. Je vais peut-être rétrograder à 2003 - mais cela semble idiot aussi ...
Pekka soutient GoFundMonica
1
Oui, je ne suis pas trop ravi de cela non plus. Il semble que winsxs ne soit pas une collection de liens durs. Cela projette plutôt des liens concrets dans le reste du système, mais il semble y avoir un certain désaccord à ce sujet également. winvistaclub.com/f16.html ...
Joseph Kern
Je souhaitais également mentionner le fait que je n'ai activé aucun rôle de serveur sur les serveurs que j'ai utilisés à titre d'exemple. Le serveur de production est un serveur apache tomcat. Et le programme que j'ai utilisé pour trouver l'espace disque est windirstat.info
Joseph Kern
5
MS indique 32 Go comme exigence minimale de disque: microsoft.com/windowsserver2008/en/us/system-requirements.aspx
Christopher_G_Lewis
5

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 simple, sans aucune réinstallation, aussi coûteuse qu'elle soit. Offrir moins de 60 Go de disque système pour un VPS Windows Server moderne ne semble pas avoir été pensé, même si ~ 30 Go pouvaient le couper pendant un certain temps: 7

Une installation 32 bits supprime un peu la surcharge, et un serveur Core supprime beaucoup. Mon serveur de fichiers 32 bits Server 2008 Core, qui exécute svnserve, dfs, serveur d'impression, etc., et qui est mis à jour régulièrement, avoisine les 5 Go ... tandis que mon serveur 2008 bits 64 bits qui dessert des applications Web (asp.net et php avec IIS) prend 30 Go maintenant. Ces deux mesures excluent bien sûr les magasins / partitions de données, mais uniquement le système Windows. Ces deux exemples ne sont que des exemples. J'ai actuellement des disques système Server 2008 64 bits prenant entre 10 et 35 Go.

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

Oskar Duveborn
la source
5

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

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

    • 6 versions de 'Microsoft Natural Language Search', à environ 300 Ko chacune
    • Beaucoup de polices orientales que je n'utiliserai jamais (parfois 6 vns, la plupart identiques)
    • etc.

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

Martin Gerhold
la source
4

Si possible, essayez de déplacer WinSXS vers une autre partition en guise d'une solution de contournement. À ma connaissance, il n’existe aucun moyen de se débarrasser du contenu de WinSXS. Ce mignon petit truc est au cœur du fonctionnement de Vista / Win2008, alors ... je n'ai rien entendu de mieux pour le transférer sur une autre partition.

Voici un lien vers un blog décrivant la marche à suivre: Cliquez sur

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

imagodei
la source
Bonne idée, mais dans mon cas (il s'agit d'un VPS sans stockage alternatif), ce n'est malheureusement pas une option.
Pekka soutient GoFundMonica
--- et faire une image n’est pas si facile pour la même raison - sinon, j’en ferais une et je l’essaierais de l’exécuter sur ma propre machine pour un examen plus approfondi.
Pekka soutient GoFundMonica,
3

Si le principal coupable est WindowsUpdate, alors je dirais que votre seule alternative à l'achat de plus d'espace ou à la réalisation d'opérations sur les fichiers système est de limiter la croissance causée par les mises à jour à déclenchement facile de Microsoft.

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

Par conséquent, vous pouvez désactiver les mises à jour automatiques, puis être TRÈS sélectif quant aux mises à jour "importantes" à appliquer. Appliquez uniquement ceux qui corrigent des vulnérabilités compromettant DIRECTEMENT votre plan de sécurité. La plupart des mises à jour "importantes" ne s'appliquent probablement pas à votre scénario de sécurité. Si c'est le cas, vous pouvez probablement modifier votre plan de sécurité afin de vous en passer (par exemple, n'utilisez pas IE sur le serveur, utilisez des services de fichiers alternatifs, renforcez la sécurité du réseau). .

Matias Nino
la source
3

Si WinDirStat et le système d'exploitation lui-même (juste sous Poste de travail) indiquent la même quantité d'espace utilisé, il est insignifiant s'il est mal calculé en tant que liens durs. Si le système d'exploitation pense que vous êtes à court d'espace, vous êtes à court d'espace.

J'ai ce problème sur un serveur de stockage 2008 et un contrôleur de domaine (Server 2008). Aucun autre programme que les mises à jour Windows n'a été installé sur le contrôleur de domaine. Les deux serveurs consomment 15 Go d'espace sous WinSXS. HP avait préinstallé le serveur de stockage avec 40 Go sur C :, je suis donc également affecté par ce problème. Jusqu'à 5 Go d'espace libre.

Ce problème a été résolu dans Windows 8 / Server 2013 en utilisant DISM pour nettoyer les mises à jour obsolètes (dism.exe / online / cleanup-image / startcomponentcleanup). C’est donc un problème qu’elles ont reconnu. 2008.

NickIzk99
la source
3

Dans Windows Server 2008 R2, vous pouvez utiliser DISM pour nettoyer WinSxS. Bien entendu, vous ne pourrez pas annuler les mises à jour après cette opération. 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 lorsque je cherchais une solution pour R2, donc cela pourrait être utile pour certaines personnes.

Ynhockey
la source
cela supprime uniquement les fichiers pré sp1, et non les fichiers de correctifs ultérieurs.
Hubert Kario
1

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, c’est que quelque chose sur cette boîte modifie constamment une DLL (ou quelque chose du genre) et que Windows en fait constamment des sauvegardes.

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

John Röthlisberger
la source
La taille du paquet du fournisseur d’hébergement virtuel est de 15 Go et chaque extension (nous avons commencé à 10 Go) est très chère. C'est aussi pourquoi je ne peux pas déplacer le fichier d'échange ailleurs.
Pekka soutient GoFundMonica
Oh, j'ai oublié: Pour la même raison, reproduire la machine n'est pas si facile à faire. Ce sera le dernier recours à moins que rien ne fonctionne.
Pekka soutient GoFundMonica
Alors changez de fournisseur.
TomTom
1

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

J'ai trouvé cet article, mais je ne l'ai jamais essayé. On dirait qu'il existe un moyen de passer par-dessus le dossier winsxs. si personne ne peut essayer cela s'il vous plaît allez-y et laissez-moi savoir

techsmarty
la source
C'est le lien de la réponse de imagodei.
Cees Timmerman
1

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

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

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

TessellatingHeckler
la source
Je loue une solution VPS auprès d'un grand fournisseur d'hébergement qui était à l'origine un paquet de 10 Go avec 2008 Server pré-installé. Je suppose qu'ils ont dû prévoir cela d'une façon ou d'une autre. Les gros fournisseurs proposent des packages Windows de 10 ou 20 Go: voir par exemple bit.ly/h0AZsP . Le fournisseur m'a dit que le mien était une affaire
anormale
Mon erreur, j'ai lié aux exigences de Server 2008 R2 SP1. Server 2008 requiert au minimum 8 Go - microsoft.com/latam/windowsserver2008/sysreqs.mspx - mais recommande tout de même 40 Go.
TessellatingHeckler
Merci pour le lien. Cependant, il se peut que le système d'exploitation ait été mis à niveau entre les deux. Je vais enquêter
Pekka prend en charge GoFundMonica.
0

Une option à utiliser - s'il s'agit simplement d'un ancien VPS bon marché que vous utilisez pour des choses simples, il est alors intéressant d'activer la compression NTFS sur le disque ou dans 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:

David d C e Freitas
la source
0

J'ai rencontré le même problème. Certes, WinSxs est en partie à blâmer ... Mais je pense que le problème est en partie dû à des outils tels que WinDirStat qui comptent la taille des fichiers et les jonctions de fichiers de la même manière. Une jonction n'est qu'un pointeur sur le fichier, pas une copie de tous les blocs qui composent le fichier.

J'ai trouvé que VSS est un plus grand coupable dans ce problème. Utilisez les commandes suivantes pour voir si VSS consomme trop d’espace disque, récupérez cet espace ou définissez une limite inférieure:

liste vssadmin shadowstorage

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

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

Clayton
la source