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

Windows 10에서 복구 파티션이 볼륨 확장을 막을 때 해결하는 방법

테스트용 가상 머신의 시스템 드라이브(C:) 여유 공간이 부족해지는 것을 발견했습니다. 가상 머신 설정에서 디스크 크기를 늘린 뒤 게스트 OS(Windows 10)로 전환하여, 할당되지 않은 공간으로 시스템 파티션을 확장하려고 했습니다. 그런데 디스크 관리 콘솔(diskmgmt.msc)을 열어 보니 디스크에 복구 파티션이 두 개나 존재했고, 할당되지 않은 공간은 두 번째 복구 파티션(Windows RE)의 뒤쪽에 위치하고 있었습니다. 복구 파티션이 주 파티션(C:) 뒤에 자리 잡고 있어서, 할당되지 않은 공간으로 주 볼륨을 확장할 수 없는 상황이었던 것입니다.

이 글에서는 UEFI(EFI) 컴퓨터와 BIOS 컴퓨터 각각에 대해 복구 파티션을 삭제하고 다시 만드는 두 가지 방법을 살펴봅니다. 아래 작업을 진행하기 전에 먼저 자신의 컴퓨터가 어떤 펌웨어 아키텍처(UEFI/BIOS)를 사용하는지 확인하세요. 또한 파티션 테이블을 변경하기 전에는 중요한 데이터를 반드시 백업(또는 스냅샷 생성)해 두는 것이 좋습니다.

UEFI 기반 컴퓨터에서 복구 파티션 이동 후 시스템 파티션 확장하기

제 가상 머신에는 Windows 10이 UEFI 모드(파티션 스타일: GPT)로 설치되어 있습니다.

아래 스크린샷에서 볼 수 있듯이 "볼륨 확장(Extend Volume)" 버튼이 비활성화(회색) 상태입니다. Windows 내장 도구로 파티션을 확장하려면 해당 파티션 오른쪽에 할당되지 않은 공간이 있어야 합니다(Windows 10은 주 파티션을 왼쪽의 할당되지 않은 공간으로는 확장할 수 없습니다). 제 경우에는 복구 파티션(Windows RE)이 C: 드라이브 확장을 막고 있어서, 시스템 파티션 크기를 늘리기 전에 복구 파티션을 삭제해야 했습니다.

스크린샷을 보면 복구 파티션이 두 개(RecoveryWindows RE) 있습니다. 이 중 Windows가 실제로 사용 중인 활성 복구 파티션이 어느 것인지 확인하려면 파티션에 드라이브 문자를 할당해야 합니다. 예를 들어 디스크 관리 또는 Diskpart.exe를 사용해 E:R: 문자를 지정할 수 있습니다: select disk 0 -> select part 1 -> assign letter r:. 활성 복구 파티션을 확인하려면 다음 명령을 실행합니다.

bcdedit /enum all

출력 결과에서 다음 두 섹션에 주목하세요.

  1. Windows Boot Manager: BCD 부트로더가 위치한 파티션을 나타냅니다. 제 경우 부트로더는 EFI 파티션에 있습니다.
    Windows Boot Manager
    --------------------
    identifier {bootmgr}
    device partition=\Device\HarddiskVolume2
    path \EFI\Microsoft\Boot\bootmgfw.efi
    description Windows Boot Manager
    locale en-US
    inherit {globalsettings}
    default {current}
    resumeobject {dbaf5561-4424-11e9-b766-b7001b047795}
    displayorder {current}
    toolsdisplayorder {memdiag}
    timeout 30
  2. Windows Boot Loader 섹션의 값을 확인합니다. 복구 환경 이미지 파일인 Winre.wim은 Windows RE 볼륨 레이블이 붙은 두 번째 파티션에 위치해 있습니다.
    Windows Boot Loader
    -------------------
    identifier {dbaf5563-4424-11e9-b766-b7001b047795}
    device ramdisk=[E:]\Recovery\WindowsRE\Winre.wim,{dbaf5564-4424-11e9-b766-b7001b047795}
    path \windows\system32\winload.efi
    description Windows RE
    locale en-us
    inherit {bootloadersettings}
    displaymessage Windows RE
    osdevice ramdisk=[E:]\Recovery\WindowsRE\Winre.wim,{dbaf5564-4424-11e9-b766-b7001b047795}
    systemroot \windows
    nx OptIn
    bootmenupolicy Standard
    winpe Yes

주 Windows 볼륨의 크기를 확장하려면 오른쪽에 있는 복구 파티션을 삭제하고, 볼륨을 확장한 다음 복구 파티션을 다시 만들어야 합니다.

다만 대부분의 경우 복구 파티션을 새로 만드는 대신, 복구 환경 파일을 C: 드라이브로 옮기는 것만으로 충분합니다. 그러면 500MB짜리 별도 WinRE 파티션 없이도 운영할 수 있으며, 복구 환경 파일은 Windows가 설치된 파티션에 함께 저장됩니다.

Winre.wim 파일을 시스템 볼륨으로 복사하고 새 WinRE 위치를 등록하려면 다음 명령을 실행합니다.

reagentc /disable
md c:\Recovery\WinRE
xcopy e:\Recovery\WindowsRE\Winre.wim c:\Recovery\WinRE /h
reagentc /setreimage /path c:\Recovery\WinRE /target C:\Windows
reagentc /enable

디스크 관리 GUI에서 볼륨 삭제(Delete Volume)를 클릭해 복구 파티션을 삭제하려고 하면(경우에 따라서는 디스크 속성 자체가 표시되지 않기도 합니다) 다음과 같은 오류가 나타납니다.

Virtual Disk Manager

Cannot delete a protected partition without the force protected parameter set.

이처럼 보호된 파티션은 diskpart 도구로만 삭제할 수 있습니다. 관리자 권한 명령 프롬프트를 연 뒤 diskpart를 실행하고, 삭제할 파티션을 선택합니다(디스크와 파티션 번호는 시스템마다 다를 수 있으므로 각 명령의 출력 결과를 반드시 확인하세요).

DISKPART> rescan
DISKPART> list disk
DISKPART> select disk 0
DISKPART> list part
DISKPART> select part 5
DISKPART> delete partition override

DiskPart successfully deleted the selected partition.

DISKPART> Rescan

override 매개변수를 사용하면 diskpart가 파티션 유형(활성, 시스템, 부팅 파티션 여부와 무관하게)에 상관없이 해당 파티션을 강제로 삭제할 수 있습니다.

이제 디스크 관리를 열면 시스템 파티션을 확장할 수 있습니다(볼륨 확장 옵션이 활성화됩니다). 복구 파티션을 다시 만들 계획이라면(위에서 설명한 대로 시스템 파티션으로 옮기는 것이 권장됩니다) 드라이브 끝에 500MB의 할당되지 않은 공간을 남겨두세요. 아래 스크린샷에서는 Windows 파티션을 1.5GB 확장하고 드라이브 끝에 500MB를 남겼습니다.

디스크에 OEM 제조사 복구 파티션 등 다른 파티션이 남아 있어 주 볼륨 확장이 막히는 경우, "OEM 파티션 삭제 방법" 관련 글을 참고하시기 바랍니다.

주 파티션 확장 후에는 WinRE 복구 파티션을 위한 500MB 여유 공간이 남게 됩니다.

Windows는 특별한 식별 정보로 복구 파티션을 인식합니다. 바로 GUID de94bba4-06d1-4d40-a16a-bfd50179d6ac와 GPT 특성 0x8000000000000001입니다.

새 파티션을 만들고 이 특성들을 지정해 보겠습니다.

DISKPART> create part primary
DISKPART> format quick fs=ntfs label="WinRE"
DISKPART> assign letter="R"
DISKPART> set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"

DiskPart successfully set the partition ID

DISKPART> gpt attributes=0x8000000000000001

DiskPart successfully assigned the attributes to the selected GPT partition.

Exit

그다음 Windows 10 설치 디스크(이미지)에서 WinRE 파일을 추출해 새 복구 파티션으로 복사합니다.

Windows 10 설치 ISO 이미지의 install.wim 파일을 마운트하고 그 안에서 WinRE 파일(Winre.wim)을 추출합니다.

md C:\WinISO
md C:\WinISO\mount
dism /mount-wim /wimfile:F:\sources\install.wim /index:1 /mountdir:C:\WinISO\mount /readonly
md R:\Recovery\WinRE
copy C:\WinISO\mount\Windows\System32\Recovery\Winre.wim R:\Recovery\WinRE\
dism /unmount-wim /mountdir:C:\WinISO\mount /discard

이제 WinRE 파일을 복구 파티션으로 옮기고 부트로더 구성을 갱신합니다.

reagentc /disable
reagentc /setreimage /path R:\Recovery\WinRE /target C:\Windows
reagentc /enable

여기까지 진행하면 복구 파티션이 다시 생성되고 WinRE 이미지의 새 경로가 등록됩니다. 이후 Windows 부팅에 문제가 발생하더라도 복구 환경이 자동으로 불러와집니다. 참고로 EFI 부트로더나 EFI 파티션에 문제가 있다면 관련 복구 가이드를 함께 확인해 보시기 바랍니다.

BIOS 기반 PC에서 복구 파티션 삭제 및 BCD 이동 방법

컴퓨터가 BIOS(UEFI 아님) 기반이라면, 복구 파티션을 삭제하기 전에 다음과 같은 절차로 Windows 부트 관리자(BCD)와 복구 환경 파일을 C: 볼륨으로 옮길 수 있습니다.

먼저 BCD 파일을 E: 드라이브(복구 파티션에 할당한 드라이브 문자)에서 C: 드라이브로 옮깁니다.

Reg unload HKLM\BCD00000000
robocopy e:\ c:\ bootmgr
robocopy e:\boot c:\boot /s
bcdedit /store c:\boot\bcd /set {bootmgr} device partition=C:
bcdedit /store c:\boot\bcd /set {memdiag} device partition=C:

작업 중 BCD에 문제가 생기면 BCD 파일과 MBR(Master Boot Record)을 다시 빌드하는 방법으로 복구할 수 있습니다.

그다음 복구 wim 이미지를 옮깁니다.

reagentc /disable
md c:\Recovery\WinRE
xcopy e:\Recovery\WindowsRE\Winre.wim c:\Recovery\WinRE /h
reagentc /setreimage /path c:\Recovery\WinRE /target C:\Windows
reagentc /enable

이제 앞서 설명한 것과 같은 방법으로 diskpart를 사용해 복구 파티션을 삭제하고, 시스템 파티션을 성공적으로 확장할 수 있습니다.