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

DISM·SFC로 Windows 시스템 파일 및 이미지 손상을 확인하고 복구하는 방법

Windows(Windows Server)에서 SFC(System File Checker)와 DISM(Deployment Image Servicing and Management) 명령어를 사용하면 시스템 파일과 구성 요소 저장소(Component Store)의 무결성을 검사하고 복구할 수 있습니다. Windows가 불안정하거나 부팅되지 않을 때, 내장 앱이나 서비스를 실행할 때 오류가 발생할 때, 바이러스 감염 이후 등 다양한 상황에서 매우 유용한 도구입니다.

이 글에서는 SFC /ScanNow, DISM /Online /Cleanup-Image /RestoreHealth, 그리고 PowerShell의 Repair-WindowsImage -Online -RestoreHealth 명령어를 사용해 Windows 10/11 및 Windows Server 2022/2019/2016의 시스템 파일과 이미지를 복구하는 방법을 살펴봅니다.

SFC /ScanNow: 시스템 파일 검사기로 Windows 시스템 파일 복구

일반적으로는 먼저 SFC 도구로 시스템 파일 무결성을 검사한 뒤, 필요하면 DISM 명령어로 Windows 이미지를 복원하는 순서를 권장합니다. sfc /scannow 명령은 보호된 시스템 파일을 스캔하여 파일이 누락되었거나 손상된 경우, Windows 구성 요소 저장소(C:\Windows\WinSxS 폴더)에 보관된 원본 사본으로 복원을 시도합니다.

SFC 도구는 모든 작업 기록을 %windir%\logs\cbs\cbs.log 파일에 남깁니다. CBS.log 파일에서 SFC 관련 항목은 모두 [SR] 태그가 붙습니다. 로그에서 SFC 관련 항목만 추출하려면 아래 명령을 실행하세요.

findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >"%userprofile%\Desktop\sfc.txt"

sfc /scannow 실행 후 "Windows 리소스 보호에서 손상된 파일을 찾았지만 일부 파일을 복구하지 못했습니다"라는 오류가 반환된다면, 도구가 Windows 구성 요소 저장소에서 필요한 파일을 가져오지 못한 것일 가능성이 높습니다.

이 경우 DISM.exe 명령으로 Windows 이미지의 구성 요소 저장소를 복구해야 합니다. DISM 도구는 Vista 이후 모든 Windows 버전에 기본 포함되어 있습니다. Windows 이미지 복구가 완료되면 다시 SFC를 실행해 시스템 파일을 복원할 수 있습니다.

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

DISM /Cleanup-Image /CheckHealth 옵션은 Windows 이미지의 오류 여부를 확인하는 데 사용됩니다. DISM 명령은 반드시 관리자 권한 명령 프롬프트에서 실행해야 합니다.

아래 명령으로 Windows 이미지 구성 요소 저장소에 손상 플래그가 설정되어 있는지 빠르게 확인할 수 있습니다(Windows 7/Server 2008 R2에는 적용되지 않음). 이 명령은 시스템 유지 관리 프로세스가 설정한 CBS 플래그만 점검합니다.

DISM /Online /Cleanup-Image /CheckHealth

이 명령은 구성 요소 저장소 전체를 스캔하지 않고, 이미지가 손상으로 표시되었는지와 복구 가능 여부만 확인합니다. 이미지에 어떠한 변경도 가하지 않습니다.

예를 들어 명령 결과 Windows 10 이미지에 손상이 없다고 표시됩니다.

No component store corruption detected.
The operation completed successfully.

구성 요소 저장소의 전체 상태를 스캔하려면 아래 명령을 실행합니다.

DISM /Online /Cleanup-Image /ScanHealth

전체 스캔에는 상당한 시간이 걸릴 수 있으며(10~30분), 결과는 세 가지 중 하나로 나타납니다.

  • No component store corruption detected – 구성 요소 저장소에서 오류가 발견되지 않았습니다.
  • The component store is repairable – 구성 요소 저장소에 오류가 있지만 DISM으로 복구할 수 있습니다.
  • The component store is not repairable – DISM으로도 구성 요소 저장소를 복구할 수 없습니다. 최신 버전의 DISM을 사용해 보거나, 백업에서 Windows 이미지를 복원하거나, 초기화 또는 재설치가 필요할 수 있습니다.

Windows 7 및 Windows Server 2008에서 /ScanHealth 옵션을 사용하려면 KB2966583 업데이트를 먼저 설치해야 합니다. 설치하지 않으면 "Error 87. The ScanHealth option is not recognized in this context" 오류가 표시됩니다.

경우에 따라 DISM /ScanHealth 실행 시 다음과 같은 오류가 나타날 수 있습니다.

  • DISM 오류 1726 – "원격 프로시저 호출에 실패했습니다(The remote procedure call failed)";
  • DISM 오류 1910 – "지정된 개체 내보내기를 찾을 수 없습니다(The object exporter specified was not found)".

이런 오류가 나타나면 Windows 이미지가 실제로 손상되었으며 복구가 필요하다는 의미입니다.

DISM /RestoreHealth로 Windows 이미지 복구

Windows 이미지 구성 요소 저장소의 손상을 수정하려면 DISM 명령의 RestoreHealth 옵션을 사용해야 합니다. 이 옵션은 Windows 이미지에서 발견된 오류를 수정하고, 손상되거나 누락된 구성 요소 파일을 Windows Update 서버의 원본 파일로 자동 다운로드하여 교체합니다(컴퓨터가 인터넷에 직접 연결되어 있어야 함). 아래 명령을 실행하세요.

DISM /Online /Cleanup-Image /RestoreHealth

Windows 7/2008 R2에서는 명령 형식이 다릅니다.
DISM.exe /Online /Cleanup-Image /ScanHealth

스캔 및 복구 과정은 30분 이상 걸릴 수 있습니다. DISM은 손상되거나 누락된 구성 요소 파일을 Windows Update 서버에서 원본 버전으로 자동 다운로드하여 교체합니다.

복구가 성공하면 다음 메시지가 표시됩니다.

The restore operation completed successfully.

DISM /RestoreHealth: 원본 파일을 찾을 수 없는 경우

컴퓨터(서버)가 인터넷에 직접 연결되어 있지 않거나(프록시 환경, 내부 WSUS 사용 등), Windows Update 서비스가 비활성화되었거나 손상된 경우 구성 요소 저장소 복구 시 다음과 같은 오류가 발생할 수 있습니다.

  • 0x800f0906 – 원본 파일을 다운로드할 수 없습니다. /Source 옵션으로 복구에 필요한 파일 위치를 지정하세요.
  • 0x800f0950 – DISM이 실패했습니다. 작업이 수행되지 않았습니다.
  • 0x800F081F – 원본 파일을 찾을 수 없습니다. /Source 옵션으로 복구에 필요한 파일 위치를 지정하세요.

이런 경우 Windows Update 대신 다른 방법으로 원본 구성 요소 저장소 파일을 확보할 수 있습니다.

  • 설치 디스크 / USB 부팅 드라이브 / ISO 이미지;
  • 마운트된 wim/esd 파일;
  • 설치 디스크의 \sources\SxS 폴더;
  • Windows 설치 이미지가 담긴 install.wim(esd) 파일.

WIM 또는 ESD 파일에 담긴 원본 Windows 설치 이미지를 시스템 파일 복구용 소스로 지정할 수 있습니다. 예를 들어 Windows 11 설치 ISO를 가상 드라이브 D:에 마운트했다고 가정해 보겠습니다.

참고: 로컬 소스로 구성 요소 저장소의 손상된 파일을 복구하려면 WIM/ESD 이미지의 Windows 빌드 번호와 에디션이 현재 시스템과 일치해야 합니다.

다음 PowerShell 명령으로 현재 설치된 Windows 버전을 확인할 수 있습니다.

Get-ComputerInfo |select WindowsProductName,WindowsEditionId,WindowsVersion, OSDisplayVersion

설치 wim 이미지에 포함된 Windows 에디션 목록을 조회합니다.

Get-WindowsImage -ImagePath "D:\sources\install.wim"

이 예제에서 install.wim 파일의 Windows 11 Pro 이미지는 ImageIndex = 6입니다.

Windows Update 온라인 서비스를 사용하지 않고 로컬 WIM/ESD 파일로 구성 요소 저장소를 복구하려면 아래 명령을 실행합니다(이미지 파일 내 Windows 버전 인덱스를 반드시 지정).

DISM /online /cleanup-image /restorehealth /source:WIM:D:\sources\install.wim:6 /limitaccess
또는
DISM /online /cleanup-image /restorehealth /source:ESD:D:\sources\install.esd:6 /limitaccess

DISM /RestoreHealth 실행 시 다음과 같은 오류가 나타날 수 있습니다.

  • 오류 50: DISM does not support servicing Windows PE with the /Online option – DISM이 현재 환경을 WinPE 이미지로 인식한다는 의미입니다. 이 경우 레지스트리 키 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MiniNT를 삭제하면 해결됩니다.
  • DISM 오류 87: 명령어 입력이 올바른지 확인하고, 현재 Windows 버전에 맞는 DISM 버전을 사용하고 있는지 확인하세요(주로 WinPE/WinRE 부팅 환경에서 발생).

시스템 파일 스캔 및 복구에 대한 DISM 로그는 C:\Windows\Logs\CBS.log에서 확인할 수 있습니다.

구성 요소 저장소 복구가 완료되면 시스템 파일 검사기(sfc /scannow)를 다시 실행하세요. 이번에는 손상되거나 누락된 시스템 파일을 성공적으로 복원할 가능성이 높습니다("Windows Resource Protection found corrupt files and successfully repaired them").

SFC.exe가 시스템 파일 손상을 발견하지 못하면 다음 메시지가 표시됩니다.

Windows Resource Protection did not find any integrity violations.

Repair-WindowsImage: PowerShell로 Windows 이미지 구성 요소 저장소 복구

Windows 10/11 및 Windows Server 2016/2019/2022의 PowerShell에는 앞서 소개한 DISM 명령과 동일한 기능을 하는 cmdlet이 포함되어 있습니다. Windows 구성 요소 저장소를 스캔하여 손상 여부를 확인하려면 아래 명령을 실행합니다.

Repair-WindowsImage -Online –ScanHealth

구성 요소 저장소에 오류가 없으면 다음과 같은 결과가 표시됩니다.

ImageHealth State: Healthy

Windows 구성 요소 저장소 파일을 복구하려면 아래 명령을 실행합니다.

Repair-WindowsImage -Online -RestoreHealth

인터넷에 직접 연결되어 있지 않으면 이 명령이 복구 과정에서 멈출 수 있습니다. 이 경우 Windows 10 설치 ISO 이미지에서 복사한 로컬 Windows 이미지 파일(install.wim/install.esd)로 시스템 구성 요소를 복원할 수 있습니다. 이때도 wim 파일 내 Windows 버전 인덱스를 복구 소스로 지정해야 합니다.

Repair-WindowsImage -Online -RestoreHealth -Source F:\sources\install.wim:5 -LimitAccess

DISM 오프라인 모드로 Windows 이미지 복구

Windows가 정상적으로 부팅되지 않는 경우, DISM을 사용해 Windows 이미지의 시스템 파일을 오프라인 상태에서 검사하고 복구할 수 있습니다.

업데이트 설치 후 Windows가 부팅되지 않는다면, 먼저 최신 업데이트 제거를 시도해 보는 것이 좋습니다.

  1. Windows 설치 이미지로 장치를 부팅합니다(미디어 생성 도구로 부팅 가능한 Windows USB를 만들 수 있음)하고, Windows 설치 초기 화면에서 Shift + F10을 눌러 명령 프롬프트를 엽니다.
  2. WinPE에서 할당된 드라이브 문자를 확인하려면 diskpartlist vol 명령을 실행합니다(예제에서는 Windows가 설치된 디스크에 C:\ 드라이브 문자가 할당되어 있으며, 이후 명령에서 이를 사용합니다).
  3. 다음 명령으로 시스템 파일을 검사하고 손상된 파일을 복구합니다.
    sfc /scannow /offbootdir=C:\ /offwindir=C:\Windows
  4. 오프라인 Windows 이미지를 복구하려면 아래 명령을 사용합니다(부팅에 사용한 Windows 10 설치 이미지의 WIM 파일을 복구 소스로 지정).
    Dism /image:C:\ /Cleanup-Image /RestoreHealth /Source:D:\sources\install.wim
  5. 대상 디스크의 여유 공간이 부족한 경우 별도 드라이브(예: F:\)에 빈 폴더를 생성합니다(mkdir F:\scratch). 임시 디렉터리를 지정해 구성 요소 저장소를 복구하려면 다음 명령을 사용합니다.
    Dism /image:C:\ /Cleanup-Image /RestoreHealth /Source:D:\sources\install.wim /ScratchDir:F:\scratch

팁. 관리자가 알아두면 유용한 DISM 파라미터입니다.

  • DISM /Add-Package – MSU/CAB 업데이트 파일을 설치하고 Windows 이미지에 보안 업데이트를 통합합니다.
  • DISM /Get-Drivers – 설치된 드라이버 목록을 조회합니다.
  • DISM /Add-Driver – Windows 설치 이미지에 드라이버를 주입합니다.
  • DISM /Add-Capability – Features on Demand(FoD)를 통해 추가 Windows 기능을 설치합니다(예: RSAT, OpenSSH 서버, Windows SSH 클라이언트).
  • DISM /Enable-Features, /Disable-Features – Windows 구성 요소를 활성화/비활성화합니다(예: SMBv1 프로토콜).
  • Dism.exe /StartComponentCleanup – 구성 요소 저장소를 정리하고 WinSxS 폴더의 이전 구성 요소 버전을 제거합니다.
  • Dism /set-edition – 재설치 없이 평가판 Windows를 정식 버전으로 업그레이드합니다.