## 댓글을 통해 출처를 남기라는 내용이 들어와 정확하게 남겨드립니다. 스누피님의 블로그에서 VHD 관련 글을 통해
Diffence VHD 를 등록하여 부모/자식 간의 VHD를 이용한 복구/병합을 안내드리는 것입니다. 실제 제가 테스트하여
적용시킨 사례도 함께 적용해두었으니 오해 없으시기 바랍니다. (__) ##


[ VHD의 종류 ]
1. Fixed - 고정 크기 디스크. 한번 만들면 그 크기가 고정되는 형태입니다.
2. Expandable - 동적 확장 디스크. 사용량에 따라 그 크기가 점점 증가하는 유동적인 형태입니다.
3. Differencing - 부모 VHD 파일과의 차이점만 기록되는 형태입니다. 


[ Differencing VHD 생성 ] 
소스로서 사용하게 될 부모 VHD와 메인시스템으로 사용하게될 자식 VHD 를 생성하는 방법입니다.

 먼저 VHD에 윈도우 7을 설치해야 하므로, DVD 또는 USB 설치를 이용하여 윈도우 설치화면에서

"Shift + F10" 을 클릭 후 

diskpart : DISKPART 실행

create vdisk file=c:\win7.vhd maximum=20480 type=expandable
=> VHD 파일을 생성합니다. 생성될 파일의 위치와 이름은 각자 지정해주세요.(빨간색 부분)
    maximum 다음에는 MB 단위의 숫자를 입력합니다.(VHD 파일의 최대 크기를 설정하는 부분)
    type 부분은 expandable로 지정해주셔야 동적 확장 디스크가 생성됩니다. (유동적인 용량) 

attach vdisk : VHD 파일을 마운트합니다.

exit : DISKPART 종료

위 까지 진행하신 후 설치를 진행하면 가상 드라이브를 선택할 수 있게 설정되고, 그 부분에 설치하시면 VHD에서
윈도우를 설치하실 수 있습니다.

설치를 다 하셨다면 이제 각종 프로그램을 설치하고 최적 셋팅을 합니다.
물론 윈도우만 설치된 상태에서 바로 자식 VHD를 생성하셔도 되겠죠. 개인 취향이니 적절하게 해주시면 됩니다.
저는 최적화 셋팅을 다 마친 다음으로 자식 VHD를 생성하겠습니다.

이제 PE로 부팅합니다. 설치DVD로 부팅하셔도 되고, F8 복구모드로 들어가셔도 되고, 스누피님 블로그의 PE를 멀티부팅 메뉴에 등록하기 글을 참조하셔도 됩니다. 어떤 방법을 활용하시든 PE로만 부팅하시면 됩니다.
 
PE로 부팅하셔서 명령 프롬프트를 띄우신 다음 (설치DVD를 사용한 경우 "Shift + F10"을 이용)

diskpart : DISKPART 실행

create vdisk file=c:\win7-diff.vhd parent=c:\win7.vhd
=>각자 원하는 이름으로 자식 VHD 파일을 생성해주며, 부모 VHD 파일 위치는 정확히 지정해주세요.
   ※단, 자식 VHD 파일과 부모 VHD 파일은 반드시 동일한 파티션에 존재해야 합니다.

attach vdisk : 방금 생성한 자식 VHD 파일을 마운트합니다.

list vol : 위에서 마운트한 자식 VHD 파일이 어느 드라이브에 마운트 되었는지 볼륨을 확인해줍니다.

exit : 확인이 되었다면 이제 DISKPART를 종료합니다.

bcdboot f:\windows /l ko-kr : 자식 VHD 파일을 BCD에 부팅 등록시켜 줍니다.
   =>F 드라이브는 list vol 로 확인했던 VHD 파일이 마운트된 드라이브를 지칭합니다.

copy c:\win7-diff.vhd d: => 자식 VHD 파일을 이제 다른 곳에 백업합니다. - 백업을 꼭 해야하는건 아니지만 매번 자식 VHD를 똑같은 이름으로 새로 만드는 것 보다는 백업해둔 파일을 교체하는 편이 간단하기 때문에 추천합니다.

이게 끝입니다. 이제 재부팅 해보시면 자식 VHD로 부팅이 될 것입니다.
부팅후 확인해보면 기존 부모 VHD 엔트리와 자식 VHD 엔트리가 공존하게 되는데 혼란을 방지하기 위해 기존 부모 VHD 엔트리는 삭제해주시면 됩니다.
엔트리 편집으로 가장 편한 방법은 윈도우 실행에서 "msconfig" 입력 후 '부팅' 탭에서 사용하지 않는
부모 VHD 부팅 메뉴를 삭제하시면 됩니다. (현재 자식VHD로 부팅되어있으므로 현재OS가 아닌 부분을 삭제)



[참고사항]
자식 VHD 생성 작업은 PE로 부팅한 후 진행하여야합니다.
부모 VHD로 부팅한 상태에서 바로 자식 VHD의 생성을 시도하니 아래와 같이 실패하게됩니다.



[ 부모 VHD로 Merge 시키기 ]
이렇게 자식 VHD로 부팅해서 사용하다보면 새로 추가된 프로그램이나 윈도우 설정이 마음에 들어서 이걸 부모 VHD에 적용시키고 싶어질 경우가 발생할 것입니다. 부모 VHD 파일에 Merge를 통해 변경시키 주는게 좋습니다.

마찬가지로 PE로 부팅한 다음 CMD 창에서

diskpart : DISKPART로 들어갑니다.

sel vdisk file=c:\win7-diff.vhd : 자식 VHD 파일을 선택합니다.

merge vdisk depth=1 : 부모 VHD 파일에 자식 VHD 파일을 병합시켜줍니다.

exit : DISKPART를 종료합니다.


[ 자식 VHD 용량 최적화 시키기 ]
자식 VHD파일 크기가 bcdboot 작업 때문에 attach를 한번 해줬기 때문에 용량이 크게 적용되게 됩니다.
어차피 BCD엔 동일 이름으로 등록되어 있으니 위에서 생성한 자식 VHD 파일을 삭제하고 다시 동일한 이름으로
자식 VHD를 만들고 "attach" 부분을 생략하면 생성되는 자식 VHD 파일의 용량이 100KB 정도로 생성되었습니다.
어차피 복구를 위해 VHD 파일을 교환하는데 1초 소요되는건 똑같지만 용량이 최적화되게 됩니다.

AND