it-swarm.dev

Por que a pasta/winsxs cresce tanto e pode ser menor?

Uma máquina virtual do Vista que eu uso só tem um disco rígido virtual de 10 GB - e estou preocupado com a falta de espaço ao longo do tempo.

Eu usei TreeSize para verificar os culpados ..

enter image description here

E o principal culpado é que a pasta/winsxs ou "Windows Side-By-Side" .

enter image description here

O que é a pasta Windows Side By Side? Bem, isso é explicou muito bem aqui .

Todos os componentes no sistema operacional são encontrados na pasta WinSxS - na verdade, chamamos esse local de armazenamento de componentes. Cada componente tem um nome exclusivo que inclui a versão, a linguagem e a arquitetura do processador para o qual foi construído. A pasta WinSxS é o único local em que o componente é encontrado no sistema, todas as outras instâncias dos arquivos que você vê no sistema são “projetadas” pelo link físico do armazenamento de componentes. Deixe-me repetir esse último ponto - há apenas uma instância (ou cópia de dados completa) de cada versão de cada arquivo no sistema operacional, e essa instância está localizada na pasta WinSxS. Assim, a partir dessa perspectiva, a pasta WinSxS é realmente a totalidade do sistema operacional inteiro, conhecido como "plano" em sistemas operacionais de baixo nível. Isso também explica por que você não receberá mais solicitações de mídia ao executar operações como o Verificador de arquivos do sistema (SFC) ou ao instalar recursos e funções adicionais.

Isso explica por que a pasta começa grande, mas não porque fica maior com o tempo - a resposta para essa pergunta é a manutenção. Nas versões anteriores do Windows, a unidade atômica de serviço era o arquivo; no Windows Vista, era o componente. Quando atualizamos um binário específico, lançamos uma nova versão de todo o componente e essa nova versão é armazenada junto com a versão original no armazenamento de componentes. A versão superior do componente é projetada no sistema, mas a versão mais antiga na loja não é tocada. A razão para isso é a terceira parte do motivo pelo qual a loja de componentes fica tão grande.

Muitas outras pessoas reclamando sobre o tamanho da pasta/winsxs, também :

Recentemente, um colega de trabalho recebeu sua atualização a cada dois anos e estava no meio do carregamento de seu novo laptop com o Vista. Por alguma razão, seu disco rígido C: foi particionado em apenas 25GB e o restante do espaço reservado para uma unidade muito maior D :.

De qualquer forma, depois de carregar muitas atualizações do Windows, ele ficou com quase nenhum espaço em disco deixado em C :, e por algum motivo, o diretório WinSxS tinha aumentado para mais de 8 GB.

Embora eu soubesse qual era o diretório do WinSxS (Windows Side-by-Side), eu não sabia exatamente por que esse diretório explodiria em tamanho tão rápido com as atualizações normais do sistema operacional.

Eu realmente não me importo em ter todos esses arquivos duplicados por segurança, mas eu dome importo com o VM explodindo devido a um erro de falta de espaço em disco. Então ... can/winsxs be seguramente reduzido de alguma forma? Não parece que pode ser ..

Os administradores não devem, por qualquer motivo, tomar conta de si mesmos para limpar o diretório/winsxs - isso pode impedir que o Windows Update eo MSI funcionem corretamente depois. Evitar a exclusão acidental do diretório é realizado colocando um descritor de segurança forte no diretório que herda para seus filhos.

Se esta pasta/winsxs ficar maior, terei que refazer a imagem desta máquina virtual .. o que eu realmentenão quero fazer!

174
Jeff Atwood

Parece que há finalmente uma maneira de fazer isso in Windows 8.1 service pack 1 e Windows Server 2012 R2 .

Ferramenta de análise de loja de componentes:

Dism.exe /Online /Cleanup-image /AnalyzeComponentStore

No final da varredura, o usuário obtém um relatório dos resultados (tamanho real da pasta winsxs) assim:

analyzecomponentstore results

Limpeza de loja de componentes:

Hoje, a limpeza de repositório de componentes deve ser acionada manualmente por um usuário final, seja executando o DISM ou usando o Assistente de Limpeza de Disco. Para tornar a Limpeza de Repositório de Componentes mais útil para o usuário final médio, ela será adicionada a uma tarefa de manutenção, economizando automaticamente espaço em disco para os usuários finais. Para habilitar isso, uma alteração será feita para permitir a desinstalação de drivers de caixa de entrada substituídos sem exigir uma reinicialização (hoje, todas as instalações/desinstalações de driver feitas pela CBS exigem uma reinicialização).

  1. Dism.exe /online /Cleanup-Image /StartComponentCleanup

  2. Ferramenta de limpeza de disco, botão Limpar arquivos do sistema.

    disk cleanup tool

  3. schtasks.exe /Run /TN "\Microsoft\Windows\Servicing\StartComponentCleanup"

6
Jeff Atwood

Existe um comando Nice que é limpo após uma instalação do Windows 7 SP1 (ele me salvou em torno de 3 GB):

DISM /online /cleanup-Image /spsuperseded

Deve ser executado a partir de um prompt elevado de comando

101
GvS

TL; DR

o winsxs na verdade contém hard links . Ele não ocupa tanto adicional dados como você pensa.

Um link físico é como um 'atalho' ou 'ponteiro' para um arquivo real localizado em algum lugar no seu disco. Um link físico não ocupa espaço no disco rígido por si só: serve apenas como um redirecionamento.

Como o winsxs consiste em links físicos, a exclusão desses links não libera espaço algum. Os arquivos atuais continuarão a permanecer em vários locais no disco.


o winsxs não é um problema

... é uma solução! (Bem, principalmente.)

Um resumo, "Marcado como Resposta por Ronnie Vernon, MVP, Moderador", diz aqui :

Nossa, longa discussão sobre hardlinks e winsxs. De qualquer forma, aqui estão alguns pontos resumidos do que eu entendi sobre como tudo funciona.

Para começar respondendo a pergunta do OP com a resposta perfeita postada acima por Andre.Ziegler, você não toca no winsxs. Talvez alguns dos arquivos possam ser aparados como mp3, avi, etc, mas o restante dos arquivos do sistema deve ser deixado sozinho . Eu também estou usando Link Shell Extension como postado acima por Ronnie Vernon, maneira fácil de ver quais são hard link (seta vermelha) e quais são arquivos simples.

Antes de chegar aqui eu vi em muitos lugares pessoas pedindo a ferramenta de limpeza depois de instalar o SP1 para o Windows 7 como o vsp1cln. Não há ferramenta dedicada, tudo foi integrado ao serviço de limpeza de disco. Uma observação que gostaria de fazer aqui é que, mesmo que a opção diga que removerá algumas centenas de MB depois que eu limpei minha unidade, o serviço removeu cerca de 3 GB de arquivos em excesso, de modo que varia de sistema para sistema. Engraçado, agora tenho ainda mais espaço do que antes de instalar o SP1. Nice, MS.

Em relação aos hard links, me diverti com a confusão criada em torno deles. Eu não sou um geek do linux, e eu costumo usar apenas links suaves ... eles são o suficiente para mim, mas as pessoas não entendem como os hard trabalham e como o tamanho é contado.

Um grupo de arquivos selecionados, links ou não, sempre será contado como uma soma. Isso significa que se eu pegar um arquivo de 10MB e fizer 2 hard links, a seleção de todos os três terá 30MB e esse é o tamanho correto, porque ao contrário dos soft links que estão relacionados à entrada da tabela Master File original e tem 0 bytes, os hard links estão relacionados aos dados em si , possuem sua própria entrada na MFT, mas apontam para o mesmo endereço de dados, obviamente tendo como tamanho o tamanho dos dados reais, mesmos tempos, atributos e em. Por que, abaixo.

Quanto resta no disco? Simples: exatamente o mesmo que os relatórios de propriedades da unidade . Não vá selecionando todos os arquivos, oculto e não oculto em C e fazendo comparações, ou usando ferramentas que fazem isso automaticamente porque não mostrará o uso real do HDD. Por quê? Porque:

  1. essa operação faz uma lista de todos os arquivos selecionados, incluindo links físicos como arquivos separados, pega cada um deles e adiciona os tamanhos, as propriedades das unidades contam os dados armazenados reais
  2. nem todos os arquivos serão contados, as pastas protegidas contra a passagem e os arquivos da leitura não serão contados e as Informações de Volume do Sistema geralmente têm arquivos muito grandes protegidos apenas dessa maneira
  3. esse número é útil somente em casos de transferência de arquivos, se os arquivos, links, etc precisam ser copiados para DVD ou NAS, é quanto eles ocupariam, e os links não serão preservados, pois são recursos específicos de NTFS, não disponíveis ou disponível em diferentes formas sob ISO, UDF, NFS e outros sistemas de arquivos, mas eles serão clonados.

Faça um teste ... copie um arquivo de 10MB, a.exe, de uma unidade diferente e observe como o espaço livre cai aos 10MB. Faça um link físico (mklink/H b.exe a.exe). Agora estes dois arquivos selecionados irão "usar" 20MB nas propriedades de seleção , mas na verdade apenas 10MB verificados nas propriedades da unidade , que terá o mesmo espaço livre que a cópia do arquivo. Exclua um, qualquer um, o espaço livre permanecerá o mesmo. Agora apague o último e o espaço aumentará em 10MB. Houve algum dano feito? NÃO.

O que é o winsxs? Um dllcache muito melhor. Onde com o dllcache em XP tivemos cópias de arquivos que realmente foram adicionados ao tamanho de uso desde que foram clonados, isso na verdade melhora o uso mas não a proteção total (contra vírus). Se um desinstalador desonesto acha que precisa remover algumas libs de tempo de execução do System32, ele excluiria os links, mas não os dados, e os links seriam recriados, mantendo o uso de espaço de dados no mínimo possível, melhor que arquivando winsxs em cabs e tendo os táxis ao lado dos arquivos originais. Também os winsxs trazem serialização, compartimentando arquivos com o mesmo nome mas com versões diferentes, para o bem do dev, o que é uma coisa boa/ruim, faz com que eles fiquem com preguiça de codificar corretamente mas ajuda quando eles não querem mais codificar.

Eu fiz isso para ajudar alguém que chega aqui pelas mesmas razões que eu fiz ... excessivo "uso de espaço" por winsxs após o SP1. E espero que tenha sido útil.

44
Mateen Ulhaq

Essas duplicatas e backups são extremamente irritantes quando há espaço em disco limitado.

Estando naquele lugar, a única maneira que encontrei que não prejudicaria a estabilidade do sistema operacional era generosamente usar o "Compactar conteúdo para economizar espaço em disco" setting.

Ao compactar todos esses diretórios de backup no diretório do Windows, consegui reduzir o tamanho do diretório de 6,5 GB para 5 GB, sem efeitos colaterais reconhecíveis. Usá-lo em algumas das suas coisas fora do diretório Window aumentaria ainda mais seus 10 GB.

33
eran

Se você tiver o Vista e tiver o SP2 instalado, poderá limpar os arquivos antigos do sistema com a nova Service Pack Clean-up Tool .

  1. Clique em Iniciar> Todos os Programas> Acessórios> Prompt de Comando ou clique em Iniciar> Executar e digite cmd para abrir o Windows Prompt de Comando.
  2. Execute o comando “Compcln.exe”. O caminho é “c:\Windows\System32\compcln.exe”.
  3. Os usuários serão questionados sobre manter o Vista SP2 permanentemente no sistema.
  4. Digite "Y" e pressione enter, o sistema começará a executar os componentes do Windows limpos.
27
Tomas Andrle

Em Windows 8 você pode reduzir o tamanho da pasta WinSxS por removendo os recursos do Windows :

DISM.exe /Online /Disable-Feature /Featurename:<name> /Remove

O importante é o parâmetro/Remove que é novo em Windows 8 .

O maior espaço no WinSxS é usado no WindowsUpdates que você instala ao longo do tempo. Em Windows 8/Windows 10 você pode detectar e remover Atualizações que são substituídas por atualizações mais recentes (como novas atualizações cumulativas IE) estar executando este comando:

dism.exe /online /cleanup-image /startcomponentcleanup

ou executando o assistente de limpeza de disco e selecione "Limpeza do Windows Update"

enter image description here

enter image description here

enter image description here

Verifique também se você instalou a atualização da pilha de serviços http://support.Microsoft.com/kb/2821895 .

Essas atualizações executam uma limpeza profunda do WinSxS e compactam todos os arquivos DLLs/Exe, do WinSxS que não estão atualmente em uso, em um arquivo delta menor:

enter image description here

Veja os diferentes tamanhos de arquivo.

Windows 8.1 adiciona novos comandos DISM . O /startcomponentcleanup recebe um novo parâmetro /ResetBase que torna sua última atualização permanente e remove todos os arquivos mais antigos para economizar mais espaço.

Você também pode executar um novo comando dism /online /cleanup-image /analyzecomponentstore para analisar a pasta WinSxS:

enter image description here

Diz-lhe agora quando você deve executar a limpeza para economizar espaço.

21
magicandre1981

Você poderia usar VSP1CLN.EXE para tornar o SP1 permanente, o que de acordo com esta página liberará os componentes substituídos pelo SP1.

20
Ben Lings

Boas notícias! Existe agora um método sancionado oficialmente , da Microsoft, para o Windows 7 SP1, para limpar sua pasta WinSXS .

  1. Instale o HotFix 2852386 - você pode fazer o download manualmente, ou esperar que ele venha através do seu Windows Update
  2. Isso adiciona uma nova opção ao Disk Cleanup Wizard (em Clean Up System Files) que você pode habilitar para "Windows Update Cleanup". Marque esta opção.
  3. Clique OK

Ressalva: Você pode não conseguir desinstalar algumas atualizações do Windows depois de executar a limpeza de sua pasta WinSxS.

9
Mark Henderson

Dism ++ é o que você está procurando ( https://www.chuyu.me/en/index.html ).

Você vai economizar gigabytes de espaço ...

Você precisará selecionar "Replected WinSxS assemblies". Se você fizer isso, ele avisará que essas atualizações instaladas não podem ser desinstaladas. Clique em OK e, em seguida, digitalize

enter image description here

Isso lhe dará uma idéia de quanto espaço você vai economizar. Acertar a limpeza e isso deve esclarecer esse espaço.

2
user425154

Espero que seja útil ter um simples oneliner, caso contrário, uma resposta excelente de Jeff Atwood perde a opção /ResetBase.

Cuidado : Este parâmetro ajuda muito a reduzir o tamanho da pasta WinSxS, mas exclui completamente as versões anteriores dos componentes, portanto, você não poderá reverter nenhuma atualização instalada anteriormente. Mas se o seu sistema se comportar bem, você deve estar seguro (especialmente se você não estiver no ambiente de produção)

dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase

Isso funciona no Windows 8.1 e posterior

1
maoizm

Além das soluções mencionadas, uma maneira de ganhar espaço significativo é compactar todo o conteúdo da pasta. No entanto, isso não pode ser feito usando o Explorer (direitos adequados são necessários), pelo menos a partir do Windows 7.

Estas instruções mostram como conseguir isso:

sc query msiserver 
sc query TrustedInstaller

sc stop msiserver
sc stop TrustedInstaller

sc config msiserver start= disabled
sc config TrustedInstaller start= disabled

icacls "%WINDIR%\WinSxS" /save "%WINDIR%\WinSxS.acl" /t

takeown /f "%WINDIR%\WinSxS" /r

icacls "%WINDIR%\WinSxS" /grant "%USERDOMAIN%\%USERNAME%":(F) /t

compact /s:"%WINDIR%\WinSxS" /c /a /i *

icacls "%WINDIR%\WinSxS" /setowner "NT SERVICE\TrustedInstaller" /t

icacls "%WINDIR%" /restore "%WINDIR%\WinSxS.acl"
del "%WINDIR%\WinSxS.acl"

sc config msiserver start= demand
sc config TrustedInstaller start= demand

sc start msiserver
sc start TrustedInstaller

Notas/dicas:

  1. O agrupamento marca a maneira recomendada de executar esses comandos, se feito manualmente. Normalmente, não deve haver problemas (exceto em alguns arquivos ignorados, porque eles estão em uso), mas o resultado para cada grupo deve ser verificado

  2. Eu executei estas etapas em vários sistemas operacionais de instalação em casa e no trabalho: Win7x64, Win10x64, Windows Server 2008R2 e Windows Server 2012 e não vi nenhum problema até agora.

  3. Algumas etapas levam algum tempo, especialmente o tempo de compactação. A maioria das etapas irá iterar e mostrar arquivos processados. Minimizando o comando A janela do prompt pode ganhar alguma velocidade.

0
Alexei