VMware ESXi에서 실행 중인 가상 머신의 가상 디스크(vmdk) 파일 크기를 줄이는 방법을 소개합니다. VMware 가상 머신의 디스크 확장은 가상 머신을 종료하지 않고도 실시간으로 수행할 수 있지만, ESXi 하이퍼바이저에서 vmdk 파일 크기를 줄이는 작업은 훨씬 복잡하며 vSphere Web Client의 그래픽 인터페이스로는 불가능합니다. vSphere Client에서는 가상 디스크 크기를 기존보다 작게 지정할 수 없기 때문입니다.
주의: 이 가이드는 VMware에서 공식적으로 지원하는 vmdk 디스크 축소 방법이 아닙니다. 다만 필자는 이 방법을 수십 번 사용해 왔으며, 본문에서는 VMware ESXi 6.7을 기준으로 설명합니다.

가상 디스크 축소 전 준비 사항
가상 디스크 크기를 줄이기 전에 ESXi 호스트에서 반드시 다음 작업을 수행하세요.
- 가상 머신의 모든 스냅샷을 삭제합니다. (그렇지 않으면 가상 디스크가 손상될 수 있습니다)
- 가상 머신의 전체 백업을 생성하거나, 축소하려는 vmdk 및 flat 파일의 복사본을 만듭니다.
cp vmname.vmdk backup_vmname.vmdk
cp vmname-flat.vmdk backup_vmname-flat.vmdk
가상 디스크 크기 축소 절차는 크게 두 단계로 구성됩니다.
- 게스트 OS 내부의 파티션 축소
- VMFS(NFS) 데이터스토어에서 VMware 가상 머신의 VMDK 파일 크기 축소
게스트 OS에서 파티션 크기를 줄이는 방법
먼저 게스트 운영체제에서 디스크 파티션 크기를 줄여야 합니다. 가상 머신이 Windows를 실행 중이라면 디스크 관리자(diskmgmt.msc)를 사용하세요. 볼륨 축소(Shrink Volume) 기능은 지원되는 모든 Windows 버전에서 사용할 수 있으며, 구버전 Windows에서는 sdelete 도구를 사용하거나 Acronis Disk Director 같은 서드파티 도구를 활용할 수 있습니다. 이 단계를 건너뛰면 가상 디스크 크기를 줄인 후 파일 시스템이 손상될 수 있습니다.

예를 들어 디스크 크기를 40GB 줄이려면 볼륨을 40960MB(40GB × 1024)만큼 축소해야 합니다. 볼륨 축소 마법사의 해당 필드에 이 값을 입력합니다. 파티션 크기를 줄이면 파티션 오른쪽에 할당되지 않은(unallocated) 공간(이 예에서는 40GB)이 생성됩니다.

참고로, OEM 파티션이나 Windows 복구 파티션이 디스크 축소 또는 확장 작업을 방해하는 경우가 종종 있습니다.

Linux에서는 parted를 사용해 파티션 크기를 줄일 수 있으며, LVM 논리 볼륨을 사용하는 경우에는 절차가 다르게 적용됩니다.
VMware 가상 머신의 VMDK 파일 크기 줄이기
이제 VMFS 파일 시스템에서 VMDK 파일의 크기를 줄입니다.
- 디스크 크기를 줄이려는 가상 머신을 종료합니다.
- SSH를 통해 해당 VM이 등록된 ESXi 호스트 콘솔에 접속합니다. (PuTTY 또는 Windows 내장 SSH 클라이언트 사용 가능)
- VM의 VMDK 파일이 위치한 디렉터리로 이동합니다. (vSphere 클라이언트의 가상 디스크 속성에서 경로를 확인할 수 있습니다)
cd /vmfs/volumes/datastore/test-VM
- cat 명령으로 가상 디스크 구성 파일(*.vmdk)의 내용을 확인합니다.
# cat test_vm_3.vmdk
vmdk 디스크 크기는 #Extent description 섹션(RW 문자 뒤)에 표시됩니다. 이 예에서는 167772160입니다. (80GB × 1024 × 1024 × 1024 / 512)
- VMDK 디스크를 80GB에서 40GB로 줄이려면 Extent description 섹션에 83886080(40GB × 1024 × 1024 × 1024 / 512)을 지정해야 합니다. 텍스트 편집기(vi 또는 nano)로 새 가상 디스크 크기를 설정합니다.
- 여기서는 vi를 사용합니다.
# vi test_vm_3.vmdk - 아래 방향키로 디스크 크기가 있는 줄로 이동한 후
i를 눌러 편집 모드로 진입합니다. 새 가상 디스크 크기를 지정한 뒤 ESC를 눌러 편집 모드를 종료하고,:wq→ Enter를 입력해 변경 사항을 저장합니다.
- 그런 다음 가상 머신을 다른 데이터스토어로 클론 또는 마이그레이션(Storage vMotion 사용)합니다. VM 파일을 이동하면 속성에 새 가상 디스크 크기가 표시됩니다.
팁. ESXi 호스트와 VMFS 데이터스토어가 각각 하나뿐이라면 Storage vMotion을 사용할 수 없습니다. 이 경우 다음 명령으로 vmdk를 클론할 수 있습니다.vmkfstools -i test_vm_3.vmdk test_vm_3_newsize.vmdk
원본 VMDK 디스크를 제거한 후, 남은 VMDK 디스크를 다시 클론하고 원래 이름으로 변경합니다.rm test_vm_3.vmdk
rm test_vm_3-flat.vmdk
vmkfstools -i test_vm_3_newsize.vmdk test_vm_3.vmdk - VM 속성에 새 가상 디스크 크기가 표시되는지 확인합니다.

- VM을 시작하고 게스트 OS에 로그인하여 할당되지 않은 영역이 사라지고 디스크 크기가 줄어들었는지 확인합니다.

팁. 이전 단계에서 vmkfstools를 사용한 경우, 새 크기가 올바르게 표시되지 않을 수 있으므로 VM 설정에서 가상 디스크를 다시 연결하세요.
참고. VMDK 디스크 크기를 줄이는 데 자주 사용되는 다른 방법은 다음과 같습니다.
- VMware vCenter Converter를 사용해 가상 머신을 변환하면서 가상 디스크 크기를 줄이는 방법 (변환 시 원본보다 작은 디스크 크기를 지정, 다음 섹션에서 자세히 설명)
- 서드파티 소프트웨어(Acronis True Image, Symantec Ghost32 등)로 가상 디스크 내용을 클론하는 방법. 가상 머신에 새로운 작은 디스크를 추가하고 큰 디스크의 내용을 클론한 뒤, 기존의 큰 디스크를 제거하는 방식입니다.
VMware vCenter Converter Standalone으로 VMDK 축소하기
VMware 가상 머신의 가상 디스크 크기를 줄이는 또 다른 방법은 무료 GUI 도구인 VMware vCenter Converter Standalone을 사용하는 것입니다.
단점:
- V2V 변환 속도가 느립니다.
- 새 VM을 저장할 데이터스토어에 충분한 공간이 필요합니다.
- 새 가상 머신은 새로운 MAC 주소를 갖게 됩니다.
장점:
- vCenter나 ESXi 호스트 콘솔을 열 필요가 없습니다.
- VM의 정확한 복사본이 생성됩니다.
- 변환 작업 설정에 오류가 있어도 원본 디스크는 손상되지 않습니다.
참고. 변환하려는 가상 머신(디스크 크기 변경 등)은 반드시 Shut down 또는 Power Off로 종료된 상태여야 하며, Suspend(일시 중단) 상태여서는 안 됩니다.
ESXi 호스트 주소를 지정합니다.

원본 VM을 선택합니다.

새 VM의 매개변수를 설정합니다.

디스크 편집 모드(Data to copy → Edit)로 이동합니다.

복사 모드에서 Select volumes to copy를 선택합니다.

새 VM의 디스크 크기를 지정합니다. 예를 들어 게스트 OS에서 48GB가 사용 중이고 디스크 크기가 150GB라면, 가상 디스크 크기를 60GB로 줄일 수 있습니다.

VM 변환 프로세스를 실행합니다. 완료되면 원본 VM을 종료하고 새 VM을 시작합니다. 디스크 크기가 줄어들었는지 확인한 후 원본 VM을 제거할 수 있습니다.
참고. 최신 버전의 Microsoft Hyper-V에서는 Hyper-V Online VHDX Resize 도구를 사용해 가상 디스크 크기를 동적으로 조정(확장 및 축소 모두)할 수 있습니다.