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

Windows 8 구성 요소 저장소(Component Store) 손상 복구 방법 총정리

이 글에서는 Windows 8의 구성 요소 저장소(Component Store)와 이를 복구하는 다양한 시나리오에 대해 알아보겠습니다.

구성 요소 저장소란?

Windows Vista부터 Microsoft는 구성 요소 기반 서비스(Component Based Servicing)라는 개념을 도입했습니다. 구성 요소 단위의 구조 덕분에 업데이트, 보안 패치, 서비스 팩의 설치 및 제거가 한층 안정적으로 이루어질 수 있었습니다. Windows 8 역시 동일한 아키텍처를 기반으로 합니다.

Windows 구성 요소 저장소의 파일은 \Windows\WinSxS 폴더에 위치하며, 시간이 지남에 따라 폴더 크기가 크게 증가하는 특징이 있습니다.

구성 요소 저장소 손상 시 발생하는 문제

그러나 경우에 따라 구성 요소 저장소가 손상되면 Windows 업데이트나 다른 Microsoft 앱을 설치하려 할 때 문제가 발생할 수 있습니다. 이전 Windows 버전(Windows Vista, Windows 7, Windows Server 2008/R2)에서는 Microsoft가 제공하는 전용 유틸리티인 CheckSUR(시스템 업데이트 준비 도구, System Update Readiness Tool – KB947821)로 이 문제를 해결했습니다. 이 유틸리티는 용량이 350MB를 넘을 정도로 크며, 새로운 Windows 업데이트가 릴리스될 때마다 정기적으로 갱신되었습니다.

CheckSUR은 다음 리소스들의 무결성을 검증합니다:

검사 대상 디렉터리

  • %SYSTEMROOT%\Servicing\Packages
  • %SYSTEMROOT%\WinSxS\Manifests

검사 대상 레지스트리 분기

  • HKEY_LOCAL_MACHINE\Schema
  • HKEY_LOCAL_MACHINE\Components
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing

CheckSUR은 오류나 비호환성을 감지하면 해당 문제를 복구하려고 시도합니다.

구성 요소 저장소 손상으로 인한 Windows 업데이트 오류 코드

코드오류명설명
0×80070002ERROR_FILE_NOT_FOUND시스템이 지정된 파일을 찾을 수 없습니다.
0x8007000DERROR_INVALID_DATA데이터가 잘못되었습니다.
0x800F081FCBS_E_SOURCE_MISSING패키지 또는 파일의 원본을 찾을 수 없습니다.
0×80073712ERROR_SXS_COMPONENT_STORE_CORRUPT구성 요소 저장소가 일관되지 않은 상태입니다.
0x800736CCERROR_SXS_FILE_HASH_MISMATCH구성 요소의 파일이 구성 요소 매니페스트의 검증 정보와 일치하지 않습니다.
0x800705B9ERROR_XML_PARSE_ERROR요청된 XML 데이터를 구문 분석할 수 없습니다.
0×80070246ERROR_ILLEGAL_CHARACTER잘못된 문자가 발견되었습니다.
0x8007370DERROR_SXS_IDENTITY_PARSE_ERRORID 문자열의 형식이 잘못되었습니다.
0x8007370BERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAMEID의 특성 이름이 유효 범위를 벗어났습니다.
0x8007370AERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUEID의 특성 값이 유효 범위를 벗어났습니다.
0×80070057ERROR_INVALID_PARAMETER매개변수가 올바르지 않습니다.
0x800B0100TRUST_E_NOSIGNATURE개체에 서명이 없습니다.
0×80092003CRYPT_E_FILE_ERRORWindows 업데이트가 파일을 읽거나 쓰는 중 오류가 발생했습니다.
0x800B0101CERT_E_EXPIRED필요한 인증서가 현재 시스템 시계 또는 서명된 파일의 타임스탬프 기준 유효 기간을 벗어났습니다.
0x8007371BERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE트랜잭션에 필요한 하나 이상의 구성원이 없습니다.
0×80070490ERROR_NOT_FOUNDWindows에서 새 업데이트를 검색할 수 없습니다.

Windows 8의 내장 복구 기능(Inbox Corruption Repair)

Windows 8과 Windows Server 2012에는 CheckSUR에 해당하는 기능이 이미 시스템에 통합되어 있으며, Inbox Corruption Repair라고 불립니다. 이 기능은 백그라운드 모드와 수동 모드 두 가지 방식으로 작동합니다.

백그라운드 복구는 Windows 업데이트 설치 시 오류가 발생하면 자동으로 실행됩니다. 이때 Windows는 손상된 구성 요소를 자동으로 복구하고 업데이트 패키지를 다시 설치하려고 시도합니다. 자동 복구로도 문제가 해결되지 않으면 관리자가 수동으로 오류를 수정해야 하며, 이때 DISM(Dism /Online /Cleanup-Image 명령) 또는 PowerShell(Repair-WindowsImage cmdlet)을 사용할 수 있습니다.

DISM으로 구성 요소 저장소 상태 확인하기

구성 요소 저장소의 상태를 확인하려면 관리자 권한으로 명령 프롬프트를 열고 다음 명령을 실행합니다:

Dism /Online /Cleanup-Image /CheckHealth

참고 팁:

  1. 다른 Windows 도구와 달리 DISM은 대소문자를 구분합니다.
  2. Dism /Cleanup-Image 명령의 로그는 C:\Windows\Logs\CBS\CBS.log 및 C:\Windows\Logs\DISM\dism.log 파일에 기록됩니다.

PowerShell에서 동일한 작업을 수행하는 명령은 다음과 같습니다:

Repair-WindowsImage -Online -CheckHealth

CheckHealth 실행은 몇 분 정도 걸립니다. 실행 결과 이미지 내 구성 요소 저장소의 현재 상태가 Healthy(정상)로 표시되면 복구가 필요 없다는 의미입니다.

손상된 구성 요소 저장소 복구하기

문제나 오류가 감지되면 아래 명령으로 저장소 복구를 실행해야 합니다:

Dism.exe /Online /Cleanup-Image /Restorehealth

PowerShell에서 동일한 작업을 수행하는 명령은 다음과 같습니다:

Repair-WindowsImage -Online -RestoreHealth

복구가 성공적으로 완료되면 다음과 같은 메시지가 표시됩니다:

복원 작업이 성공적으로 완료되었습니다. 구성 요소 저장소 손상이 복구되었습니다.
(The restore operation completed successfully. The component store corruption was repaired.)

설치 디스크를 이용한 복구

시스템이 저장소의 일부 구성 요소를 복구하지 못한 경우에는 Windows 8 설치 디스크가 필요할 수 있습니다. DVD-ROM에 디스크를 넣거나 ISO 이미지를 마운트하세요. 예를 들어 배포 디스크에 G 드라이브 문자가 할당되었다고 가정해 보겠습니다.

먼저 PowerShell 명령으로 디스크에 포함된 Windows 8 버전 목록을 확인합니다:

Get-WindowsImage -ImagePath G:\sources\install.wim

이 예제에서는 디스크에 인덱스 1(Index: 1)의 이미지(Windows 8 Pro) 하나만 있는 것을 확인할 수 있습니다.

다음 명령은 원본 Windows 8 이미지의 파일로 손상된 구성 요소를 교체하면서 저장소 복구를 시작합니다:

Repair-WindowsImage -Online -RestoreHealth -Source G:\sources\install.wim:1

마무리: 무결성 최종 점검

복구가 완료되면 구성 요소 저장소가 정상 상태인지 확인하세요. 선택 사항이지만, 다음 명령으로 시스템 파일의 무결성을 추가로 검사하는 것이 좋습니다:

sfc /scannow

이렇게 하면 Windows 8의 구성 요소 저장소 손상 문제를 효과적으로 해결하고 안정적인 시스템 환경을 유지할 수 있습니다.