Windows Server 2012 R2의 Hyper-V부터 가상 머신 하드 디스크의 동적 크기 조정 기능이 지원됩니다. 온라인 VHDX 크기 조정(Online VHDX Resize) 기능을 사용하면 가상 머신을 중지하지 않고도(온라인 상태에서) VHDX 파일의 크기를 늘리거나 줄일 수 있습니다. 이 글에서는 Windows 10 또는 Windows Server 2016에서 실행되는 Hyper-V 환경에서 가상 머신 하드 디스크의 크기를 확장하거나 축소하는 방법을 단계별로 살펴보겠습니다. 무료 Hyper-V Server를 포함해 지원되는 모든 Hyper-V 버전에 적용되는 내용입니다.
Hyper-V 온라인 VHDX 크기 조정의 주요 특징과 제한 사항
- 고정(Fixed), 동적(Dynamic), 차등(Differential) 등 모든 유형의 Hyper-V 가상 디스크 크기를 조정할 수 있습니다.
- VHDX 디스크(게스트 OS의 시스템 드라이브 포함)를 가상 머신을 중지하지 않고 실시간으로 크기 조정할 수 있습니다. 단, 동적 크기 조정은 VHDX 형식만 지원하며 구형 VHD는 지원되지 않으므로 VHDX로 변환해야 합니다.
- VHDX 디스크는 가상 SCSI 컨트롤러에 연결되어 있어야 합니다. IDE 컨트롤러에 연결된 디스크는 온라인 확장이 지원되지 않으므로, 이 경우 디스크 크기를 변경하려면 VM을 종료해야 합니다.
- 온라인 VHDX 크기 조정은 1세대 및 2세대 Hyper-V 가상 머신 모두에서 작동합니다.
- 게스트 OS로 Windows와 Linux 모두 사용할 수 있습니다.
- 가상 디스크의 확장과 축소가 모두 지원됩니다.
- Hyper-V 관리자 콘솔, PowerShell 또는 Windows Admin Center에서 VHDX 디스크 크기를 조정할 수 있습니다.
- 클러스터 환경에서 사용되는 공유 VHDX(AVHDX) 디스크의 크기 조정은 지원되지 않습니다.
- 스냅샷이 생성된 가상 디스크(예: 백업 중 생성된 스냅샷)의 크기는 변경할 수 없습니다.
Hyper-V에서 가상 머신 하드 디스크 확장하기
Hyper-V 관리자 콘솔을 사용하면 가상 VHDX 디스크의 크기를 손쉽게 늘릴 수 있습니다.
- Hyper-V 관리자에서 해당 가상 머신을 선택하고 설정(Settings)으로 이동한 뒤 SCSI 컨트롤러를 확장합니다.
- 가상 디스크를 선택하고 편집(Edit) 버튼을 클릭합니다.
편집 버튼이 비활성화되어 있고 "이 가상 머신에 대한 검사점이 있으므로 편집할 수 없습니다(Edit is not available because checkpoint exist for this virtual machine)"라는 경고가 표시된다면, 모든 스냅샷을 삭제해야 합니다. 필요에 따라 VM 속성에서 프로덕션 검사점(Production Checkpoint) 옵션을 비활성화해야 할 수도 있습니다.
- 가상 하드 디스크 편집 마법사에서 확장(Expand)을 선택합니다.

- 가상 하드 디스크의 새 크기를 지정합니다(이 예에서는 디스크 크기를 170GB로 확장).

- 디스크가 확장된 게스트 OS 콘솔로 이동합니다. 여기서는 Windows 게스트 OS에서 시스템 파티션을 확장하는 방법을 살펴보겠습니다. 디스크 관리(Disk Management) 콘솔을 열면 디스크에 약 43GB의 할당되지 않은 공간이 새로 생긴 것을 확인할 수 있습니다.

- 확장하려는 파티션을 마우스 오른쪽 버튼으로 클릭하고 볼륨 확장(Extend Volume)을 선택합니다(할당되지 않은 영역 바로 왼쪽에 인접한 볼륨만 확장할 수 있습니다). 현재 볼륨을 얼마나 늘릴지 용량을 지정합니다.
간혹 Windows 복구 파티션이 볼륨 확장을 방해하는 경우가 있으니 참고하세요. - 확장 절차를 완료하면 볼륨 크기가 늘어납니다. Linux 게스트 OS에서는 parted 같은 도구를 사용해 디스크를 확장할 수 있습니다.
Hyper-V 가상 디스크(VHDX) 크기를 축소하는 방법
이번에는 Hyper-V에서 가상 VHDX 디스크의 크기를 줄이는 방법을 알아보겠습니다.
- Hyper-V 콘솔에서 가상 디스크를 축소하기 전에, 반드시 게스트 OS 내부에서 해당 디스크의 논리 파티션 크기를 먼저 줄여야 합니다. 불필요한 공간을 확보해 할당되지 않은 영역으로 만든 후, 게스트 OS에서 디스크 관리를 열고 대상 볼륨을 선택한 뒤 볼륨 축소(Shrink Volume)를 클릭합니다.
참고: 볼륨 축소 옵션은 파티션에 여유 공간이 있을 때만 활성화됩니다. - 파티션을 축소할 공간의 크기를 지정합니다(이 예에서는 50GB 지정).

- 게스트 OS에서 파티션 크기를 줄였다면, Hyper-V 콘솔을 열고 가상 디스크 설정으로 이동한 후 편집(Edit) 버튼을 누릅니다.
- 가상 하드 디스크 편집 마법사에서 축소(Shrink)를 선택한 다음 VHDX 파일의 새 크기를 지정합니다. 이때 디스크에 저장된 데이터보다 작게 줄일 수는 없으므로 최소(Minimum) 값을 확인하세요. 이 예에서는 디스크 크기를 40GB에서 31GB까지 줄일 수 있습니다.
VHDX 파일을 축소하기 전에 Hyper-V 최적화 기능으로 조각 모음을 수행해 보는 것도 좋습니다. 이전 화면에서 압축(Compact) 옵션을 선택하면 됩니다. 또는 아래 PowerShell 명령으로 Hyper-V 동적 가상 디스크를 최적화하고 조각 모음할 수도 있습니다: Optimize-VHD -Path 'C:\VM\VHDHyper-V\fs01.vhdx'
- 완료되었습니다.
PowerShell로 Hyper-V 가상 하드 디스크 크기 조정하기
PowerShell을 사용하면 Hyper-V 호스트에서 직접 VHDX 디스크의 크기를 조정할 수 있습니다. 이때 Resize-VHD cmdlet을 사용합니다(Windows 기본 디스크 관리 cmdlet인 Resize-VirtualDisk와 혼동하지 않도록 주의하세요).
참고: 최신 버전의 Hyper-V에서는 Resize-VHD cmdlet으로 가상 디스크 크기를 조정할 때 가상 머신을 종료할 필요가 없습니다.
먼저 가상 머신의 VHDX 디스크에 대한 전체 경로를 확인합니다:
Get-VM -VMName fs01 | Select-Object VMId | Get-VHD
이 명령은 스토리지에 있는 VHDX 파일의 실제 크기(FileSize)와 설정 가능한 최대 크기(Size)도 함께 반환합니다. MinimumSize는 가상 디스크 파일을 줄일 수 있는 최소 VHDX 크기를 의미합니다.

VHDX 디스크의 크기를 늘리려면 새 크기를 지정하여 실행합니다:
Resize-VHD -Path 'C:\VM\fs01\VHD\fs01.vhdx' -SizeBytes 50Gb
만약 가상 디스크의 새 크기를 현재 데이터 사용량보다 작게 지정하면 다음과 같은 오류가 발생합니다: Resize-VHD : Failed to resize the virtual disk
이후에는 게스트 OS에서 파티션 크기만 조정하면 됩니다.
PowerShell Remoting을 활용하면 Windows에서 원격으로 디스크를 확장할 수도 있습니다. Invoke-Command 또는 Enter-PSSession cmdlet을 사용해 원격 VM에 접속합니다(네트워크 연결 또는 Hyper-V PowerShell Direct 사용):
Enter-PSSession -ComputerName fs01
파티션을 확장할 수 있는 최대 크기를 조회한 뒤, 해당 크기까지 확장합니다:
$MaxSize = (Get-PartitionSupportedSize -DriveLetter C).SizeMax
Resize-Partition -DriveLetter C -Size $MaxSize
가상 디스크를 가능한 한 가장 작은 크기로 줄여야 한다면 다음 명령을 실행합니다:
Resize-VHD -Path 'C:\VM\fs01\VHD\fs01.vhdx' -ToMinimumSize

이 명령을 실행하면 VHDX 파일의 최대 크기가 6GB 줄어듭니다.
KVM, VMware 등 다른 하이퍼바이저에서 가상 디스크 크기를 조정하는 방법도 참고하면 도움이 됩니다.