Windows 2008: Diretório WinSXS crescendo incontrolavelmente, bloqueando o servidor

62

Eu executo um servidor virtual (hospedado remotamente) com o Windows 2008 Server para um cliente. Inicialmente, tinha 10 GB de espaço. Durante algumas semanas - durante as quais nada foi feito na máquina, exceto o trabalho normal usando um sistema de ticket baseado na Web -, o Windows começou a preencher tanto o seu infame diretório "winsxs" que, no final, o disco rígido foi danificado. cheio e tivemos que pedir mais 5 GB. Agora, três semanas depois, esses 5 GB também foram consumidos pelo winsxs e, novamente, não posso trabalhar na máquina. O Winsxs agora tem 8 GB de tamanho e o restante do diretório do Windows, 5 GB.

Encontrei várias fontes na web que descrevem o mesmo problema. Aparentemente, o Windows 2008 armazena todas as versões de idioma para todas as DLLs que ele baixa no processo de atualização normal. A simples exclusão de coisas é descrita como mortalmente perigosa, pois contém componentes vitais. Não encontrei nenhum tipo de ferramenta ou instruções para identificar e remover os arquivos que não são mais necessários.

O que eu posso fazer? Esse comportamento é normal e, se for, como outros servidores com espaço igualmente limitado gerenciam? Existe algo que eu possa desligar ou ligar?

Das funções de servidor predefinidas, apenas "Serviços de arquivo" (ou como é chamado em inglês, é um servidor suíço) é ativado. Além disso, eu instalei o Apache, mySQL e Subversion. As atualizações automáticas estão ativadas.

Edit: O problema persiste.

Nota: Estou ciente de que o diretório WinSXS consiste principalmente de links simbólicos e que os usuários geralmente entram em pânico ao ver seu tamanho. Ainda assim, dos 15 GB de espaço, tenho 1,5 MB usados ​​por programas e dados e nada resta. Estou feliz por poder acessar a maldita máquina. * Já liberei 1 GB de dados, que foram preenchidos pelo Windows Windows em 24 horas. É como em um filme de terror. O que eu tentei:

  • Instalar o SP2 (que acompanha o compcln.exe) não é uma opção, pois o espaço em disco não é suficiente para isso.
  • Não há vsp1clean.exe na máquina, provavelmente porque o SP1 já foi incorporado ao sistema. De fato, não existe nenhum arquivo chamado * cln.exe em lugar algum.
  • Não cópias de sombra. Cópias de sombra não estão ativas.
  • Pelo que sei, não há pontos de restauração do sistema ativos.
  • A única função de servidor ativada é "servidor de arquivos".
  • A função "limpeza" padrão (clique com o botão direito do mouse na unidade C:) está me oferecendo 2 MB desconcertantes em conteúdo de lixo e arquivos temporários da Internet.
  • Usar um dos scripts de "limpeza winsxs" não é uma opção para mim, todos parecem muito obscuros. Não consigo encontrar nada diretamente da Microsoft abordando esse problema.
Pekka suporta GoFundMonica
fonte
Você resolveu isso no final?
UpTheCreek 13/01
@UpTheCreek, na verdade, infelizmente, não! O provedor nos concedeu 5 GB de espaço adicional no VPS, que o Windows sortudo não preencheu. Mas o diretório do Windows ainda ocupa 20 GB. O contrato terminará em breve e mudaremos as empresas de hospedagem.
Pekka suporta GoFundMonica

Respostas:

24

O diretório WinSxS não ocupa quase o espaço relatado pelo Explorer, pois usa Hard Links para arquivos físicos, não para arquivos reais. O Explorer apenas apresenta problemas ao informar o tamanho dos links físicos.

Este artigo sobre Espaço em Disco (mencionado aqui http://aspoc.net/archives/2008/11/20/winsxs-disk-space-and-windows-7/ ) tem uma ótima explicação no diretório WinSxS.

Quanto ao seu problema real de uso do disco - Você pode tentar executar o COMPCLN.EXE para verificar se é possível limpar algum service pack antigo e arquivos de hot fix, o que deve ajudar bastante. Gostaria também de olhar para todos os diretórios de log para ver se há algo mais acontecendo.

Christopher_G_Lewis
fonte
Parece bom, no entanto, o diretório do Windows parece estar consumindo> 12 GB (é um espaço de 15 GB, os programas e os dados de trabalho ocupam 2,5 GB e não resta espaço). Compcln.exe não existe em 2008, alguém conhece um comando semelhante lá?
Pekka suporta GoFundMonica
Possivelmente apenas no W2K8 SP2: news.softpedia.com/news/…
Christopher_G_Lewis
O SP2 parece interessante, mas o servidor está tão cheio que nem consigo instalá-lo. Solicitei ao provedor algum espaço adicional por alguns dias, mas eles não se mostraram muito úteis no passado. Isso é realmente preocupante e está causando problemas graves. Estou abrindo uma recompensa e adicionando algumas capturas de tela.
Pekka suporta GoFundMonica
Suponho que reimaginar a máquina e executar atualizações não é uma opção para você?
9609 blueberryfields
Apenas como o último, muito último recurso, pois investi muito trabalho para configurar tudo ... Isso provavelmente resolveria, mas eu ficaria muito feliz em contornar isso.
Pekka suporta GoFundMonica
18

Eu estava no mesmo barco que você. Eu tinha 5 novas VMs de 2008 e estava assistindo a elas constantemente exigindo mais e mais espaço em disco no ano passado. Deixe-me ilustrar com windrstat.

Aqui está uma captura de tela de um novo servidor de 2008 :

texto alternativo Diretório winsxs de 3,8 GB

Agora, aqui está uma captura de tela de um servidor de produção 2008 :

texto alternativo Diretório winsxs de 5,4 GB

Finalmente, uma captura de tela de um novo servidor 2008R2 : texto alternativo diretório winsxs de 5,4 GB

Pelo que sei, não há como truncar o diretório winsxs. WinSxS significa Windows lado a lado. Na tentativa de reduzir os efeitos da DLL (ou seja, dependências), a Microsoft decidiu manter todas as versões de todas as DLL já instaladas no sistema no diretório winsxs.

Isso significa duas coisas (eu acho):

  1. Embora existam alguns links físicos no winsxs, os únicos links físicos devem ser os das DLLs atuais. Em outras palavras, as DLLs atuais ativas no sistema são vinculadas novamente a esta pasta winsxs.

  2. Todas as versões anteriores das DLLs ainda estão disponíveis e com backup no diretório winsxs. Como você pode ver em todos os exemplos, se o diretório winsxs realmente fosse "principalmente links físicos", não haveria maneira de ocupar mais de 50% do uso atual do disco. Agora, mesmo que seja verdade que o diretório winsxs é "principalmente hardlinks", o uso de 50% significaria que toda a unidade C: foi conectada novamente ao diretório winsxs.

Eu tentei de tudo. Excluindo arquivos antigos, desinstalando patches, excluindo os diretórios de patches "$". Tudo.

Finalmente, acabei aumentando todas as partições C: em todos os meus servidores para 30 GB cada. Isso será apenas uma correção temporária, pois o diretório winsxs continuará a crescer. Boas notícias, porém, como a versão mais recente do NTFS permite aumentar suas partições sem reiniciar. Quão conveniente.

O WinSxS não é apenas um diretório irritante, é uma nova metodologia para todos os desenvolvedores do Windows. O WinSxS não desaparecerá tão cedo. Os desenvolvedores estão usando o WinSxS e, dependendo disso, estarão disponíveis até que uma nova metodologia de arquivamento de DLL ou resolução de dependência seja disponibilizada.

Em todas as novas caixas do Windows 2008/7 / Vista, sinto que um C de 30GB está quase certo. Espaço suficiente (por enquanto) para patches, logs e alguns aplicativos.

Mal posso esperar até que alguém descubra tudo isso e comece a reativar DLLs anteriores ao patch com manifestos desonestos , que se tornam vetores de ataque / exploração.

Joseph Kern
fonte
11
Obrigado, se nenhuma maneira milagrosa de emagrecer o WinSXS aparecer, eu aceitarei esta resposta por me informar que não sou a única com quem isso está acontecendo. Pena que não parece haver uma solução. A atualização para 30 GB será difícil de justificar, pois é uma hospedagem paga externa. Talvez eu vou fazer o downgrade para 2003 - mas que o som bobo assim ...
Pekka suporta GoFundMonica
11
Sim, também não estou muito empolgado com isso. Parece que winsxs não é uma coleção de links físicos. Em vez disso, ele projeta hardlinks para o resto do sistema, mas parece haver algum desacordo sobre isso também. winvistaclub.com/f16.html ...
Joseph Kern
Eu também queria mencionar que não tenho funções de servidor ativadas em nenhum dos servidores que usei para exemplos. O servidor de produção é um servidor apache tomcat. E o programa que eu usei para encontrar o espaço da unidade é windirstat.info
Joseph Kern
5
MS faz estado 32 GB como requisito mínimo disco: microsoft.com/windowsserver2008/en/us/system-requirements.aspx
Christopher_G_Lewis
5

15 GB não serão suficientes na minha experiência, especialmente se for uma máquina de 64 bits com alguma atividade ...

Estender o disco VPS e, em seguida, a partição do sistema deve ser fácil sem precisar reinstalar nada, por mais caro que seja. Oferecer menos de 60 GB de disco do sistema para um VPS moderno do Windows Server não parece pensado em primeiro lugar, mesmo que ~ 30 GB possam reduzir por um tempo: 7

Ir para a instalação de 32 bits removerá um pouco de sobrecarga, e optar por um Server Core removerá muito. Meu servidor de arquivos Core Server Server 32 bits de 32 bits, que executa svnserve, dfs, serviço de impressão e assim por diante e é atualizado regularmente é de cerca de 5 GB ... enquanto meu Server 2008 Standard de 64 bits que atende aplicativos da Web (asp.net e php usando o IIS) ocupa 30 GB agora. Ambas as métricas estão excluindo os armazenamentos / partições de dados, é claro, apenas o sistema Windows, e ambos são apenas exemplos. Tenho discos de sistema Server 2008 de 64 bits que ocupam algo entre 10 e 35 GB no momento.

Toda ferramenta, atualização ou aplicativo que você instala aumentará o diretório winsxs e a desinstalação de coisas nem sempre terá efeito no winsxs, pois o sistema pode pensar que essas dependências são usadas por outras ferramentas.

Oskar Duveborn
fonte
5

Provavelmente é tarde demais para você e apenas com base na experiência do Vista, mas:

  1. Não acredite naqueles que dizem "seus links físicos, na maioria das vezes, para que a pasta não seja tão grande quanto parece" - isso é verdade, mas se você ficou sem espaço em disco, era muito grande.
  2. A única 'cura' já sugerida é remover os aplicativos que adicionaram o inchaço à pasta - mas não há nenhuma maneira documentada que eu conheça para encontrar os culpados.
  3. Minha 'cura' depois de não encontrar respostas satisfatórias foi remover brutalmente as pastas maiores (e indesejadas), por exemplo:

    • 6 versões do 'Microsoft natural language search', a ~ 300kB cada
    • Muitas fontes orientais que nunca vou usar (às vezes 6 vns delas, a maioria são idênticas)
    • etc etc.

Supondo que você comece com um bom backup (imagem), experimente e veja!

Martin Gerhold
fonte
4

Se possível, você pode tentar mover o WinSXS para outra partição como uma solução alternativa. Que eu saiba, não há como se livrar do conteúdo do WinSXS. Essa coisinha fofa está no coração da operação do Vista / Win2008, então ... eu não ouvi nada melhor do que movê-la para outra partição.

Aqui está um link para um blog descrevendo como fazê-lo: Clique em

Eu sugiro que você faça um backup completo (ainda melhor: uma imagem) de toda a sua partição C: antes de tentar o procedimento. Lembre-se de que eu tentei isso apenas no Vista, não no Win2008 Server.

imagodei
fonte
Boa ideia, mas no meu caso (este é um VPS sem armazenamento alternativo), infelizmente não é uma opção.
Pekka suporta GoFundMonica
--- e criar uma imagem não é tão fácil pelo mesmo motivo - caso contrário, eu faria uma e tentaria executá-la em minha própria máquina para um exame mais aprofundado.
Pekka suporta GoFundMonica
3

Se o principal culpado for o WindowsUpdate, eu diria que sua única alternativa para comprar mais espaço ou realizar uma cirurgia no arquivo do sistema é limitar o crescimento causado pelas atualizações ativadas pela Microsoft.

Como você usa principalmente uma plataforma de aplicativos que não é da Microsoft, é possível que 90-95% das atualizações "importantes" sejam empurradas para baixo.

Portanto, o que você pode fazer é desativar as atualizações automáticas e ser MUITO seletivo sobre quais atualizações "importantes" serão aplicadas. Aplique apenas aqueles que corrigem vulnerabilidades que comprometem DIRETAMENTE seu plano de segurança. A maioria das atualizações "importantes" provavelmente não se aplica ao seu cenário de segurança e, se o fizer, você provavelmente pode modificar seu plano de segurança para ficar sem elas (por exemplo, não use o IE no servidor, use serviços de arquivo alternativos, reforce a segurança da rede) .

Matias Nino
fonte
3

Se o WinDirStat e o próprio sistema operacional (apenas visualizado em Meu computador) estão relatando a mesma quantidade de espaço usado, é irrelevante se estiver desmembrando os tamanhos como links físicos. Se o sistema operacional achar que você está sem espaço - VOCÊ ESTÁ SEM ESPAÇO.

Eu tenho esse problema em um Storage Server 2008 e um DC (Server 2008). Nenhum outro programa, exceto as atualizações do Windows, foi instalado no controlador de domínio, os dois servidores estão consumindo 15 GB de espaço no WinSXS. O servidor de armazenamento foi pré-instalado pela HP com 40 GB em C :, então também estou sofrendo com esse problema. Até 5 GB de espaço livre.

Isso foi corrigido no Windows 8 / Server 2013 usando o DISM para limpar as atualizações substituídas (dism.exe / online / cleanup-image / startcomponentcleanup). Portanto, é claro que esse é um problema que eles reconheceram, infelizmente sem outra correção além da atualização para aqueles que estão presos 2008.

NickIzk99
fonte
3

No Windows Server 2008 R2, você pode usar o DISM para limpar o WinSxS; é claro que não será possível reverter as atualizações depois disso. Aqui está uma explicação: http://www.sqlskills.com/blogs/glenn/how-to-reclaim-disk-space-in-your-windowswinsxs-directory-on-windows-server-2008-r2-sp1/

Em resumo, você precisa executar o seguinte comando como administrador:

DISM.exe /online /Cleanup-Image /spsuperseded

Sei que essa pode não ser uma solução relevante para você, pois você possui o Windows Server 2008 (aparentemente não o R2), mas encontrei essa pergunta ao procurar uma solução para o R2, pelo que pode ser útil para algumas pessoas.

Ynhockey
fonte
isso remove apenas os arquivos anteriores ao sp1, não os arquivos dos hotfixes que vieram mais tarde.
Hubert Kario
1

Algumas sugestões:

  • Onde está o seu arquivo de troca?

  • Configure uma máquina de teste com o mesmo software para ver se você pode replicar o problema. Definitivamente, isso não é normal, e a única coisa em que consigo pensar é que algo nessa caixa está constantemente modificando uma DLL (ou algo parecido) e, portanto, o Windows está constantemente fazendo backups dela.

Os 15 GB estão muito baixos para uma instalação do Windows 2008 - minha unidade C: padrão para Windows 2008 é de 60 GB.

John Röthlisberger
fonte
Os 15 GB são do tamanho do pacote do provedor de hospedagem virtual e cada extensão (que começamos com 10 GB) é muito cara. É também por isso que não consigo mover o arquivo de troca para outro lugar.
Pekka suporta GoFundMonica
Ah, eu esqueci: pelo mesmo motivo, replicar a máquina não é tão fácil de fazer. Será o último recurso, a menos que outra coisa funcione.
Pekka suporta GoFundMonica
Então mude de provedor.
TomTom
1

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

Encontrei este artigo, mas nunca tentei .. parece que há uma maneira de mover sobre a pasta winsxs. Se ninguém puder tentar isso, vá em frente e me avise

techsmarty
fonte
Esse é o link da resposta do imagodei.
Cees Timmerman
1

Os requisitos de sistema fornecidos pela Microsoft para o Server 2008 são "Espaço em disco: mínimo de 32 GB ou superior".

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

Por que você acha que pode funcionar confortavelmente na metade desse espaço?

TessellatingHeckler
fonte
Estou alugando uma solução VPS de um grande provedor de hospedagem que originalmente era um pacote de 10 GB com o 2008 Server pré-instalado. Suponho que eles devem ter fornecido isso de alguma forma. Os grandes provedores têm pacotes do Windows de 10 ou 20 GB: veja, por exemplo, bit.ly/h0AZsP . Foi-me dito pelo provedor que o meu é um caso estranho
Pekka suporta GoFundMonica 27/03
Meu erro, vinculei-me aos requisitos do Server 2008 R2 SP1. O Server 2008 requer no mínimo 8 GB - microsoft.com/latam/windowsserver2008/sysreqs.mspx - mas ainda recomenda 40 GB.
TessellatingHeckler 27/03
Obrigado pelo link. No entanto, pode ser que o sistema operacional tenha sido atualizado no meio - eu investigarei
Pekka suporta GoFundMonica
0

Uma opção a ser usada - se for apenas um VPS antigo barato que você usa para coisas simples, vale a pena ativar a compactação NTFS no disco ou em pastas específicas:

Isso pode comprimir algum espaço fora da unidade. Os artigos dizem que é para XP, mas são as mesmas etapas no Win7 / 2008:

David d C e Freitas
fonte
0

Eu encontrei o mesmo problema. Certamente o WinSxs é parcialmente culpado ... Mas acho que o problema é parcialmente devido a ferramentas como o WinDirStat que contam os tamanhos de arquivos e junções para arquivos da mesma maneira. Uma junção é apenas um ponteiro para o arquivo, não uma duplicata de todos os blocos que compõem o arquivo.

Eu descobri que o VSS é um grande culpado nesse problema. Use os seguintes comandos para verificar se o VSS está consumindo muito espaço em disco, recupere esse espaço ou defina um limite menor:

lista vssadmin shadowstorage

vssadmin Excluir ShadowStorage / For = C: / Ativado = C:

vssadmin Redimensionar ShadowStorage / Para = C: / Ativado = C: / MaxSize = 20%

Clayton
fonte