it-swarm-korea.com

왜 / winsxs 폴더가 커지면 작아 질 수 있습니까?

내가 사용하는 Vista 가상 머신에는 10GB 가상 하드 디스크 만 있습니다. 시간이 지남에 따라 공간이 부족할까봐 걱정됩니다.

나는 TreeSize 를 사용하여 범인을 확인했습니다.

enter image description here

그리고 주된 원인은 /winsxs 또는 "Windows Side-By-Side"폴더 입니다.

enter image description here

Windows Side Side Side 폴더 란 무엇입니까? 글쎄, 그건 여기서 꽤 잘 설명되었다 .

운영 체제의 모든 구성 요소는 WinSxS 폴더에 있습니다. 실제로이 위치를 구성 요소 저장소라고합니다. 각 구성 요소에는 버전, 언어 및 프로세서 아키텍처가 포함 된 고유 한 이름이 있습니다. WinSxS 폴더는 시스템에서 구성 요소를 찾을 수있는 유일한 위치이며 시스템에서 볼 수있는 다른 모든 파일 인스턴스는 구성 요소 저장소에서 하드 링크하여 "예상"됩니다. 그 마지막 지점을 반복하겠습니다. OS의 각 파일 버전마다 단 하나의 인스턴스 (또는 전체 데이터 복사본) 만 있고 그 인스턴스는 WinSxS 폴더에 있습니다. 그런 관점에서 보았을 때, WinSxS 폴더는 실제로 전체 운영체제의 전체이며, 하위 운영체제에서 "평면"이라고합니다. 이는 SFC (시스템 파일 검사기)와 같은 작업을 실행할 때 또는 추가 기능과 역할을 설치할 때 미디어를 입력하라는 메시지가 더 이상 표시되지 않는 이유이기도합니다.

폴더가 커지기 시작하는 이유는 설명 할 수 있지만 시간이 지남에 따라 커지는 이유는 아닙니다. 그 질문에 대한 대답은 서비스입니다. 이전 버전의 Windows에서는 서비스의 원자 단위가 파일 이었지만 Windows Vista에서는 이것이 구성 요소였습니다. 특정 바이너리를 업데이트 할 때 전체 구성 요소의 새 버전을 릴리스하고 새 버전은 구성 요소 저장소의 원래 버전과 함께 저장됩니다. 구성 요소의 상위 버전이 시스템에 투영되지만 상점의 이전 버전은 적용되지 않습니다. 그 이유는 컴포넌트 스토어가 그렇게 큰 이유 중 세 번째 부분이기 때문입니다.

/ winsxs 폴더의 크기에 대해 불평하는 많은 사람들 도 있습니다 :

직장 동료가 최근 2 년마다 일하는 노트북을 새로 고침하고 비스타에 새 노트북을로드하는 중이었습니다. 어떤 이유에서 그의 하드 드라이브 C :는 25GB로 분할되었고 나머지 공간은 훨씬 더 큰 드라이브 D :로 예약되었습니다.

어쨌든 많은 Windows 업데이트를로드 한 후 C : 드라이브 공간이 거의 남지 않았고 어떤 이유로 WinSxS 디렉토리가 8GB 이상으로 급증했습니다.

WinSxS (Windows Side-by-Side) 디렉토리가 무엇인지 알았지 만, 그 디렉토리가 왜 정상적인 운영 체제 업데이트로 너무 빨리 폭발하는지 확신 할 수 없었습니다.

나는 안전을 위해 이러한 모든 중복 된 파일을 가지고있는 것에 대해서는별로 신경 쓰지 않지만 디스크 공간 부족 오류로 VM 폭발에 대해/걱정을합니다. 그래서 .. can/winsxs는 어떤 식 으로든 안전하게 붕괴 될 수 있습니까? 그것이 될 수있는 것 같지 않습니다 ..

관리자는 어떤 이유로 든/winsxs 디렉터리 를 지우지 않아야합니다. 그러면 Windows Update와 MSI가 제대로 작동하지 않을 수 있습니다. 디렉터리에서 의도하지 않은 삭제를 방지하려면 해당 자식을 상속하는 디렉터리에 강력한 보안 설명자를 추가해야합니다.

이/winsxs 폴더가 더 커지면이 가상 머신을 다시 이미지해야합니다. 어느 실제로하고 싶지 않습니다!

174
Jeff Atwood

처럼 보입니다. 마침내 in Windows 8.1 서비스 팩 1 및 Windows Server 2012 R2 를 수행 할 수있는 방법이 있습니다.

구성 요소 저장소 분석 도구 :

Dism.exe /Online /Cleanup-image /AnalyzeComponentStore

검사가 끝나면 사용자는 다음과 같이 결과 보고서 (winsxs 폴더의 실제 크기)를 얻습니다.

analyzecomponentstore results

구성 요소 저장소 정리 :

현재 구성 요소 저장소 정리는 최종 사용자가 DISM을 실행하거나 디스크 정리 마법사를 사용하여 수동으로 트리거해야합니다. 평균 최종 사용자에게 Component Store Cleanup을보다 유용하게 사용하려면 유지 관리 작업에 추가되어 최종 사용자의 디스크 공간을 자동으로 절약합니다. 이 기능을 사용하려면 재부팅 할 필요없이 대체 된받은 편지함 드라이버를 제거 할 수 있도록 변경됩니다 (현재 CBS에서 수행 한 모든 드라이버 설치/제거에는 재부팅이 필요합니다).

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

  2. 디스크 정리 도구, 시스템 파일 정리 버튼.

    disk cleanup tool

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

6
Jeff Atwood

Windows 7 SP1을 설치 한 후 정리하는 Nice 명령이 있습니다 (약 3GB를 절약 할 수 있음).

DISM /online /cleanup-Image /spsuperseded

승격 된 명령 프롬프트에서 실행해야합니다.

101
GvS

TL; DR

winsxs는 실제로 하드 링크 를 포함합니다. 생각하는만큼 많은 추가 데이터를 차지하지 않습니다.

하드 링크는 디스크 어딘가에있는 실제 파일에 대한 '바로 가기'또는 '포인터'와 같습니다. 하드 링크는 자체적으로 하드 드라이브 공간을 차지하지 않으며 단지 리디렉션 역할 만합니다.

Winsxs는 하드 링크로 구성되므로 이러한 링크를 삭제해도 공간이 확보되지 않습니다. 실제 파일은 디스크의 다양한 위치에 계속 유지됩니다.


winsxs는 문제가 아닙니다

... 솔루션입니다! (음, 주로 .)

요약 : "Ronnie Vernon의 답변으로 표시됨, MVP, 중재자", 여기서 :

와우, 하드 링크와 winsx에 대한 긴 토론. 어쨌든 여기에 내가 어떻게 작동하는지에 대한 이해가 요약되어 있습니다.

위에서 Andre.Ziegler가 게시 한 완벽한 답변으로 OP의 질문에 대답하기 위해 winsxs를 만지지 마십시오. 어쩌면 일부 파일은 mp3, avi 등과 같이 잘릴 수 있지만 시스템 파일의 나머지는 단독으로 남겨 두어야합니다. 나도 Ronnie Vernon이 게시 한 링크 셸 확장을 사용하고 있습니다. 하드 링크 (빨간색 화살표)와 간단한 파일을 쉽게 확인할 수 있습니다.

여기에 가기 전에 사람들이 vsp1cln과 같은 Windows 7 SP1을 설치 한 후 정리 도구를 요구하는 많은 곳을 보았습니다. 전용 도구는 없으며 디스크 정리 서비스에 모두 통합되었습니다. 여기서 확인해야 할 한 가지 사항은 드라이브를 정리 한 후 옵션에서 수백 MB를 제거한다고 말하더라도 서비스가 약 3GB의 초과 파일을 제거했기 때문에 시스템마다 다릅니다. 웃긴, 이제 SP1을 설치하기 전보다 더 많은 공간이 있습니다. 반갑습니다, MS.

하드 링크와 관련하여, 나는 그 주위에 생성 된 혼란에 놀랐습니다. 나는 리눅스 괴짜가 아니며 일반적으로 소프트 링크 만 사용합니다 ... 그들은 충분하지만 사람들은 어려운 것들이 작동하는 방식과 크기를 계산하는 방법을 얻지 못했습니다.

링크 여부에 관계없이 선택한 파일 그룹은 항상 합계로 계산됩니다. 즉, 10MB 파일을 가져 와서 2 개의 하드 링크를 만들면 파일의 원래 마스터 파일 테이블 항목과 관련된 소프트 링크와 달리 3 개의 파일을 모두 30MB로 선택하고 올바른 크기입니다. 하드 링크는 데이터 자체와 관련이 있습니다, MFT에는 자체 항목이 있지만 동일한 데이터 주소를 가리키며, 실제 데이터의 크기, 동일한 시간, 속성 및 곧. 왜, 아래.

드라이브에 얼마가 남아 있습니까? 단순 : 드라이브 자체 속성 보고서만큼 정확. C에서 숨겨 지거나 숨겨지지 않은 모든 파일을 선택하고 비교하거나 실제 HDD 사용량을 표시하지 않기 때문에 자동으로 수행하는 도구 사용하지 마십시오. 왜? 때문에:

  1. 이 작업은 하드 링크를 포함하여 선택한 모든 파일을 별도의 파일로 나열하고 각각을 가져 와서 크기를 추가하며, 드라이브 속성은 실제 저장된 데이터를 계산합니다.
  2. 모든 파일이 계산되지는 않으며, 트래버스로부터 보호되는 폴더 및 읽을 수없는 파일은 계산되지 않으며 시스템 볼륨 정보는 일반적으로 이러한 방식으로 보호되는 매우 큰 파일을 가지고 있습니다
  3. 이 숫자는 파일 전송의 경우에만 유용합니다. 파일, 링크 등을 DVD 또는 NAS에 복사해야하는 경우, 그 용량은 얼마이며, NTFS 전용 기능이므로 링크가 보존되지 않습니다. 또는 ISO, UDF, NFS 및 기타 파일 시스템에서 다른 형태로 제공되지만 복제됩니다.

다른 드라이브에서 10MB 파일 a.exe를 복사하여 여유 공간이 10MB만큼 떨어지는 지 확인하십시오. 하드 링크를 만듭니다 (mklink/H b.exe a.exe). 이제 선택된이 두 파일은 선택 속성에서 20MB "사용"하지만 실제로 드라이브 속성에서 10MB 만 확인입니다. 파일 복사 후 수행합니다. 여유 공간 중 하나를 삭제하면 여유 공간이 동일하게 유지됩니다. 마지막을 삭제하면 공간이 10MB 증가합니다. 해를 입었습니까? 아니.

winsxs 란 무엇입니까? 훨씬 더 나은 dllcache. XP의 dllcache를 사용하면 복제 된 이후 크기 사용량에 실제로 추가 된 파일의 복사본이 있었지만 실제로는 사용량이 향상되지만 바이러스와는 달리 전체적인 보호 기능은 향상되지 않습니다. 악성 설치 제거 프로그램이 System32에서 일부 런타임 라이브러리를 제거해야한다고 생각하는 경우 링크 만 삭제하지만 데이터는 삭제하지 않으면 링크를 다시 작성하여 데이터 공간 사용량을 최대한 낮게 유지하면서 택시에서 winsx를 아카이브하고 원래 파일과 함께 택시. 또한 winsxs는 직렬화를 통해 동일한 이름이지만 다른 버전의 파일을 구획화하여 개발자를 위해 파일을 나눕니다. 좋은 일/나쁜 일이지만 올바르게 코딩하기가 쉽지 않지만 더 이상 코딩하고 싶지 않을 때 도움이됩니다.

SP1 이후 winsxs에 의한 과도한 "공간 사용"과 같은 이유로 여기 착륙하는 사람을 돕기 위해이 작업을 수행했습니다. 도움이 되었기를 바랍니다.

44
Mateen Ulhaq

이러한 중복 및 백업은 디스크 공간이 제한되어있을 때 매우 귀찮습니다.

그 장소에 있다는 것만 알면 OS 안정성을 위태롭게하지 않을 수있는 유일한 방법은 아낌없이 "디스크 공간을 절약하기 위해 내용 압축" 설정을 사용하는 것입니다.

Windows 디렉터리 아래에있는 모든 백업 디렉터리를 압축하면 6.5GB에서 5GB로 디렉터리 크기를 줄일 수 있었지만 인식 할 수있는 부작용은 없었습니다. Window 디렉토리 밖에서 사용하면 10GB를 더 늘릴 수 있습니다.

33
eran

Vista가 있고 SP2를 설치 한 경우 새 서비스 팩 정리 도구 를 사용하여 이전 시스템 파일을 정리할 수 있습니다.

  1. 시작> 모든 프로그램> 보조 프로그램> 명령 프롬프트를 클릭하거나 시작> 실행을 클릭하고 cmd를 입력하여 명령 프롬프트 창을 엽니 다.
  2. "Compcln.exe"명령을 실행하십시오. 경로는 "c :\Windows\System32\compcln.exe"입니다.
  3. Vista SP2를 시스템에 영구적으로 보관할지 여부를 묻는 메시지가 나타납니다.
  4. "Y"를 입력하고 Enter 키를 누르면 시스템이 Windows 구성 요소를 깨끗하게 수행하기 시작합니다.
27
Tomas Andrle

Windows 8 에서 Windows 기능 제거 를 사용하여 WinSxS 폴더의 크기를 줄일 수 있습니다.

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

중요한 것은 Windows 8 에 새로 도입 된 /Remove 매개 변수입니다. .

WinSxS에서 가장 많은 공간은 시간이 지남에 따라 설치하는 WindowsUpdates에 사용됩니다. Windows 8/Windows 10 에서 최신 업데이트로 대체되는 업데이트를 검색 및 제거 (최근 누적 IE Updates)가 다음 명령을 실행 중입니다.

dism.exe /online /cleanup-image /startcomponentcleanup

또는 디스크 정리 마법사를 실행하고 "Windows Update Cleanup"을 선택하십시오.

enter image description here

enter image description here

enter image description here

또한 서비스 스택 업데이트 http://support.Microsoft.com/kb/2821895 를 설치했는지 확인하십시오.

이 업데이트는 WinSxS의 정밀 정리에서 실행되며 현재 사용 중이 아닌 WinSxS의 모든 DLL/Exe 파일을 더 작은 델타 파일로 압축합니다.

enter image description here

다른 파일 크기를보십시오.

Windows 8.1 새 DISM 명령 추가 . /startcomponentcleanup은 (는) 마지막 업데이트를 영구적으로 만들고 더 많은 공간을 절약하기 위해 이전 파일을 모두 제거하는 새로운 매개 변수 /ResetBase을 가져옵니다.

새 명령 dism /online /cleanup-image /analyzecomponentstore을 실행하여 WinSxS 폴더를 분석 할 수도 있습니다.

enter image description here

공간을 절약하기 위해 정리를 언제 실행해야하는지 알려줍니다.

21
magicandre1981

VSP1CLN.EXE 를 사용하여 SP1을 영구적으로 만들 수 있습니다. 에 따라이 페이지 가 SP1 구성 요소를 대체합니다.

20
Ben Lings

좋은 소식! 이제 Microsoft에서 Windows 7 SP1 용으로 WinSXS 폴더 를 정리하는 공식 승인 된 방법 이 있습니다.

  1. HotFix 2852386 설치 - 수동으로 다운로드하거나 Windows Update를 통해 기다릴 수 있습니다
  2. 그러면 "Windows Update Cleanup"을 활성화 할 수있는 디스크 정리 Wizard (시스템 파일 정리 중)에 새 옵션이 추가됩니다. 이 옵션을 선택하십시오.
  3. 확인을 클릭하십시오.

주의 사항 : WinSxS 폴더를 정리 한 후 특정 Windows 업데이트를 제거하지 못할 수도 있습니다.

9
Mark Henderson

Dism ++ 은 당신이 찾고있는 것입니다 ( https://www.chuyu.me/en/index.html ).

기가 바이트의 공간을 절약 할 수 있습니다 ...

"Replaced WinSxS assemblies"를 선택해야합니다. 이렇게하면 설치된 업데이트를 제거 할 수 없다는 경고가 표시됩니다. 확인을 클릭 한 다음 스캔

enter image description here

얼마나 많은 공간을 절약할지에 대한 아이디어를 줄 것입니다. 정리를하고 그 공간을 정리해야합니다.

2
user425154

그렇지 않으면 Jeff Atwood의 굉장한 대답으로 /ResetBase 스위치가 빠져 나오기 때문에 간단한 oneliner를 사용하면 도움이되기를 바랍니다.

주의 :이 스위치는 WinSxS 폴더 의 크기를 줄이는 데 크게 도움이되지만 는 이전 버전의 구성 요소를 완전히 삭제하므로 이전에 설치된 모든 업데이트를 롤백 할 수 없습니다. 그러나 시스템이 정상적으로 작동하면 안전해야합니다 (특히 프로덕션 환경에 있지 않은 경우)

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

이 기능은 Windows 8.1 이상에서 작동합니다.

1
maoizm

앞서 언급 한 솔루션 외에도 중요한 공간을 확보하는 한 가지 방법은 전체 폴더 내용을 압축하는 것입니다. 그러나 적어도 Windows 7부터는 탐색기를 사용하여이 작업을 수행 할 수 없습니다 (적절한 권한이 필요함).

이 지시 사항 은 이것을 달성하는 방법을 보여줍니다 :

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

메모/팁 :

  1. 그룹화는 수동으로 수행 할 경우 이러한 명령을 실행하는 권장 방법을 표시합니다. 일반적으로 아무런 문제가 없어야합니다 (사용중인 일부 파일을 제외하고는 제외). 그러나 각 그룹에 대한 결과를 확인해야합니다

  2. Win7x64, Win10x64, Windows Server 2008 R2 및 Windows Server 2012와 같은 다양한 운영 체제 설치에서 이러한 단계를 수행했으며 지금까지 아무런 문제도 보지 못했습니다.

  3. 일부 단계는 꽤 많은 시간, 특히 압축 시간이 필요합니다. 대부분의 단계는 처리 된 파일을 반복하여 보여줍니다. 명령 프롬프트 창 최소화는 약간의 속도를 얻을 수 있습니다.

0
Alexei