Computer >> 컴퓨터 >  >> 시스템 >> Windows

Windows 11/10 WinSxS 폴더 완벽 정리: 용량이 큰 이유와 안전한 관리법

Windows 11/10/8/7을 사용하다 보면 WinSxS 폴더를 발견하고 그 크기에 놀란 적이 있으실 겁니다. 이 폴더는 C:\Windows\Winsxs 경로에 위치해 있는데, 실로 어마어마한 용량을 차지합니다. 실제로 어떤 사용자의 경우 약 5GB에 달하고, 폴더 수는 6,000개, 파일 수는 25,000개를 넘어 Windows 폴더 전체의 무려 40%를 차지하기도 합니다. XP 시절에는 겨우 25~50MB 수준이었던 이 폴더가 Windows Vista부터 최신 Windows 11까지 점점 거대해진 이유가 궁금하지 않으신가요? 지금부터 그 비밀을 파헤쳐 보겠습니다.

Windows 11/10의 WinSxS 폴더란?

WinSxS 폴더는 dll, exe 등 다양한 시스템 파일의 여러 버전 복사본을 저장하여, 여러 응용 프로그램이 호환성 문제 없이 동시에 실행될 수 있도록 돕는 역할을 합니다. 폴더 내부를 들여다보면 이름이 똑같은 파일들이 중복되어 있는 것처럼 보이지만, 사실은 서로 다른 버전입니다. 프로그램마다 요구하는 파일 버전이 다르기 때문입니다.

WinSxS는 'Windows Side By Side'의 줄임말로, Windows의 기본 어셈블리 캐시입니다. 여러 응용 프로그램이 공유하는 라이브러리가 이곳에 저장됩니다. 이 기능은 Windows ME에서 처음 도입되었으며, Windows 9x 시대를 괴롭히던 소위 'DLL 지옥(DLL Hell)' 문제에 대한 Microsoft의 해결책으로 평가받습니다.

WinSxS 폴더 내부에서는 아래 이미지처럼 'backup' 폴더가 가장 많은 공간을 차지합니다. 또한 파일 유형별로 살펴보면 '.dll', '.dll.mui', '.exe', '.imd', '.ngr', '.csd' 등의 확장자가 대부분의 용량을 구성하는 것을 확인할 수 있습니다.

Windows 7 이후 버전에는 XP 때와 달리 소스 모듈을 캐싱하던 'dllcache'나 'i386' 폴더가 더 이상 존재하지 않습니다. 대신 이 WinSxS 폴더가 side-by-side 응용 프로그램의 공유 구성 요소를 저장합니다. 같은 어셈블리나 응용 프로그램의 여러 버전이 함께 보관될 수 있으며, 각 side-by-side 어셈블리는 고유한 ID를 가지고, 그 ID의 속성 중 하나가 바로 버전 정보입니다.

Microsoft의 설명에 따르면, "Side-by-side 어셈블리는 운영 체제에서 명명, 바인딩, 버전 관리, 배포 및 구성의 기본 단위로 사용됩니다. WinSxS 폴더에는 모든 매니페스트, 선택적 구성 요소, 타사 Win32 파일이 포함됩니다."라고 합니다.

같은 파일의 여러 버전을 굳이 보관하는 이유는?

앞서 언급했듯이 Windows는 이전 버전의 DLL과 라이브러리 구성 요소를 WinSxS 폴더에 보관합니다. OS에는 특정 파일의 최신 버전이 포함되어 있더라도, 어떤 응용 프로그램이 구버전을 필요로 한다면 WinSxS 폴더에서 해당 구버전을 불러와 사용하게 됩니다. 이렇게 하면 새 버전은 원래 자리에 그대로 남아 있어, 다른 프로그램이 필요할 때 활용할 수 있습니다.

WinSxS 폴더를 삭제해도 안전할까?

결론부터 말씀드리면, 이 폴더를 삭제하거나 다른 곳으로 옮기는 것은 절대 금물입니다. 내부 파일을 임의로 지우면 응용 프로그램이 작동하지 않거나 시스템 자체가 손상될 위험이 큽니다. 설치된 프로그램이 많다면 당연히 WinSxS 폴더도 커질 수밖에 없습니다.

또한 NTFS 하드 링크(hard link) 방식 때문에 WinSxS 폴더는 반드시 시스템 볼륨에 위치해야 합니다. 폴더를 강제로 이동하면 Windows 업데이트, 서비스 팩, 기능 추가 등이 제대로 설치되지 않는 문제가 발생할 수 있습니다.

매니페스트나 어셈블리 같은 구성 요소를 삭제하면 심각한 문제에 직면할 수 있습니다. 시스템마다 반응이 다릅니다. 한 PC에서는 멀쩡히 작동하던 삭제가 다른 PC에서는 시스템을 망가뜨릴 수 있습니다! 예를 들어, 삭제한 어셈블리를 필요로 하는 프로그램을 나중에 설치한다면 그 프로그램은 실행되지 않습니다. 폴더를 압축하는 것도 마찬가지로 금물입니다. Windows 업데이트나 핫픽스 설치 과정에서 오류를 일으킬 수 있습니다.

가장 안전한 정리 방법은 불필요한 응용 프로그램을 제거하는 것입니다. 하지만 이 방법도 완벽하지는 않습니다. 많은 프로그램이 다른 응용 프로그램과 공유되는 파일들을 이곳에 그대로 남겨두기 때문에, 쓸모없는 DLL이 계속 남아있을 가능성이 높습니다. 특히 WinsxsLite 같은 제3자 정리 도구는 Windows를 손상시킬 수 있으므로 사용을 권장하지 않습니다.

새로운 소프트웨어를 자주 설치·제거하는 사용자라면 WinSxS 폴더가 상당히 커져 있는 것을 확인할 수 있을 텐데, 이는 여러 프로그램이 호환성 문제 없이 작동하도록 Windows가 DLL 파일의 여러 복사본을 의도적으로 보관하고 있기 때문입니다.

Windows 11/10에서 WinSxS 폴더 정리하기

Windows 8.1부터 DISM.exe에 /AnalyzeComponentStore라는 새로운 명령줄 옵션이 추가되었습니다. 이 명령을 실행하면 WinSxS 폴더를 분석하여 구성 요소 저장소 정리(Component Store Cleanup)가 권장되는지 알려줍니다. 물론 Windows 11/10에서도 사용할 수 있습니다.

  • Windows 11/10/8.1/8: 디스크 정리(Disk Cleanup) 도구를 열고 'Windows 업데이트 정리' 옵션을 사용하여 WinSxS를 정리합니다.
  • Windows 7: Microsoft가 업데이트를 통해 디스크 정리 도구에 Windows 업데이트 정리 옵션을 추가했습니다.
  • Windows Server: 새 업데이트를 통해 Windows Server에서도 WinSxS 정리가 가능해졌습니다.

그 외에 디스크 공간을 확보할 수 있는 방법들도 소개합니다. 일반적인 방법부터 다소 극단적인 방법까지 있습니다:

  1. 디스크 정리 도구 실행
  2. 사용하지 않는 응용 프로그램 제거
  3. 페이지 파일을 다른 드라이브로 이동
  4. 최대 절전 모드(하이버네이션) 비활성화
  5. 전용 덤프 파일 옵션을 사용해 메모리 덤프 파일을 다른 볼륨에 저장
  6. 시스템 복원 지점 비활성화
  7. 사용자 프로필 및 프로그램 파일 디렉터리를 다른 볼륨으로 옮기기

TechNet 블로그의 기술적 해설

업데이트 1 (TechNet 블로그 발췌): 이전 Windows 버전과 비교해 가장 큰 변화 중 하나는 INF 기반 OS에서 구성 요소화(componentization) 방식으로 전환된 것입니다. 운영 체제의 모든 구성 요소는 WinSxS 폴더에 있습니다. 실제로 Microsoft는 이 위치를 '구성 요소 저장소(component store)'라고 부릅니다. 각 구성 요소는 버전, 언어, 프로세서 아키텍처를 포함하는 고유한 이름을 가지며, WinSxS 폴더는 해당 구성 요소가 시스템에 존재하는 유일한 실제 위치입니다. 시스템에서 보이는 다른 모든 파일 인스턴스는 구성 요소 저장소에서 하드 링크로 '투영(projection)'된 것입니다.

그렇다면 왜 구버전 구성 요소를 제거하지 않을까요? 답은 간단합니다. 바로 신뢰성(reliability) 때문입니다. 구성 요소 저장소는 시스템의 다른 정보와 함께 언제든지 최적의 구성 요소 버전을 판단할 수 있게 해줍니다. 예를 들어 보안 업데이트를 제거하면 시스템에 있는 다음으로 높은 버전을 설치할 수 있습니다. 즉, '순서가 어긋난 제거(out of order uninstall)' 문제가 더 이상 발생하지 않습니다. 또한 선택적 기능을 설치할 때도 RTM 버전을 무조건 사용하는 것이 아니라, 시스템에서 사용 가능한 가장 높은 버전을 찾아 적용합니다.

WinSxS 폴더 크기를 안전하게 줄이는 유일한 방법은 시스템이 취할 수 있는 작업의 범위를 줄이는 것입니다. 가장 쉬운 방법은 처음에 구성 요소를 설치한 패키지를 제거하는 것으로, 시스템에 있는 패키지의 대체된(superseded) 구버전을 제거하면 됩니다. Service Pack 1에는 VSP1CLN.EXE라는 도구가 포함되어 있는데, 이 도구는 서비스 팩 패키지를 영구적(제거 불가)으로 만들고 대체된 모든 구성 요소의 RTM 버전을 제거합니다. 서비스 팩을 영구화하면 RTM 버전이 다시는 필요 없다는 것을 보장할 수 있기 때문에 가능한 작업입니다.

업데이트 2 (E7 블로그 발췌): 운영 체제를 '모듈화'하는 것은 Windows Vista의 엔지니어링 목표였습니다. 이는 기존 Windows의 설치, 서비스, 신뢰성과 관련된 여러 문제를 해결하기 위함이었습니다. Windows SxS 디렉터리는 모든 시스템 구성 요소의 '설치 및 서비스 상태'를 나타냅니다. 흥미로운 점은 DIR 명령이나 탐색기로 측정했을 때 보이는 것만큼 실제 디스크 공간을 차지하지는 않는다는 사실입니다. WinSxS 디렉터리는 오프라인 서비스를 가능하게 하고, Windows Vista 이후 버전이 '이미징에 안전'하도록 만들어 주는 역할도 합니다.

일부 블로그나 비공식 도구들은 WinSxS 디렉터리를 삭제해도 된다고 주장합니다. 실제로 삭제 후 시스템이 정상 부팅되고 작동하는 것처럼 보일 수는 있습니다. 하지만 앞서 설명했듯이 이것은 매우 위험한 행위입니다. 운영 체제 구성 요소의 안정적인 서비스 능력과 선택적 구성 요소의 업데이트·구성 능력을 스스로 제거하는 것이기 때문입니다. Windows는 오직 원래 설치된 위치의 물리적 드라이브에 있는 WinSxS 디렉터리만 지원합니다.

결론

WinSxS 폴더는 그대로 두는 것이 최선입니다! 임의로 삭제하거나 이동하지 말고, 필요하다면 디스크 정리 도구나 DISM 명령을 통해서만 안전하게 관리하세요.

참고로 Sysnative 폴더, Panther 폴더, Catroot & Catroot2 폴더에 대한 내용도 함께 확인해 보시길 추천합니다.