Windows 2008: directory WinSXS in crescita incontrollabile, bloccando il server


62

Eseguo un server virtuale (ospitato in remoto) con Windows 2008 Server per un client. Inizialmente, aveva 10 GB di spazio. Nel corso di alcune settimane - durante le quali non è stato fatto nulla sulla macchina tranne il normale lavoro utilizzando un sistema icket basato sul web -, Windows ha iniziato a riempire la sua famigerata directory "winsxs" così tanto che alla fine il disco rigido era pieno e abbiamo dovuto ordinare altri 5 GB. Ora, tre settimane dopo, questi 5 GB sono stati consumati anche da Winsxs e di nuovo non riesco a lavorare sulla macchina. Winsxs ora è grande 8 GB, il resto della directory di Windows 5 GB.

Ho trovato varie fonti sul web che descrivono lo stesso problema. Apparentemente, Windows 2008 memorizza tutte le versioni linguistiche per tutte le DLL scaricate nel normale processo di aggiornamento. La semplice eliminazione di cose è descritta come mortalmente pericolosa in quanto contiene componenti vitali. Non ho trovato alcun tipo di strumento o istruzione per identificare e rimuovere quei file che non sono più necessari.

Cosa posso fare? È un comportamento normale e, se lo è, come gestiscono altri server con spazio altrettanto limitato? C'è qualcosa che posso spegnere o accendere?

Dei ruoli predefiniti del server, viene attivato solo "File service" (o come viene chiamato in inglese, è un server svizzero). Inoltre, ho installato Apache, mySQL e Subversion. Gli aggiornamenti automatici sono attivati.

Modifica: il problema persiste.

Nota: sono consapevole che la directory di WinSXS è costituita principalmente da collegamenti simbolici e che gli utenti spesso vanno in panico osservando le sue dimensioni. Tuttavia, su 15 GB di spazio, ho 1,5 MB utilizzati da programmi e dati e non è rimasto nulla . Sono contento di poter persino accedere a quella maledetta macchina. * Ho già liberato 1 GB di dati, che è stato riempito da Windows in 24 ore. È come in un film horror. Cosa ho provato:

  • L'installazione di SP2 (fornita con compcln.exe) non è un'opzione, poiché lo spazio su disco non è sufficiente nemmeno per quello.
  • Non esiste vsp1clean.exe sulla macchina, probabilmente perché SP1 è già stato unito al sistema. In effetti, non esiste alcun file denominato * cln.exe da nessuna parte.
  • Non ci sono nessun copie shadow. Le copie shadow non sono attive.
  • Per quanto ne so, non ci sono punti di ripristino del sistema attivi.
  • L'unico ruolo del server attivato è "file server".
  • La funzione standard "cleanup" (tasto destro del mouse su C: drive) mi offre uno sconcertante 2 MB di contenuto spazzatura e file temporanei Internet.
  • L'uso di uno degli script "cleanup winsxs" non è un'opzione per me, sembrano tutti troppo ombrosi. Non riesco a trovare nulla direttamente da Microsoft per risolvere questo problema.

Hai risolto questo alla fine?
UpTheCreek

@UpTheCreek in realtà, purtroppo, no! Il provider ci ha concesso 5 GB di spazio aggiuntivo sul VPS, che Windows Lucky non ha riempito. Ma la directory di Windows occupa ancora 20 GB. Il contratto scadrà presto e cambieremo società di hosting.
Pekka supporta GoFundMonica il

Risposte:


24

La directory WinSxS non occupa quasi lo spazio riportato da Explorer poiché utilizza Hard Link per file fisici, non per file effettivi. Explorer ha solo problemi a segnalare la dimensione dei collegamenti reali.

Questo articolo su Spazio su disco (indicato qui http://aspoc.net/archives/2008/11/20/winsxs-disk-space-and-windows-7/ ) contiene una grande spiegazione sulla directory di WinSxS.

Per quanto riguarda il tuo effettivo problema di utilizzo del disco: puoi provare a eseguire COMPCLN.EXE per vedere se riesci a ripulire eventuali vecchi file di service pack e hot fix, che dovrebbero aiutare un po '. Vorrei anche esaminare tutte le directory di registrazione per vedere se c'è qualcos'altro in corso.


Suona bene, tuttavia sembra che la directory di Windows stia consumando> 12 GB (è uno spazio di 15 GB, i programmi e i dati di lavoro occupano 2,5 GB e non c'è più spazio). Compcln.exe non esiste nel 2008, qualcuno conosce un comando simile lì?
Pekka supporta GoFundMonica il


SP2 sembra interessante, ma il server è così pieno che non riesco nemmeno a installarlo. Ho chiesto al provider un po 'di spazio aggiuntivo per alcuni giorni, ma in passato non si sono rivelati troppo utili. Questo è davvero preoccupante e causa gravi problemi. Sto aprendo una taglia e aggiungendo alcune schermate.
Pekka supporta GoFundMonica l'

Immagino che il reimaging della macchina e l'esecuzione degli aggiornamenti non siano un'opzione per te?
blueberryfields,

Solo come ultima, ultima risorsa, dato che ho investito molto lavoro per sistemare tutto ... Questo probabilmente lo risolverebbe, ma sarei molto felice di aggirarlo.
Pekka supporta GoFundMonica l'

18

Ero nella stessa barca come te. Avevo 5 nuovissime VM 2008 e le stavo guardando costantemente richiedevano sempre più spazio su disco nell'ultimo anno. Vorrei illustrare con windrstat.

Ecco una schermata di un nuovissimo server 2008 :

testo alternativo Directory di winsxs da 3,8 GB

Ora ecco una schermata di un server di produzione 2008 :

testo alternativo Cartella winsxs da 5,4 GB

Finalmente una schermata di un nuovissimo server 2008R2 : testo alternativo directory winsxs da 5,4 GB

Da quello che posso dire, non c'è modo di troncare la directory di Winsxs. WinSxS è l'acronimo di Windows Side-by-Side. Nel loro tentativo di ridurre gli effetti infernali della DLL (ovvero le dipendenze) Microsoft ha deciso di mantenere tutte le versioni di ogni DLL mai installate sul proprio sistema nella directory di winsxs.

Ciò significa due cose (penso):

  1. Mentre ci sono alcuni hard link in winsxs, gli unici hard link dovrebbero essere quelli delle attuali DLL. In altre parole, le DLL correnti che sono attive nel sistema vengono nuovamente collegate a questa cartella winsxs.

  2. Tutte le versioni precedenti delle DLL sono ancora disponibili ed è stato eseguito il backup nella directory winsxs. Come puoi vedere in tutti gli esempi, se la directory di winsxs fosse in realtà "per lo più hard link", non ci sarebbe modo di occupare più del 50% del tuo attuale utilizzo del disco. Ora, anche se fosse vero che la directory di winsxs è "per lo più hardlink", un utilizzo del 50% significherebbe che l'intero disco C: è stato ricollegato alla directory di winsxs.

Ho provato di tutto. Eliminazione di vecchi file, disinstallazione di patch, eliminazione delle directory di patch "$". Qualunque cosa.

Alla fine ho finito per far crescere tutte le partizioni C: su tutti i miei server a 30 GB ciascuna. Questa sarà solo una soluzione temporanea, poiché la directory winsxs continuerà a crescere. Buone notizie però, poiché l'ultima versione di NTFS ti consente di far crescere le tue partizioni senza riavviare. Quanto conveniente.

WinSxS non è solo una directory fastidiosa, è una nuova metodologia per tutti gli sviluppatori di Windows. WinSxS non andrà via presto. Gli sviluppatori utilizzano WinSxS e dipendono da esso fino a quando non sarà disponibile una nuova metodologia di archiviazione DLL o risoluzione delle dipendenze.

Su ogni nuovo box Windows 2008/7 / Vista sento che un 30GB C: è quasi giusto. Abbastanza spazio (per ora) per patch, log e alcune applicazioni.

Non vedo l'ora che qualcuno capisca tutto questo e inizi a riattivare le DLL pre-patch con manifest non autorizzati , che diventano vettori di attacco / exploit.


1
Grazie, se non si presenta alcun modo miracoloso di dimagrire WinSXS accetterò questa risposta per farmi sapere che non sono l'unico a cui sta succedendo. Peccato che non sembra esserci una soluzione. L'aggiornamento a 30 GB sarà difficile da giustificare, poiché si tratta di hosting esterno a pagamento. Forse
eseguirò il

1
Sì, non sono neanche troppo elettrizzato per questo. Sembra che winsxs non sia una raccolta di collegamenti reali. Piuttosto proietta hardlink nel resto del sistema, ma sembra esserci anche un disaccordo su questo. winvistaclub.com/f16.html ...
Joseph Kern,

Volevo anche menzionare che non ho ruoli di server abilitati su nessuno dei server che ho usato per esempi. Il server di produzione è un server tomcat apache. E il programma che ho usato per trovare lo spazio su disco è windirstat.info
Joseph Kern,

5
MS indica 32 GB come requisito minimo del disco: microsoft.com/windowsserver2008/en/us/system-requirements.aspx
Christopher_G_Lewis

5

15 GB non lo taglieranno nella mia esperienza, soprattutto se si tratta di una macchina a 64 bit con qualche attività ...

L'estensione del disco VPS e quindi della partizione di sistema dovrebbe essere semplice senza dover reinstallare nulla, per quanto costoso. Offrendo meno di 60 GB di disco di sistema per un moderno VPS di Windows Server non sembra pensato prima, anche se ~ 30 GB potrebbero tagliarlo per un po ': 7

L'installazione a 32 bit rimuoverà un po 'di sovraccarico e quella per un Server Core rimuoverà molto. Il mio server di file Server 2008 Core a 32 bit che esegue svnserve, dfs, servizio di stampa e così via e viene aggiornato regolarmente è di circa 5 GB ... mentre il mio Server 2008 Standard a 64 bit che serve applicazioni Web (asp.net e php utilizzando IIS) occupa 30 GB in questo momento. Entrambe queste metriche escludono naturalmente gli archivi / partizioni di dati, solo il sistema Windows, ed entrambi sono solo esempi che ho dischi di sistema Server 2008 a 64 bit che occupano da 10 a 35 GB in questo momento.

Ogni strumento, aggiornamento o applicazione che installerai farà crescere la directory di winsxs e la disinstallazione di cose non avrà sempre alcun effetto su winsxs poiché il sistema potrebbe pensare che tali dipendenze vengano utilizzate da altri strumenti.


5

Questo probabilmente è troppo tardi per te e si basa solo sull'esperienza Vista, ma:

  1. Non credere a quelli che dicono "i suoi collegamenti per lo più hard, quindi la cartella non è grande come sembra" - questo è vero, ma se hai esaurito lo spazio su disco, è troppo grande.
  2. L'unica 'cura' mai suggerita è quella di rimuovere le applicazioni che hanno aggiunto il gonfio alla cartella, ma non esiste un modo documentato che io conosca per trovare i colpevoli.
  3. La mia "cura" dopo non aver trovato risposte soddisfacenti era quella di rimuovere brutalmente le cartelle più grandi (e indesiderate), ad esempio:

    • 6 versioni di 'Microsoft natural language search', a ~ 300kB ciascuna
    • Molti caratteri orientali che non userò mai (a volte 6 vn di questi, per lo più identici)
    • ecc. ecc.

Supponendo che inizi con un buon backup (immagine), provalo e vedi!


4

Se possibile, puoi provare a spostare WinSXS in un'altra partizione come soluzione alternativa. Per quanto ne sappia, non c'è modo di sbarazzarsi del contenuto di WinSXS. Questa piccola cosa carina è nel cuore dell'operazione Vista / Win2008, quindi ... Non ho sentito niente di meglio come spostarlo in un'altra partizione.

Ecco un link a un blog che descrive come farlo: Fare clic

Suggerirei di fare un backup completo (ancora meglio: un'immagine) dell'intera partizione C: prima di provare la procedura. Intendiamoci che ho provato questo solo su Vista, non su Win2008 Server.


Buona idea, ma nel mio caso (questo è un VPS senza memoria alternativa) purtroppo non è un'opzione.
Pekka supporta GoFundMonica il

--- e creare un'immagine non è così facile per lo stesso motivo - altrimenti ne farei una e proverei a eseguirla sulla mia macchina per un ulteriore esame.
Pekka supporta GoFundMonica il

3

Se il principale colpevole è WindowsUpdate, direi che la tua unica alternativa all'acquisto di più spazio o all'esecuzione di interventi chirurgici sui file di sistema è quella di limitare la crescita causata dagli aggiornamenti innescati di Microsoft.

Dato che usi principalmente una piattaforma applicativa non Microsoft, probabilmente puoi fare a meno che il 90-95% degli aggiornamenti "importanti" non vengano inviati.

Pertanto, ciò che puoi fare è disabilitare gli aggiornamenti automatici e quindi essere MOLTO selettivo su quali aggiornamenti "importanti" applicare. Applicare solo quelli che correggono le vulnerabilità che compromettono DIRETTAMENTE il piano di sicurezza. La maggior parte degli aggiornamenti "importanti" probabilmente non si applica al tuo scenario di sicurezza e, in caso affermativo, puoi probabilmente modificare il tuo piano di sicurezza per farne a meno (ad esempio, non utilizzare IE sul server, utilizzare servizi di file alternativi, rafforzare la sicurezza della rete) .


3

Se WinDirStat e il sistema operativo stesso (appena visualizzato in Risorse del computer) riportano la stessa quantità di spazio utilizzato, è irrilevante se conta erroneamente le dimensioni come collegamenti reali. Se il sistema operativo pensa di essere senza spazio, SEI FUORI DALLO SPAZIO.

Ho questo problema su un Storage Server 2008 e un DC (Server 2008). Nessun altro programma, tranne gli aggiornamenti di Windows, è stato installato sul controller di dominio, entrambi i server occupano 15 GB di spazio in WinSXS. Lo Storage Server è stato preinstallato da HP con 40 GB su C :, quindi anch'io soffro di questo problema. Fino a 5 GB di spazio libero.

Ciò è stato risolto in Windows 8 / Server 2013 utilizzando DISM per ripulire gli aggiornamenti sostituiti (dism.exe / online / cleanup-image / startcomponentcleanup), quindi chiaramente questo è un problema che hanno riconosciuto, purtroppo senza alcuna correzione se non l'aggiornamento per quelli bloccati con del 2008.


3

In Windows Server 2008 R2 è possibile utilizzare DISM per ripulire WinSxS, ovviamente non sarà possibile ripristinare gli aggiornamenti dopo aver effettuato l'operazione. Ecco una spiegazione: http://www.sqlskills.com/blogs/glenn/how-to-reclaim-disk-space-in-your-windowswinsxs-directory-on-windows-server-2008-r2-sp1/

In breve, è necessario eseguire il seguente comando come amministratore:

DISM.exe /online /Cleanup-Image /spsuperseded

So che questa potrebbe non essere una soluzione pertinente per te poiché hai Windows Server 2008 (non apparentemente R2), ma ho trovato questa domanda quando cercavo una soluzione per R2, quindi potrebbe essere utile per alcune persone.


ciò rimuove solo i file pre sp1, non i file dagli hotfix successivi.
Hubert Kario,

1

Un paio di suggerimenti:

  • Dov'è il tuo file di scambio?

  • Configurare una macchina di prova con lo stesso software per vedere se è possibile replicare il problema. Questo non è assolutamente normale, e l'unica cosa che mi viene in mente è che qualcosa su quella scatola modifica costantemente una DLL (o qualcosa del genere) e quindi Windows ne fa costantemente backup.

15 GB sono decisamente bassi per un'installazione di Windows 2008 - la mia unità C standard: build per Windows 2008 è 60 GB.


I 15 GB sono le dimensioni del pacchetto del provider di hosting virtuale e ogni estensione (siamo partiti da 10 GB) è molto costosa. Questo è anche il motivo per cui non riesco a spostare il file di scambio altrove.
Pekka supporta GoFundMonica il

Oh, ho dimenticato: per lo stesso motivo, replicare la macchina non è così facile da fare. Sarà l'ultima risorsa a meno che nient'altro funzioni.
Pekka supporta GoFundMonica il

Quindi cambia fornitore.
TomTom,


1

I requisiti di sistema forniti da Microsoft per Server 2008 sono "Spazio su disco: minimo 32 GB o superiore".

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

Perché pensi che possa funzionare comodamente in metà di quello spazio?


Sto noleggiando una soluzione VPS da un grande provider di hosting che originariamente era un pacchetto da 10 GB con Server 2008 preinstallato. Presumo che debbano averlo previsto in qualche modo. I grandi fornitori hanno pacchetti Windows da 10 GB o 20 GB: vedi ad esempio bit.ly/h0AZsP . Il provider mi ha detto che il mio è un caso
bizzarro

Errore mio, sono stato collegato ai requisiti di Server 2008 R2 SP1. Server 2008 richiede almeno 8 GB - microsoft.com/latam/windowsserver2008/sysreqs.mspx - ma raccomanda comunque 40 GB.
TessellatingHeckler,

grazie per il link. Tuttavia, è possibile che il sistema operativo sia stato aggiornato nel mezzo - indagherò
Pekka supporta GoFundMonica il

0

Un'opzione da utilizzare: se si utilizza solo un vecchio VPS economico per scopi semplici, vale la pena abilitare la compressione NTFS sul disco o su cartelle specifiche:

Questo potrebbe spremere un po 'di spazio dall'unità. L'articolo dice che è per XP ma sono gli stessi passaggi su Win7 / 2008:


0

Ho riscontrato lo stesso problema. Sicuramente WinSxs è in parte responsabile ... Ma penso che il problema sia in parte dovuto a strumenti come WinDirStat che contano le dimensioni di file e giunzioni su file allo stesso modo. Una giunzione è solo un puntatore al file, non un duplicato di tutti i blocchi che compongono il file.

Ho scoperto che VSS è un colpevole più grande in questo problema. Utilizzare i comandi seguenti per vedere se VSS sta consumando troppo spazio su disco, recuperare quello spazio o impostare un limite inferiore:

elenco vssadmin shadowstorage

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

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.