본문 바로가기

디스크와 파티션

[DiskPart] VHD 가상 디스크의 최대 크기 확장하기 - Expand

VHD 의 최대 크기를 확장하는 Expand 명령

1. Expand 명령의 이해

VHD 가상 디스크를 사용하다 보면 초기에 가상 디스크의 최대 크기를(Maximum) 너무 작게 설정하여 공간이 부족한 경우가 있습니다. 그럴 땐 새로이 더 큰 VHD 가상 디스크를 생성할 필요없이 곧바로 Expand 명령을 통해 현재 가상 디스크의 최대 크기를 확장할 수 있습니다.

Select Vdisk File="D:\Example.vhd"
Expand Vdisk Maximum=20480

Maximum=[새로운 최대 크기(MB)]

이와 같이 Select Vdisk 명령을 통해 확장할 VHD 가상 디스크 파일을 먼저 선택한 후, 이어서 Expand 명령을 통해 가상 디스크의 최대 크기인 Maximum 값을 새로 설정해주면 됩니다. 언제나 그렇듯이 [먼저 선택 -> 이후 작업] 을 따르시면 되는 겁니다.



2. 작업할 때 주의할 점

작업을 진행하시면서 주의하실 점이라면, 먼저 확장하려는 가상 디스크는 반드시 현재 시스템에서 분리된 상태여야 한다는 겁니다. 그래서 해당 VHD 가상 디스크를 현재 사용 중이라면, Select Vdisk 를 통해 가상 디스크를 선택한 후 Detach Vdisk 명령을 통해 가상 디스크를 시스템에서 분리한 후, 마지막으로 Expand Vdisk 명령을 내려야 하는 것이죠. 즉, 사용 중인 VHD 를 확장하기 위해선 [선택 -> 분리 -> 확장] 의 과정을 거치는 겁니다. 이해하시겠죠?

Select Vdisk File="D:\Example.vhd"
Detach Vdisk
Expand Vdisk Maximum=20480


이러한 이유로 만약 확장하려는 VHD 가 윈도우를 설치한 그래서 현재 부팅한 VHD 라면, 현재 상태에서는 VHD 를 시스템에서 분리할 수 있는 방법이 없으니, 멀티 부팅 중이라면 다른 윈도우로 부팅하여, 아니라면 윈도우 PE 로 부팅하여, 해당 VHD 를 사용 중이지 않은 상태에서 확장 작업을 진행해야 합니다. 즉, 윈도우가 설치된 VHD 라면 [윈도우 종료 -> 다른 윈도우(PE) 부팅 -> 선택 -> 확장] 이 되는 것이죠. 간단하죠?


다음으로 새로이 설정해주는 Maximum 값은 반드시 기존의 Maximum 값보다 커야 합니다. [즉, 더 작게는 불가능] 그래서 공식적으로 DiskPart 만을 통해서는 VHD 의 최대 크기를 더 작게 축소할 수 있는 방법은 없습니다.


마지막으로 Expand 는 VHD 가상 디스크의 크기만 확장하며. 안에 포함된 파티션을 같이 확장하지는 않습니다. 파티션은 따로 확장해 주어야 합니다. 이건 뒤에서 예제를 보시면 무슨 의미인지 정확하게 아실 수 있으실 겁니다. 그럼 실제로 VHD 가상 디스크를 확장해 보도록 하죠.




VHD 의 최대 크기 확장하기


현재 이와 같은 10GB(10240MB) 의 크기를 가진 D:\Example.vhd 이라는 가상 디스크의 최대 크기를 20GB(20480MB) 로 확장해보도록 하겠습니다. 현재 사용 중이라는 가정 하에 시스템에서 분리했다가 다시 연결하는 과정을 추가하도록 하죠.

diskpart
select vdisk file="D:\Example.vhd"
detach vdisk
expand vdisk maximum=20480
attach vdisk


그러면 보시는 것과 같이 가상 디스크의 최대 크기가 20GB(20480MB) 로 확장된 것을 확인할 수 있습니다. 단! 해당 디스크 안에 포함된 파티션(볼륨)은 이전과 같은 크기를 가지고 있죠. 따로 더 파티션을 만들 게 아니라면 파티션도 함께 확장해주어야 겠죠?

select partition=1
extend



파티션을 확장하는 것은 이전에 배운 Extend 명령이죠. 현재 상태에서 가상 디스크는 선택이 된 상태이니 곧바로 해당 파티션을 선택하고 Extend 작업을 해주시면 됩니다. 보통 거의 대부분의 VHD 에는 파티션을 하나만 생성하여 사용하고, 새로이 확장된 공간 전체를 사용하기 위해 해당 파티션을 최대 크기로 확장할테니 이와 같이 추가적으로 작업을 하면 되겠네요.



어떤가요? 간단하죠? 이와 같이 공간이 부족한 VHD 의 최대 크기를 늘려 VHD 저장 공간의 용량을 늘리는 작업은 [VHD 확장 작업 -> 포함된 파티션 확장 작업] 으로 이루어지는 것이 일반적인 모습입니다. 즉, 최종적으로 명령을 정리하면 아래와 같은 거죠.

diskpart
select vdisk file="D:\Example.vhd"
detach vdisk
expand vdisk maximum=20480
attach vdisk

select partition=1
extend

exit






참고 - 자식 VHD 의 확장

자식 VHD 는 확장할 수 없습니다.



그러니 부모 - 자식을 설정하고 자식 VHD 를 사용 중인 상태에서 해당 VHD 의 최대 크기를 확장하고 싶다면 먼저 부모를 확장하고, 부모가 변경되었으니 현재의 자식은 삭제하고 다시 재생성해야 합니다. 만약 현재 자식의 내용을 저장하고 싶다면 미리 부모로 병합 작업도 해주어야 겠죠.

참고로 자식 VHD 가 연결된 상태에서는 부모가 링크로 사용 중인 상태이기 때문에 마찬가지로 자식 VHD 의 연결을 먼저 끊어 주어야 합니다. 그래서 대충 아래와 같은 식으로 작업을 하면 되겠죠.

* 현재 자식을 사용 중인 상태이며, 작업 전 자식의 내용을 부모로 병합한다고 가정.
* 부모 VHD = D:\Example.vhd, 자식 VHD = D:\Child.vhd

diskpart
select vdisk file="D:\Child.vhd"
detach vdisk
merge vdisk depth=1
exit

del "D:\Child.vhd" /q

diskpart
select vdisk file="D:\Example.vhd"
expand vdisk maximum=20480
attach vdisk
select partition=1
extend
detach vdisk
create vdisk file="D:\Child.vhd" parent="D:\Example.vhd"
attach vdisk
exit


* 자식 VHD 선택, 분리 -> 자식 VHD 병합 -> 자식 VHD 삭제 -> 부모 VHD 선택, 확장, 연결 -> 부모 VHD 파티션 선택, 확장 -> 부모 VHD 분리 -> 자식 VHD 생성 -> 자식 VHD 연결


명령이 다소 길어 보이지만 하나씩 뜯어서 보시면 지금까지 모두 배운 내용들입니다. 자식 VHD 의 내용을 그냥 버릴거라면 Merge 명령만 빼면 되겠죠? 이와 같이 명령들을 잘 조립만 하시면 됩니다. 크게 어려울 게 없죠. 여기까지입니다. ^^