본문 바로가기

디스크와 파티션

[DiskPart] VHD 가상 디스크 복제하기 - Create Vdisk Source

VHD 가상 디스크를 복제하기 - 완전히 동일한 VHD 하나 더 만들기

VHD 가상 디스크는 .vhd 라는 파일이죠? 파일을 복사하면 어떻게 되나요? 100% 똑같은 파일이 하나 더 만들어지죠? 그거랑 똑같습니다. 현재 가지고 있는 VHD 가상 디스크와 100% 완전히 동일한 VHD 가상 디스크를 하나 더 만드는 방법은 바로 VHD 파일 자체를 복사하는 겁니다.


Copy D:\Example.vhd E:\Example.vhd


이렇게 VHD 파일 자체를 복사하면 가상 디스크 크기(Maximum)방식(Fixed, Expandable), 그리고 안에 담긴 데이터까지(디스크 서명 정보, 파티션 구성, 파일 등) 그야말로 완벽하게 동일한 가상 디스크를 하나 더 가질 수 있게 되는 것이죠.

이와 같이 복사된(복제된) 가상 디스크는 원본과 디스크 서명 정보까지 동일하기 때문에 둘 모두를 동시에 연결하는 경우 디스크 서명 충돌까지 발생할 정도입니다. [참고 - 디스크 서명(Disk Signature)이란?] [물론 강제로 온라인으로 연결하면 서명 정보가 리셋되고 사용 가능해집니다.]

VHD 가상 디스크를 복제한 후 둘 모두를 연결해본 모습. 참고로 복사본의 디스크 서명 정보는 리셋하였다.



만약 해당 VHD 가상 디스크가 윈도우를 설치해둔, 그래서 윈도우가 담겨 있는 VHD 가상 디스크 파일이라면? 안에 담긴 윈도우까지 100% 동일하게 복제가 되는 것이죠. 그래서 이러한 특성을 활용하여 고스트나 트루 이미지와 같은 백업툴없이도 VHD 만을 활용하여 윈도우를 백업하는 것이 가능한 것입니다. VHD 파일만 복사해두고 문제가 생겼을 때 다시 복사해오면 되니까요. 간단하죠?

왜 VHD 를 활용하면 백업이나 복원 작업이 훨씬 간단해진다고 하는지 이해하시겠죠? [물론 압축이 안 되기 때문에 용량은 그만큼 필요하지만] 


자~ 가장 기초적고 널리 사용되는 VHD 가상 디스크의 복제 작업은 이와 같습니다. 이제 여기에서 좀 더 나가보죠.




VHD 가상 디스크를 복제하기 - 특성을 다르게 하여

파일 복사를 통한 가상 디스크의 복제는 완벽한데 문제는 너무 완벽하다는데에 있습니다. 안에 담긴 데이터는 물론 가상 디스크의 모든 특성들까지(Maximum 사이즈, Fixed 나 Expandable 방식) 동일하게 복제가 되기 때문이죠.

근데 이런 경우를 생각해보자고요. 어떤 VHD 가상 디스크가 있어요. 근데 그게 Expandable 형식이네? 맘에 안 들어요. 안에 담긴 데이터나 가상 크기는 똑같이, 대신 형식만 Fixed 로 바꿔서 복제를 하고 싶어요. 또는 반대로 Fixed 형식을 Expandable 형식으로 복제, Maximum 크기를 좀 더 늘려서 복제하려면? 이럴 땐 어떻게 해야 할까요?


그럴 때 사용하는 게 바로 Create Vdisk 명령의 Source 매개 변수입니다. 이 Source 매개 변수의 뜻이 뭐냐면 새 가상 디스크를 만드는데 Source 로 지정된 가상 디스크에서 데이터를 똑같이 가져와라! 그 뜻입니다. 즉, Source 가상 디스크의 내용과 똑같이 데이터를 미리 채워서 새 가상 디스크를 만드라는 거죠. 간단하죠?

단! 이 때 반드시 Source 가 되는 원본 가상 디스크는 미리 시스템에서 분리되어 있어야 합니다. 그것만 주의하세요.


아무튼 그래서 결과적으로 Source 매개 변수를 통하면 안에 담긴 데이터는 동일하게(디스크 서명 정보, 파티션, 포맷 형식, 파일) 대신 Type 이나 Maximum 은 다르게 가상 디스크가 복제되는 것입니다.

Create Vdisk File="D:\Copy.vhd" Source="D:\Example.vhd" Maximum=1024 Type=Expandable

Create Vdisk File=[새로 만들 복사본] Source=[데이터를 가져올 원본] Maximum[새 복사본의 크기] Type=[새 복사본의 방식]

Maximum=1024 -> 새 가상 디스크의 크기를 지정합니다. 반드시 Source 가상 디스크의 크기와 같거나 더 크게 지정해야 합니다. (작게는 불가능) 생략하면 Source 원본과 동일한 크기로 생성합니다.

Type=Expandable, Fixed -> 새 가상 디스크의 형식을 지정합니다. Source 의 형식과 무관하게 지정할 수 있으며, 생략하면 기본값인 Fixed 로 지정됩니다.


다시 이야기로 돌아와서 예제로 앞서 만들어둔 파티셔닝도 완료되고 데이터도 담겨있는 D:\Example.vhd(Maximum=1024, Type=Expandable) 파일을, 가상 디스크 크기는 똑같이 대신 방식만 Fixed 방식으로 바꿔서 E:\Copy.vhd(Maximum=1024 동일, Type=Fixed) 로 복제하려면 아래와 같이 작업하면 되는 것이죠.

diskpart
create vdisk file="E:\Copy.vhd" source="D:\Example.vhd" type=fixed


만약 원본이 될 D:\Example.vhd 가 현재 시스템에 연결되어 사용 중이라면, 아래와 같이 먼저 원본이(Source) 될 가상 디스크를 분리한 후 작업하시면 되고요.

diskpart
select vdisk file="D:\Example.vhd"
detach vdisk

create vdisk file="E:\Copy.vhd" source="D:\Example.vhd" type=fixed



간단하죠? 그래서 아래는 위의 예제 설명대로 실제로 작업해본 것입니다. [복제 후 각 가상 디스크를 연결하고 디스크 서명을 바꾼 작업은 생략하였습니다.]

사용 중인 원본 가상 디스크를 분리 후 Type 만 바꿔서 복제


Type 이 Fixed 로 바뀌었기 때문에 Copy.vhd 파일의 크기가 최대 크기와 동일하게 생성된 모습.


이 둘을 모두 연결한 모습. 데이터가 그대로 복제되었기 때문에 파티션과 포맷 형식도 그대로 복제된 것을 확인할 수 있다. 참고로 두 가상 디스크는 복제된 것이기 때문에 바로 연결하게 되면 디스크 서명 충돌이 발생하게 되는데 해당 문제는 미리 해결을 한 상태이다.


원본과(F:) 복제본의(G:) 데이터가 동일한 모습.



이와 같은 방법으로 Fixed 형식의 가상 디스크를 Expandable 형식으로 바꿔서 복제할 수도 있고, 최대 크기 1GB 짜리 가상 디스크를 최대 크기 2GB 와 같이 최대 크기를 바꿔서(더 크게만) 복제할 수도 있는 겁니다. 또는 둘 모두를 적용해도 되구요.

create vdisk file="E:\Copy.vhd" source="D:\Example.vhd" type=expandable

create vdisk file="E:\Copy.vhd" source="D:\Example.vhd" maximum=2048 type=fixed

요런 식으로 말이죠. 대충 이해하시겠죠?




VHD 가상 디스크 복제하기 - 추가 설명

1. 디스크 서명 충돌 문제 해결

일단 파티셔닝이 완료된 가상 디스크를 복제하면 필연적으로 디스크 서명 충돌 문제가 발생하게 됩니다. 두 가상 디스크의 서명이 동일하기 때문에 나중에 연결한 디스크에서 서명 충돌 문제가 발생하는 것이죠.



그래서 단순히 보관의 목적이 아닌 둘을 동시에 사용하려고 복제한 경우, 둘 중에 하나의 디스크 서명은 리셋(변경)해야만 둘 모두를 동시에 사용할 수 있습니다. 여기에는 크게 자동 서명 변경(Online)수동 서명 변경(UniqueID) 두 가지 방법을 생각해 볼 수 있습니다. [둘 모두 다른 글에서 설명한 거지만 다시 하죠 뭐.]


* 참고로 원본이 될 가상 디스크는 미리 분리되었다는 가정하에 작업.

강제 온라인 연결을 통한 자동 서명 리셋 - 서명을 리셋할 디스크를 나중에 연결하여 강제 온라인

1. 원본의 디스크 서명은 그대로 두고 복사본의 디스크 서명을 바꿈.

diskpart
create vdisk file="E:\Copy.vhd" source="D:\Example.vhd" type=fixed
select vdisk file="D:\Example.vhd"
attach vdisk

select vdisk file="E:\Copy.vhd"
attach vdisk

online disk



2. 원본의 디스크 서명을 바꾸고 복사본의 디스크 서명은 그대로 둠.

diskpart
create vdisk file="E:\Copy.vhd" source="D:\Example.vhd" type=fixed
select vdisk file="E:\Copy.vhd"
attach vdisk

select vdisk file="D:\Example.vhd"
attach vdisk

online disk


참고 - 디스크 서명 충돌 문제 해결


서명 변경을 통한 수동 서명 변경 [특별한 서명을 원하는 경우] - 서명을 변경할 디스크를 먼저 연결하여 서명을 변경

1. 원본의 디스크 서명은 그대로 두고 복사본의 디스크 서명을 바꿈. [서명은 본인이 원하는대로]

diskpart
create vdisk file="E:\Copy.vhd" source="D:\Example.vhd" type=fixed
select vdisk file="E:\Copy.vhd"
attach vdisk

uniqueid disk id=12345678
select vdisk file="D:\Example.vhd"
attach vdisk



2. 원본의 디스크 서명을 바꾸고 복사본의 디스크 서명은 그대로 둠. [서명은 본인이 원하는대로]

diskpart
create vdisk file="E:\Copy.vhd" source="D:\Example.vhd" type=fixed
select vdisk file="D:\Example.vhd"
attach vdisk

uniqueid disk id=12345678
select vdisk file="E:\Copy.vhd"
attach vdisk


참고 - [DiskPart] 디스크 서명(Disk Signature)의 관리 - UniqueID


간단하죠? DiskPart 는 이렇게 필요한 명령들을 적재적소에 잘 끼워 맞추기만 하면 되는 겁니다. 복잡해 보이지만 하나씩 뜯어서 보면 실상은 아무 것도 아니죠. 디스크 서명 충돌 문제는 여기까지~



2. 디스크 확장 문제 해결

Maximum 크기를 변경하여(더 크게) 디스크를 복제한 경우 디스크의 크기만 늘어나고 안에 포함된 파티션의 크기는 그대로 인채 복제가 됩니다. [파티션도 데이터이기 때문에 동일하게 그대로 복제됨] 이는 Expand Vdisk 명령을 통해 가상 디스크의 최대 크기를 늘렸을 때랑 똑같은 거죠.



그래서 이런 경우 안에 포함된 파티션의 크기도 동시에 늘리고 싶다면 역시나 똑같이 파티션을 선택한 후 Extend 명령을 통해 파티션의 크기를 원하는대로 늘려주시면 됩니다. [참고 - [DiskPart] 파티션의 크기 확장하기 - Extend] 대충 아래와 같이 말이죠.

diskpart
create vdisk file="E:\Copy.vhd" source="D:\Example.vhd" maximum=2048 type=expandable
attach vdisk
select partition=1
extend



뭐 그냥 연결까지만 하고 디스크 관리에서 작업하셔도 되고요. [참고 - [디스크 관리] 파티션 확장하기 - 공간이 부족한 파티션의 크기를 확장하는 방법] 취향대로 하시면 되는 겁니다. 만약 동시에 사용할거고 그래서 서명 충돌 문제까지 해결하려면 명령들을 잘 끼워맞추면 되겠죠?

언제나 말하는 것이지만 DiskPart 의 포커스 자동 지정(자연스러운 포커스의 이동)은 항상 머리속에 생각하고 명령을 보세요. 일부 명령들에서는 이해를 돕기 위해서 일부러 중복되지만 Select 명령을 내린 곳도 있습니다.





알아두면 좋은 이야기

Create Vdisk Source 는 Source 에 현재 포함된 데이터를 그대로 가지고 오죠? Compact 명령은 현재 동적 확장 형식인 가상 디스크 파일의 크기를 현재 포함된 데이터에 맞게 최적화해주는 것이고요.

그래서 결론적으로 Create Vdisk Source Type=Expandable 을 통해 생성된 VHD 파일의 크기와, Compact 명령을 통해 최적화된 VHD 파일의 크기는 동일하게 됩니다. 즉, 원본이 Expandable 형식일 때 아래의 두 명령은 같은 결과를 보여주는 것이죠.

Create Vdisk File="E:\Copy.vhd" Source="D:\Example.vhd" Type=Expandable
Copy D:\Example.vhd E:\Copy.vhd
DiskPart
Select Vdisk File="E:\Copy.vhd"
Compact



비슷한 이유로 Create Vdisk Source Maximum 은 Copy -> Compact -> Expand 와 같은 효과를 보여줍니다. 뭐 그냥 참고로만 알아두시라구요. ^^ 여기까지!