디스크와 파티션
[DiskPart] VHD 가상 디스크 복제하기 - Create Vdisk Source
CApple
2012. 5. 26. 06:35
VHD 가상 디스크를 복제하기 - 완전히 동일한 VHD 하나 더 만들기
VHD 가상 디스크는 .vhd 라는 파일이죠? 파일을 복사하면 어떻게 되나요? 100% 똑같은 파일이 하나 더 만들어지죠? 그거랑 똑같습니다. 현재 가지고 있는 VHD 가상 디스크와 100% 완전히 동일한 VHD 가상 디스크를 하나 더 만드는 방법은 바로 VHD 파일 자체를 복사하는 겁니다.
이렇게 VHD 파일 자체를 복사하면 가상 디스크 크기(Maximum), 방식(Fixed, Expandable), 그리고 안에 담긴 데이터까지(디스크 서명 정보, 파티션 구성, 파일 등) 그야말로 완벽하게 동일한 가상 디스크를 하나 더 가질 수 있게 되는 것이죠.
이와 같이 복사된(복제된) 가상 디스크는 원본과 디스크 서명 정보까지 동일하기 때문에 둘 모두를 동시에 연결하는 경우 디스크 서명 충돌까지 발생할 정도입니다. [참고 - 디스크 서명(Disk Signature)이란?] [물론 강제로 온라인으로 연결하면 서명 정보가 리셋되고 사용 가능해집니다.]
만약 해당 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 은 다르게 가상 디스크가 복제되는 것입니다.
다시 이야기로 돌아와서 예제로 앞서 만들어둔 파티셔닝도 완료되고 데이터도 담겨있는 D:\Example.vhd(Maximum=1024, Type=Expandable) 파일을, 가상 디스크 크기는 똑같이 대신 방식만 Fixed 방식으로 바꿔서 E:\Copy.vhd(Maximum=1024 동일, Type=Fixed) 로 복제하려면 아래와 같이 작업하면 되는 것이죠.
만약 원본이 될 D:\Example.vhd 가 현재 시스템에 연결되어 사용 중이라면, 아래와 같이 먼저 원본이(Source) 될 가상 디스크를 분리한 후 작업하시면 되고요.
간단하죠? 그래서 아래는 위의 예제 설명대로 실제로 작업해본 것입니다. [복제 후 각 가상 디스크를 연결하고 디스크 서명을 바꾼 작업은 생략하였습니다.]
이와 같은 방법으로 Fixed 형식의 가상 디스크를 Expandable 형식으로 바꿔서 복제할 수도 있고, 최대 크기 1GB 짜리 가상 디스크를 최대 크기 2GB 와 같이 최대 크기를 바꿔서(더 크게만) 복제할 수도 있는 겁니다. 또는 둘 모두를 적용해도 되구요.
요런 식으로 말이죠. 대충 이해하시겠죠?
VHD 가상 디스크 복제하기 - 추가 설명
1. 디스크 서명 충돌 문제 해결
일단 파티셔닝이 완료된 가상 디스크를 복제하면 필연적으로 디스크 서명 충돌 문제가 발생하게 됩니다. 두 가상 디스크의 서명이 동일하기 때문에 나중에 연결한 디스크에서 서명 충돌 문제가 발생하는 것이죠.
그래서 단순히 보관의 목적이 아닌 둘을 동시에 사용하려고 복제한 경우, 둘 중에 하나의 디스크 서명은 리셋(변경)해야만 둘 모두를 동시에 사용할 수 있습니다. 여기에는 크게 자동 서명 변경(Online)과 수동 서명 변경(UniqueID) 두 가지 방법을 생각해 볼 수 있습니다. [둘 모두 다른 글에서 설명한 거지만 다시 하죠 뭐.]
* 참고로 원본이 될 가상 디스크는 미리 분리되었다는 가정하에 작업.
강제 온라인 연결을 통한 자동 서명 리셋 - 서명을 리셋할 디스크를 나중에 연결하여 강제 온라인
서명 변경을 통한 수동 서명 변경 [특별한 서명을 원하는 경우] - 서명을 변경할 디스크를 먼저 연결하여 서명을 변경
간단하죠? DiskPart 는 이렇게 필요한 명령들을 적재적소에 잘 끼워 맞추기만 하면 되는 겁니다. 복잡해 보이지만 하나씩 뜯어서 보면 실상은 아무 것도 아니죠. 디스크 서명 충돌 문제는 여기까지~
2. 디스크 확장 문제 해결
Maximum 크기를 변경하여(더 크게) 디스크를 복제한 경우 디스크의 크기만 늘어나고 안에 포함된 파티션의 크기는 그대로 인채 복제가 됩니다. [파티션도 데이터이기 때문에 동일하게 그대로 복제됨] 이는 Expand Vdisk 명령을 통해 가상 디스크의 최대 크기를 늘렸을 때랑 똑같은 거죠.
그래서 이런 경우 안에 포함된 파티션의 크기도 동시에 늘리고 싶다면 역시나 똑같이 파티션을 선택한 후 Extend 명령을 통해 파티션의 크기를 원하는대로 늘려주시면 됩니다. [참고 - [DiskPart] 파티션의 크기 확장하기 - Extend] 대충 아래와 같이 말이죠.
뭐 그냥 연결까지만 하고 디스크 관리에서 작업하셔도 되고요. [참고 - [디스크 관리] 파티션 확장하기 - 공간이 부족한 파티션의 크기를 확장하는 방법] 취향대로 하시면 되는 겁니다. 만약 동시에 사용할거고 그래서 서명 충돌 문제까지 해결하려면 명령들을 잘 끼워맞추면 되겠죠?
알아두면 좋은 이야기
Create Vdisk Source 는 Source 에 현재 포함된 데이터를 그대로 가지고 오죠? Compact 명령은 현재 동적 확장 형식인 가상 디스크 파일의 크기를 현재 포함된 데이터에 맞게 최적화해주는 것이고요.
그래서 결론적으로 Create Vdisk Source Type=Expandable 을 통해 생성된 VHD 파일의 크기와, Compact 명령을 통해 최적화된 VHD 파일의 크기는 동일하게 됩니다. 즉, 원본이 Expandable 형식일 때 아래의 두 명령은 같은 결과를 보여주는 것이죠.
비슷한 이유로 Create Vdisk Source Maximum 은 Copy -> Compact -> Expand 와 같은 효과를 보여줍니다. 뭐 그냥 참고로만 알아두시라구요. ^^ 여기까지!
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 로 지정됩니다.
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
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
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. 원본의 디스크 서명은 그대로 두고 복사본의 디스크 서명을 바꿈.
2. 원본의 디스크 서명을 바꾸고 복사본의 디스크 서명은 그대로 둠.
참고 - 디스크 서명 충돌 문제 해결
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
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
select vdisk file="E:\Copy.vhd"
attach vdisk
select vdisk file="D:\Example.vhd"
attach vdisk
online disk
참고 - 디스크 서명 충돌 문제 해결
서명 변경을 통한 수동 서명 변경 [특별한 서명을 원하는 경우] - 서명을 변경할 디스크를 먼저 연결하여 서명을 변경
1. 원본의 디스크 서명은 그대로 두고 복사본의 디스크 서명을 바꿈. [서명은 본인이 원하는대로]
2. 원본의 디스크 서명을 바꾸고 복사본의 디스크 서명은 그대로 둠. [서명은 본인이 원하는대로]
참고 - [DiskPart] 디스크 서명(Disk Signature)의 관리 - UniqueID
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
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
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
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
DiskPart
Select Vdisk File="E:\Copy.vhd"
Compact
Compact
비슷한 이유로 Create Vdisk Source Maximum 은 Copy -> Compact -> Expand 와 같은 효과를 보여줍니다. 뭐 그냥 참고로만 알아두시라구요. ^^ 여기까지!
★ VHD 가상 디스크의 생성과 연결에 대한 기본 이해
★ [DiskPart] 가상 디스크의 생성과 연결, 분리, 삭제 - Create Vdisk, Attach, Detach
★ [DiskPart] VHD 가상 디스크 복제하기 - Create Vdisk Source
★ [DiskPart] 가상 디스크의 생성과 연결, 분리, 삭제 - Create Vdisk, Attach, Detach
★ [DiskPart] VHD 가상 디스크 복제하기 - Create Vdisk Source