VHD 를 활용해보자! 왕초보 가이드

컴퓨터 유용한 팁 2012. 9. 28. 23:12

같은 왕초보로서 VHD 이해에 어려움이 있는 중생들을 위한 글입니다.(설치 처음부터 끝까지~)

반말어체는 가볍게 넘겨주세요 -0-;

모든 내용은 스누피 님 블로그에서 정보를 얻었으며, 그것을 토대로 강좌를 올립니다.

http://chogosu.textcube.com/209 에도 게시가 되어있습니다.

   

1. VHD(Virtual Hard Drive) 란 무엇인가?

  • Virtual Hard Drive 의 약자로 말그대로 가상의 파티션(드라이브) 이다.
  • 논리적으로 파티션을 나누지 않아도 .vhd 파일을 통해 드라이브를 단 한 개의 파일로 만들 수 있다.
  • 가상의 하드 드라이브 이기 때문에, VHD 에 윈도우를 설치해 놓고 쓴다면 일반 하드와 동일하게 사용할 수 있다.

   

2. VHD 의 특징

  • 단일 파일 하나(.vhd) 가 하나의 드라이브가 된다(아래 그림 참조)



    △ 위와 같이 win7x86.vhd 가 하나의 파티션(드라이브) 이다.

   

  • .vhd 파일의 백업, 복구가 간편하다.
  • 실제로 파티션을 나누지 않았기 때문에 파티션을 없애려면 .vhd 파일을 삭제하면 된다.
  • 이런 장점 때문에 테스트용도로 만들고 지우기가 편리하다.

   

3. VHD 의 단점

  • 윈도우7 체험 지수 측정 불가
  • 최대절전모드 지원 불가
  • 비트라커 암호화 사용 불가

    보시다시피 일반 데탑 컴퓨터 사용하는 사람에게는 별 쓸모 없는 기능들이다.

   

4. VHD 설치 전 개념 잡기

  • 위에서 말했듯이 VHD 는 가상의 드라이브 이다. 실제로 파티션을 나누는 것이 아니다.
  • VHD 로 부팅을 하려면 윈도우7 얼티밋 또는 엔터프라이즈 버전이 필요하다.(이하 버전은 부팅 불가)
  • VHD 는 포맷이 안된 RAW 하드(로우포맷이 한번도 안된 완전 쌩 하드디스크)에 생성할 수 없다.

    최근에는 새 하드라도 포맷이 되서 나오기 때문에 신경 쓸 필요는 없다.(SSD 는 모르겠음 ;)

   

5. VHD 를 위해 파티션 나누기 또는 포맷 미리 해두기

  • 필요한 사람만 하길 바란다.
  • 윈도우7 DVD 로 부팅을 하여 파티션 나누는 곳까지 온다.
  • 파티션 나누는것과 포맷하는 거 설명은 생략
  • 참고로 100MB 짜리 예약파티션을 생성하지 않는 법은 아래를 보면 알 수 있다.

    100MB 예약 파티션 생성 안하고 파티션 나누기

  • X 눌러서 재부팅하자.

   

6. VHD 설치 시작하기

  • 윈도우7 DVD 를 넣어 DVD 부팅으로 설치화면을 띄운다.
  • 뜨면 Shift+F10 을 눌러 명령 프롬프트를 띄운다.
  • 아래 그림과 같이 명령어를 쳐준다. 매우 금방 끝난다.

    첫번째! Diskpart 치고 엔터(시간 약간 걸림)

    두번째! DISKPART > 이렇게 변했으면 아래 그림과 같이 create vdisk file=.vhd 파일이 위치할 드라이브:\쓰고싶은이름.vhdmaximum=VHD의 최대용량 type=expandable 치고 엔터

    세번째! Attach vdisk 치고 엔터

    네번째! Exit 을 쳐서 엔터치고 x 를 누릅시다.



  •    

  • 명령 프롬프트를 끈 다음 원래 윈도우7 설치하듯이 설치하면 된다.
  • 아래 그림을 보시다시피 할당되지 않은 공간이 20GB 가 있다. (가상의 파티션) 반드시! 20GB 드라이브를 선택을 하고 다음을 누르자!(주의! 고급 눌러 포맷하지 마시오.)



       

  • 경고창이 뜨면 무시하고 확인~



   

설치 다되었으면 아래 개념을 잡자

   

7. VHD 설치 후 개념 잡기

  • VHD 를 가 설치된 드라이브에서 VHD 로 부팅을 하면 원래의 드라이브와 다른 드라이브는 한 칸 뒤로 밀려나게 된다. (예, C 드라이브에 .vhd 파일을 만들고, VHD 부팅을 했다면, VHD 가 C 드라이브가 되고, 원래 C 드라이브는 D 드라이브로 보이게 된다. 그러므로, C 드라이브에 .vhd 파일을 만들었다면 VHD 부팅을 하고 나면 .vhd 파일이 D 드라이브에 있는 것을 확인할 수 있다.)


  •    

  • VHD 부팅시 .vhd 파일은 VHD 를 생성시 설정한 최대 용량으로 확장된다.

    (예, 20GB 로 설정해 만든 .vhd 파일이 4GB 라면(4기가 차있는거겠죠?) 부팅하면 20기가로 늘어난다.

  • VHD 파일 백업 및 교체는 PE 부팅으로만 가능하다.(아래서 설명하겠음)

   

8. 부팅메뉴에 PE 등록하기

  • VHD 를 백업하고 교체하고 싶을때는 부팅메뉴에 PE 를 등록해두면 된다.

    윈도우에서 아래 순서를 따라하자

  • 윈도우7 DVD 를 넣는다.
  • 윈도우7 원본의 SOURCES 폴더에서 boot.wim 파일을 꺼내고, BOOT 폴더에서 boot.sdi 파일을 드라이브 최상위에 복사한다.(폴더에 넣지 말 것!)



       

    아래 파일 다운받고 마우스 우클릭 누르고 관리자 권한으로 실행을 딱 한 번(중요!)만 한다.

    제작자 : 스누피

    PE 등록용 cmd 다운로드

   

  • 재부팅하면 아래 그림과 같이 Ramdisk 옵션을 볼 수 있다. 저것을 누르면 PE 부팅이 가능해진다.



       

  • 아래와 같이 PE 부팅을 하고 VHD 만들때와 동일하게 Shift+F10 을 누를경우 각종 작업을 할 수 있다.

   

9. PE 부팅 후 VHD 백업 또는 복구하기

  • 재시작 후 Ramdisk 옵션 을 눌러 PE 부팅을 한다.
  • 화면이 뜨면 Shift+F10 을 눌러 명령 프롬프트 창을 띄운다.
  • 아래 그림과 같이 내가 원하는 폴더에 복사를 하거나 다른 드라이브로 .vhd 파일을 복사할 수 있다.

    백업하고 싶으면 다른 폴더로 복사를 하면 되고, 복구하고 싶으면 백업본을 덮어씌우면 된다.

    Copy 명령어를 잘 이용하면 된다.

    Copy .vhd 파일이 있는 드라이브:\만든파일이름.vhd 한 칸 띄어쓰고 복사할 경로.

    여기서 주의할 점은 VHD 부팅했을 때의 드라이브 명이 아니라는 것이다. 원래 .vhd 만들었던 드라이브를 생각하면 된다.(VHD 부팅했을때 내컴퓨터에서 보이는 D 드라이브는 원래 C 드라이브)


  •    

10. 마치며...

  • 이거 보고도 이해 못했으면 VHD 사용은 포기해라. 머리만 아플 뿐이다.

posted by ZeroZZaNG™

출처 : Win.F 내 산사랑 님의 게시물


고수분 들은 필요없고 초보자님들이 VHD에 개념이 없고 VHD를 사용하고 싶은데

막막한 분들은 보시기 바랍니다.

이 강좌는 VHD 기초강좌를 하는게 아니고 본인이 짠 배치파일을 이용해서

VHD 만들기, 부팅목록에 등록 및 vhd 파일에 Windows 7 설치하는데 목적이 있습니다.

VHD에 대해서 자세히 알고 싶은 분은 스누피님 블로그에 방문해서 공부하시기 바랍니다.

그냥 따라하시면 VHD 만드는 것부터 부팅등록 Windows 7 설치가 됩니다.

본인이 사용하기 위하여 배치파일을 짜보았는데 없는 실력에 할려니

머리가 뽀개지는 줄 알았습니다. 스누피님의  "윈도우 7 BCD 종합 관리도구" 에서

일부 내용을 발췌해서 본인이 필요로 한 부분만 도용했습니다.

VMware에서 테스트하기 바랍니다.

충분히 연습하시고 실컴에 적용하시기 바랍니다.

VHD로 연습하기 위해서는 VMware 에서 가상디스크 용량을 넉넉잡고 100 기가  정도 할당하세요.

vmware  사용법을 모르시는 분들은 인터넷 검색해서 공부하세요

(ko_windows_7_ultimate_k_with_sp1_IE9_x86 x64_1in9_Hotfix_2012.04.15)install.wim 본 중

9번 이미지 windows_7 x64 Ultimate k 를 추출해서 Win7 x64 Paren.vhd 를 만들어 보겠습니다.

본인이 첨부한 윈도우 7 VHD Files Maniger.zip 을 다운 받아 "윈도우 7 VHD Files Maniger.CMD" 배치파일을

실행하세요..(아래 그림 참조)

 

1.부모파일 만들기 및 부팅 목록에 등록..





*.vhd 파일이 이미 만들어 졌으면..

만들어진 폴더 및 파일이름을 입력하면 *.vhd 만들기 과정은 건너띄고 부팅메뉴에 부팅이름만 등록됩니다.(재부팅시 나타납니다.)



 

 2. 부모파일 연결 및 *.vhd 파일에 Windows 7 설치..

부팅목록에 등록했으면 재부팅 하지 마시고 바로 *.vhd 연결 및 Windows 7 을 설치합니다.

위에서 만든 *.vhd 파일 이름및 폴더명을 입력하세요.





설치과정이 끝났으면 재부팅해서 제대로 설치되었는지 확인합니다.

---------------------------------------------------------------------------------------------------------------------

자식파일 과정은 밑에그림 보고 설명대로 하시면 작성이 됩니다.

자식파일 과정은 위에 설명한 "2. 부모파일 연결 및 *.vhd 파일에 Windows 7 설치.." 과정은 생략합니다.

자식파일 과정은 위에 부모파일 과정 완료후 작성하세요.(부모없는 자식은 없겠죠.  ^+^)



 

산타러브님이 만드신 "Windows7 x86 x64 Santalove™5.0.iso" 파일 중 install.wim 따로 추출해서

위 과정을 거치면 위에 설명한 바탕화면 WinSanta™5.0 x86.vhd 및 WinSanta™5.0 x64.vhd 파일도 만들 수 있겠죠.


posted by ZeroZZaNG™
출처 : http://snoopybox.co.kr/1222

오래전에 EasyBCD 때문에 알게 된 프로그램인데 당시엔 제가 사용할 일이 없어서 설치도 해보지 않았던 프로그램입니다. 그러나 최근에 Differencing VHD를 사용하게 되면서 이 프로그램은 거의 필수라는 생각이 들었습니다. 저처럼 매일 시스템을 복구하는 분들에겐 말이죠...

 

예전에 누가 방명록에 질문을 하셨더군요. 결벽증이 아니라면서 왜 매일매일 시스템을 되돌리냐고... 제가 다른 일에는 안 그러는데 유독 제 컴퓨터 관리에만은 유난을 떠는 경향이 있습니다. 어디 다른데 가서 남의 컴퓨터 쓰면 정말 답답해서 못 쓰겠더군요. 특히 아이콘으로 가득 차버린 바탕화면과, 시작메뉴에 프로그램이 너무 많아 스크롤이 필요할 정도의 컴을 보면 정말 답답해 숨이 막힐 지경까지는 아니더라도 아무튼 안타까움을 느낍니다.

 

저는 이런 저런 프로그램을 자주 설치해보는 편입니다. 하지만 자주 사용하는 프로그램이 아니라면 한번 설치만 해보고 다시 시스템을 되돌립니다. 제어판에서 삭제해도 되고, 전용 언인스톨 프로그램을 써도 되겠지만 저는 그냥 되돌립니다. 어차피 Differencing VHD라서 되돌리는데 30초면 충분하니까요. 그저께도 오피스 2010이 MSDN에 올라와서 설치를 해봤습니다. 하지만 그게 다입니다. 설치만 해볼 뿐이었습니다. 만약 제대로 설치할 생각이 있다면 부모 VHD로 부팅한 다음 오피스 2007을 먼저 삭제하고 2010을 설치했겠지요. 하지만 저는 오피스를 자주 사용하지 않기 때문에 당장 2010 설치가 급한 편은 아닙니다. 그래서 그냥 구경만 해보았을 뿐입니다. 일반 프로그램도 마찬가지입니다. 자주 쓰는 프로그램이 아니라면 필요할 때만 한번 설치하고 다 쓰고나면 다시 시스템을 되돌립니다. 특히 트라이얼 버전인 경우 더 의미가 있습니다. 제어판에서 삭제하면 트라이얼 기간이 소급되는 경우가 많습니다만 OS를 되돌리면 그럴 일은 없으니까요.

 

 

잡설이 길었는데 이제 프로그램 소개를 해드리겠습니다. 사실 뭐 소개고 뭐고 할 것도 없습니다. 워낙 작고 가벼운 프로그램이라...

 

홈페이지

http://neosmart.net/dl.php?id=11

 

 

설치하시면 우측 하단에 트레이 아이콘이 하나 생성됩니다. 저의 경우 현재 이렇게 간소하게 멀티부팅 메뉴를 쓰고 있습니다.

 


 

 

사용 방법은 두가지입니다. 트레이 아이콘에 우클릭 하시면 위에 Reboot on Selection 메뉴가 있는데 저기에 체크를 하시면 그 아래 멀티부팅 메뉴를 선택하자마자 바로 재부팅 되어 버립니다.

 


 

 

만약 수동으로 재부팅 하려는 경우에는 그냥 아래 메뉴만 선택해주시고 나중에 윈도우를 재부팅 시키면 됩니다. 만약 재부팅이 아니라 그냥 윈도우를 종료만 시키는 경우에도 이 설정은 적용되기 때문에 나중에 컴퓨터를 켜면 설정해두었던 부팅 메뉴로 자동으로 부팅됩니다.

 


 

 

 

제가 이 프로그램을 사용하는 이유는 재부팅 해서 "VHD 파일 교체하기" 메뉴를 선택하기까지 걸리는 10여초를 기다리기 싫기 때문입니다. 주로 시스템을 되돌릴 때는 밥먹으러 나가기 전이나 화장실에 갈 때인데 이 프로그램을 사용하면 그 재부팅 후 부팅메뉴가 뜨기 까지의 시간동안 컴퓨터 앞에 앉아서 대기하지 않아도 되기 때문입니다.

 

또한 다른 이유도 있습니다. 멀티부팅 메뉴 표시 시간을 없앨 수 있다는 점입니다. 이 프로그램을 사용하기 전에는 멀티부팅 메뉴 선택 시간을 3초로 설정해두었는데 이제는 메뉴가 뜨지 않도록 해서 사용하고 있습니다.

 


 

 

또한 정말 사소한 이유이기는 하나 제가 사용중인 메인보드가 때때로 멀티부팅 메뉴에서 키보드를 안 먹는 경우가 있습니다. 자주 그러는 것은 아니고 아주 가끔 그런 현상이 발생하는데 그런 경우 윈도우에 진입할 때까지 기다렸다가 다시 재부팅 해주곤 했습니다. 하지만 이 프로그램을 사용하게 되면서 그 걱정은 말끔히 사라졌습니다.

 

 

 

혹시 본문에 나오는 Differencing VHD 또는 VHD에 대해 전혀 모르신다면 아래 글들을 읽어보시기 바랍니다. 저랑 컴퓨터 사용하는 스타일이 비슷한 분들이라면 Differencing VHD + iReboot 조합은 환상의 콤비가 될 것입니다.

 

윈도우 7의 VHD 부팅기능을 활용해보자

윈도우 7의 Differencing VHD 기능을 활용해보자

VHD 파일 자동교체 부팅메뉴 등록하기


posted by ZeroZZaNG™
출처 : http://snoopybox.co.kr/1222

관련 글

 

 

먼저 VHD 파일을 교체하는 스크립트를 만들어보겠습니다. 우선 제가 쓰고있는 VHD 파일을 보여드리겠습니다.

 


 

 

저는 현재 SSD 드라이브에 VHD 라는 폴더를 하나 만들어놓고 그 안에 3개의 VHD 파일을 두고 있습니다.

  • win7x86.vhd - 부모 VHD
  • child.vhd - 자식 VHD
  • clean.vhd - 자식 VHD를 처음 생성하자마자 백업해두었던 87kb짜리 깨끗한 자식 VHD

 

따라서 PE로 부팅하여

 

copy /y c:\vhd\clean.vhd c:\vhd\child.vhd

 

이렇게 명령어를 입력하면 자식 VHD 파일이 깨끗한 파일로 복원됩니다.

 

그런데 위 화면에서는 현재 SSD가 D 드라이브이지만 PE로 부팅하면 C 드라이브가 되기 때문에 저렇게 입력합니다만, 문제는 이게 가끔 바뀐다는 것입니다. 무슨 말이냐면 삼성 1TB 하드의 첫번째 파티션인 E 드라이브가 갑자기 PE에서 C로 되고 SSD는 D로 되는 그런 현상이 일어나는 것입니다. 예전에 Differencing VHD 파일 활용하기 전에 통파일을 수동으로 교체할 때 이런 드라이브 문자 혼동 때문에 사용하던 VHD를 최적화 VHD에 덮어씌운 경험이 몇번이나 있었습니다. 그럴 때마다 저는 눈물을 머금고 윈도우를 새로 설치했죠.

 

따라서 PE에서 드라이브 문자가 변경되는 현상에 관계없이 알아서 파일을 찾아서 교체하도록 해주기 위해서는 FOR 구문을 이용하시는게 좋습니다. 드라이브 문자가 어떻게 뒤바뀌더라도 상관없이 찾아서 바꿔주도록 하기 위함입니다.

 

아래는 예제입니다. 제가 처한 환경에서는 이렇게 활용합니다.

 

@echo off

for %%A in (C: D: E:) do if exist %%A\vhd\clean.vhd copy /y %%A\vhd\clean.vhd%%A\vhd\child.vhd

exit

 

간단하죠?

 

위 스크립트를 CMD 파일로 저장해서 실행하면 C ~ E 드라이브 중에 VHD 라는 폴더를 가지고 있고 그 안에 clean.vhd 파일이 존재한다면 그걸 동일 폴더에 있는 child.vhd 라는 파일로 강제 복사하게 됩니다. 저는 드라이브가 총 3개라서 저렇게 입력했는데 만약 드라이브가 많으시면 F: G: H: 이렇게 첫번째 괄호 안에 더 추가해주시면 됩니다.

 

이 FOR 구문을 이용하면 활용할 수 있는 것들이 무궁무진합니다. 아무튼 위 스크립트를 메모장에서 작성한 다음 CMD로 저장해주시고 Bat To Exe Converter - 배치파일을 exe로 변환해주는 툴 을 사용하여 exe로 컴파일합니다. 파일 이름은 setup.exe로 저장합니다.

 

 

 

만약 위 경우처럼 같은 드라이브 내에 있는 깨끗한 자식 VHD로 기존 자식 VHD를 교체하는 작업이라면 저렇게 간단하게 해결이 되겠지만, 다른 드라이브에 있는 파일을 옮겨오는 경우에는, 즉 Differncing VHD 사용하지 않으시고 네이티브 사용하시는 분들은 보통 백업파일 덩치가 10GB 정도 되니까 다른 파티션에 백업파일을 보관하실텐데, 그걸 스크립트로 만드려면 약간 길어집니다.

 

아래는 예제입니다. E 드라이브 BACKUP 폴더에 있는 win7x86.vhd 파일을 D 드라이브 VHD 폴더 안에 복사하는 작업입니다.

 

@echo off
for %%A in (C: D: E:) do (
    if exist %%A\vhd\win7x86.vhd (
        for %%B in (C: D: E:) do (
            if exist %%B\backup\win7x86.vhd copy /y %%B\backup\win7x86.vhd%%A\vhd\win7x86.vhd
        )
    )
)
exit

 

저렇게 이중으로 처리하지 않고 더 간단하게 할 수 있다면 고수님들께서 방법을 알려주시기 바랍니다.

 

 

 

이제 boot.wim 파일을 편집합니다. 그동안 GImagex는 많이 다루었으니까 이번에는 윈도우 7 내장 기능인 DISM으로 해보겠습니다.

 

먼저 윈도우 7 32비트 설치 원본 SOURCES 폴더에 들어있는 boot.wim 파일을 꺼내오세요. 저는 이 파일을 E 드라이브에 복사해두겠습니다.

 

그런 다음 마운트를 위한 임시폴더 하나를 만들어줍니다. 저는 E 드라이브에 MOUNT 라는 폴더를 하나 만들겠습니다.

 

boot.wim 파일을 복사해오셨고, 마운트할 임시폴더를 생성하셨다면 이제 관리자 권한으로 명령 프롬프트를 띄우신 다음 아래와 같이 입력합니다.

 

dism /mount-wim /wimfile:e:\boot.wim /index:2 /mountdir:e:\mount

 

boot.wim 파일의 위치와 마운트할 임시폴더의 위치는 각자 환경에 맞게 입력하세요. 이렇게 입력을 하셨다면 이제 마운트한 임시폴더로 가보세요. 그럼 윈도우처럼 생긴 파일들이 있을겁니다.

 


 

 

윈도우 7 DVD로 부팅을 하시면 이 boot.wim 파일이 램디스크(?)에 탑제되고 저기 보이는 setup.exe 파일이 자동으로 실행됩니다. 그래서 윈도우 설치화면이 바로 뜨는 것입니다. 우리가 해야 할 일은 저기 보이는 setup.exe 파일 대신에 VHD 파일을 자동교체하도록 만들어둔 setup.exe 파일을 집어넣는 것입니다. 그러면 저 파일로 부팅했을 때 윈도우 설치가 자동실행되지 않고 VHD 파일이 자동교체 되겠지요. 교체가 끝나면 알아서 재부팅까지 해줍니다. 참 편리하지요.

 

파일을 교체하셨다면 이제 윈도우 탐색기를 닫아주세요. 만약 탐색기를 닫지 않고 마운트된 폴더가 열려있는 상태라면 아래 작업시에 오류가 발생할 것입니다. 따라서 반드시 마운트된 폴더가 탐색기에서 열려있다면 탐색기를 닫아주시기 바랍니다.

 

dism /unmount-wim /mountdir:e:\mount /commit

 

이렇게 만든 boot.wim 파일은 이제 나만의 VHD 파일 교체용 PE가 된 것입니다.

 

 

 

이제 이 boot.wim 파일을 멀티부팅 메뉴에 등록시킬 차례입니다. 먼저 boot.sdi 파일이 필요합니다. 이 파일은 C:\Windows\Boot\DVD\PCAT 폴더 안에 들어있으며 윈도우 7 DVD 의 BOOT 폴더 안에도 들어있습니다. 이 파일을 복사해오신 다음 위에서 만든 boot.wim 파일과 동일한 위치에 두세요. 저는 D 드라이브 BOOT 폴더 안에 넣어두었습니다. 그런데 저는 기본 PE 부팅도 멀티부팅 메뉴에 두었기 때문에 위에서 만든 VHD 교체용 파일은 구분해주기 위해서 copy.wim 이라고 이름을 변경해둔 상태입니다.

 


 

 

 

이 파일을 멀티부팅 메뉴에 등록시키기 위해서는 우선 명령 프롬프트를 관리자 권한으로 띄우신 다음

 

bcdedit /create {ramdiskoptions}
bcdedit /set {ramdiskoptions} ramdisksdidevice partition=D:
bcdedit /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
bcdedit /create /d "VHD 파일 교체하기" /application OSLOADER


두번째 줄 끝에는 boot.sdi 파일을 복사해두신 드라이브명을 입력해주시고

세번째 줄 끝에는 boot.sdi 파일의 위치를 적어주시면 됩니다.

네번째 줄 중간에는 멀티부팅 메뉴에 등록시킬 이름을 적어주시면 됩니다.

 

만약 예전에 램디스크 옵션 메뉴를 제가 첨부해드렸던 스크립트로 등록시켰다면 이름을 뭘로 지정하더라도 무조건 램디스크 옵션이라고 나올겁니다. 그 문제를 수정하시려면 아래와 같이 입력해주세요.

 

bcdedit /deletevalue {ramdiskoptions} description

 

그러면 이제 램디스크 옵션이 아닌 네번째 줄에서 지정해주셨던 진짜 이름이 멀티부팅 메뉴에 나올 것입니다.

 

또한 기존에 이미 PE를 멀티부팅 메뉴에 등록해서 사용하고 계신 분들이라면 처음 세줄은 필요가 없습니다. 처음 세줄은 이미 만들어져 있는 것이니까 마지막 네번째 줄만 입력하셔서 OSLOADER 항목만 새로 한개 만들어주시면 됩니다.

 

아무튼 위 명령어들을 통해 새로운 VHD 파일 교체하기 항목을 만드셨다면 식별자 GUID가 반환되는데 저는 아래와 같이 나왔습니다.

 

{ae48570b-e279-11de-97e7-a1cf7efb0803}

 

위 문자열은 각자 다르게 나올 것입니다. 따라서 위 문자열을 잘 복사해두신 다음 이어서 계속 진행합니다.

(아래 두번째 줄과 세번째 줄은 같은 한 줄입니다. 블로그 가로 길이 때문에 두줄로 표시되었습니다.)

 

bcdedit /set {ae48570b-e279-11de-97e7-a1cf7efb0803} device ramdisk=[D:]\boot\copy.wim,{ramdiskoptions}
bcdedit /set {ae48570b-e279-11de-97e7-a1cf7efb0803} osdevice ramdisk=[D:]\boot\copy.wim,{ramdiskoptions}
bcdedit /set {ae48570b-e279-11de-97e7-a1cf7efb0803} path \windows\system32\winload.exe
bcdedit /set {ae48570b-e279-11de-97e7-a1cf7efb0803} systemroot \windows
bcdedit /set {ae48570b-e279-11de-97e7-a1cf7efb0803} winpe yes
bcdedit /set {ae48570b-e279-11de-97e7-a1cf7efb0803} detecthal yes
bcdedit /set {ae48570b-e279-11de-97e7-a1cf7efb0803} ems yes
bcdedit /displayorder {ae48570b-e279-11de-97e7-a1cf7efb0803} /addlast
bcdedit /timeout 3

 

좀 어려우신가요? 아니면 어렵지는 않지만 타이핑이 귀찮으신 것일 수도...

첫번째 두줄에서는 뒷부분에 VHD 파일 교체용 PE의 위치를 지정해주시면 됩니다. 저는 D 드라이브 BOOT 폴더에 copy.wim 이라는 이름으로 넣어두었기 때문에 저렇게 입력했습니다.

 

이렇게 한번 자세히 설명드려야 스스로 응용하실 수 있을 것 같아서 스크립트로 만들지 않고 수동으로 알려드렸습니다.

 

이렇게 해주시면 이제 멀티부팅 화면에 우리가 만들었던 VHD 파일 자동교체 하는 메뉴가 등장할 것입니다. 메뉴 고르는 시간은 3초로 해두었는데 너무 짧다 싶으시면 수정해주세요.


 
posted by ZeroZZaNG™
출처 : http://snoopybox.co.kr/1176

VHD의 종류에는 크게 3가지가 있습니다. 

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

지난번에 포스팅했던 윈도우 7의 VHD 부팅기능을 활용해보자

글에서 wing4bee님께서 알려주신 내용인데, 언제 한번 내용을 알아봐야겠다고 생각만 했다가 이번에 XP 모드 관련 글을 포스팅하면서 XP 모드가 바로 이 Differencing VHD 방식을 사용하고 있다는 것을 알게 되었습니다. 

Differencing VHD를 활용하면 저처럼 VHD 부팅기능을 사용하시는 분들에겐 매우 큰 도움이 될 것입니다. 왜냐하면 저같은 경우 거의 하루에 한번 꼴로 VHD 파일을 복원합니다. 그냥 뭔가 새로운 프로그램이 나오면 한번 설치해보게 되고 계속 사용할 생각이 없다면 언인스톨 하는게 아니라 그냥 VHD 파일을 복원시켜버리죠. 현재 저는 윈도우 7 64비트 얼티밋 버전을 사용하고 있으며, 대략 9GB 정도의 VHD 파일을 최적셋팅 원본 상태로 사용하고 있습니다. 그런데 매일같이 이 9GB VHD 파일을 PE나 다른 OS로 부팅한 다음 복원시키는 일은 여간 귀찮은게 아닙니다. 대략 3~4분 정도 걸리는 작업인데 이 시간을 줄여보고 싶어서 Differencing VHD 방식을 고려하게 되었습니다. 저는 아크로니스 트루이미지를 사용하지 않지만 트루이미지의 증/차분 백업과 약간 비슷한 개념이라고 생각하시면 될 것 같습니다. 

만약 제가 현재 사용중인 9GB의 VHD 파일을 부모 파일로 지정해두고 자식 VHD 파일을 새로 생성해서 앞으로는 그걸로 부팅하게 된다면 어떻게 될까요? 참고로 방금 제 컴퓨터에서 직접 만들어본 결과... 바로 생성된 자식 VHD 파일을 BCD에 등록시킨 다음 크기를 보니... 40MB 밖에 되지 않습니다. 즉 앞으로 저는 이 40MB 짜리 파일만 교체해주면 다시 최적상태로 돌아올 수 있습니다. 9GB 복사하던 일을 앞으로는 40MB만 복사하면 되니 가히 혁신적인 기능이라 하지 않을 수 없습니다. 





이제 개념설명은 그만하고 실전에 들어가보겠습니다. 먼저 VHD에 윈도우 7을 설치합니다. 참고 : 윈도우 7 VHD 만들어서 설치하기 

설치를 다 하셨다면 이제 각종 프로그램을 설치하고 최적 셋팅을 합니다. 물론 윈도우만 설치된 상태에서 바로 자식 VHD를 생성하셔도 되겠죠. 이건 취향에 달린 문제니까... 저는 최적화 셋팅을 다 마친 다음 현재 사용중인 9GB 부모 VHD 파일을 기준으로 자식 VHD를 생성하겠습니다. 

이제 PE로 부팅합니다. 윈도우 7 DVD로 부팅하셔도 되고, F8 복구모드로 들어가셔도 되고, 최근에 소개해드린 PE를 멀티부팅 메뉴에 등록하기 글을 참조하셔도 됩니다. 어떤 방법을 활용하시든 윈도우 7 PE로만 부팅하시면 됩니다. PE로 부팅하셔서 명령 프롬프트를 띄우신 다음 (설치 화면에서 Shift + F10) 

1. DISKPART로 들어갑니다. - diskpart 

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

3. 자식 VHD 파일을 마운트합니다. - attach vdisk 

4. 방금 자식 VHD 파일이 어느 드라이브에 마운트 되었는지 확인해줍니다. - list vol 

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

6. 이제 자식 VHD 파일을 BCD에 부팅 등록시켜 줍니다. - bcdboot f:\windows /l ko-kr (F 드라이브는 5번 단계에서 확인했던 VHD 파일이 마운트된 드라이브를 지칭합니다.) 

7. 자식 VHD 파일을 이제 다른 곳에 백업합니다. 저는 40MB 정도 나왔는데 이걸 지금 백업해둬야 최소화된 백업 원본을 소유하게 되겠죠? - copy c:\win7-diff.vhd d: (백업을 꼭 해야하는건 아니지만 매번 자식 VHD를 똑같은 이름으로 새로 만드는 것 보다는 백업해둔 파일을 교체하는 편이 훨씬 간단하기 때문에 저는 파일을 백업해둡니다.) 





이게 끝입니다. 이제 재부팅 해보시면 자식 VHD로 부팅이 될 것입니다. 다만 기존 부모 VHD 엔트리와 이번에 새로 만든 자식 VHD 엔트리가 공존하게 되는데 기존 부모 VHD 엔트리는 삭제해주시면 됩니다. 엔트리 편집으로 가장 편한 방법은 msconfig 들어가서 부팅 탭에서 사용하지 않는 부모 VHD 부팅 메뉴를 삭제하시면 됩니다. 








저는 이제부터 기존에 9GB 교체하던 작업을 앞으로는 40MB만 교체하면 됩니다. 제가 쓰고있는 부모 VHD와 백업해둔 자식 VHD 파일입니다. 






(추가1) 아 중요한걸 빠뜨렸네요. 바로 자식 VHD의 변화분을 부모 VHD에 적용시키는 것입니다. 이렇게 자식 VHD로 부팅해서 사용하다보면 새로 추가된 프로그램이나 윈도우 설정이 마음에 들어서 이걸 부모 VHD에 적용시키고 싶어질 경우가 발생할 것입니다. 이럴 때는 부모 VHD 파일 자체를 변경시키는게 좋겠죠? 

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

1. DISKPART로 들어갑니다. - diskpart 

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

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

4. DISKPART를 종료합니다. - exit 








(추가2) 자식파일 크기가 40MB로 된건 bcdboot 작업 때문에 attach를 한번 해줬기 때문에 그런 것 같습니다. 어차피 BCD엔 동일 이름으로 등록되어 있으니 자식 파일 삭제하고 다시 동일 이름으로 만들어주고 attach를 하지 않으니 100KB로 생성되었습니다. 저는 이제 교체할 때 100KB 파일만 바꾸면 됩니다. 어차피 40MB나 100KB나 바꾸는데 1초 걸리는건 똑같지만 그래도 용량을 절감하게 되었네요. ^^ 








(추가3) 자식 VHD 생성 작업은 PE로 부팅해야 하는게 맞습니다. 부모 VHD로 부팅한 상태에서 바로 자식 VHD를 생성해주려고 시도해보니 사용중이라는 이유로 거절당했습니다. 




 
posted by ZeroZZaNG™
출처 : http://snoopybox.co.kr/852

이번 가이드는 현재 파티션이 나눠져 있지 않은데 나누기는 귀찮고, 그렇다고 C 드라이브를 포멧하기엔 들어있는 자료가 아깝고, 마땅히 자료를 백업해둘 곳도 없고, 하지만 윈도우 7은 꼭 설치해보고 싶은데, 업그레이드 설치는 싫고, 깔끔하게 클린설치를 하고싶은데... 라는 분들을 위한 글입니다.

 

설명이 좀 장황한데요. 앞으로 윈도우 7 이후로는 계속 이런 형태의 OS 설치가 유행하지 않을까 조심스레 예상해봅니다. 저는 정말 VHD 부팅이 혁신적인 기능이라고 생각하는데 아직까지 초보 분들에겐 막연히 어렵게만 보이는 것 같아서 안타깝습니다. 정말 이거 맛들이시면 헤어나지 못할 정도로 막강하고 편리한 기능입니다.

 

우선 기본 가정은 포멧이 되어 있다는 것을 전제로 하겠습니다. 만약에 파티션도 안잡힌 공장출하 하드에 설치하신다면 DISKPART로 포멧 작업을 해주셔야 하는데 솔직히 DISKPART로 포멧 작업을 하는 것은 좀 귀찮으니까 그냥 파티션매직, XP CD, 비스타 DVD 등으로 포멧은 미리 해결하시고 오세요. (그런데 요즘은 하드도 미리 포멧 되어서 나오더군요??) 왜 포멧이 되어있어야 하냐면 VHD 파일을 생성해야 하는데 포멧이 되어있지 않은 RAW 하드에는 VHD 파일을 생성할 수 없기 때문입니다.

 

 

 

윈도우 7 DVD로 부팅을 하신 다음 처음 화면에서 Shift + F10을 누릅니다.

(꼭 DVD 아니더라도 하드, USB에서 설치하기 등의 다른 방법을 사용하셔도 됩니다.)

 

 

 

지금부터 VHD 만드는 작업을 하겠습니다. 만드는건 간단하게 4줄이면 됩니다.

 

diskpart
=> DISKPART 실행

 

create vdisk file=c:\win7.vhd maximum=20480 type=expandable
=> VHD 파일을 생성합니다. 생성될 파일의 위치와 이름은 각자 지정해주세요.
    maximum 다음에는 MB 단위의 숫자를 입력합니다. VHD 파일의 최대 크기를 설정하는 것인데

    저는 20GB로 지정하기 위해 20480을 입력했습니다.
    type 부분은 expandable로 지정해주셔야 동적 확장 디스크가 생성됩니다. 평소엔 VHD 파일 안에

    들어있는 용량만큼의 크기로 존재하지만 VHD로 부팅했을 경우엔 지정해주신 용량으로 (20GB)

    파일의 크기가 변경됩니다.

 

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

 

exit
=> DISKPART 종료

 


 

 

 

 

 

간단하죠? 이게 끝입니다. 이제 이 창은 닫아주시고 평소에 설치하던대로 진행하시면 되겠습니다. 설치할 파티션 선택하는 화면에 도착해보시면 방금 만들었던 20GB짜리 디스크가 보일 것입니다. 거기에 설치해주시면 됩니다. 이렇게 설치를 하시면 알아서 원래 있던 C 드라이브에 BCD를 생성하고 이 VHD는 자동으로 VHD 부팅 엔트리 상태로 들어가게 됩니다. bcdedit 작업 또는 bcdboot을 신경쓰실 필요가 없습니다. 만약 기존에 XP나 비스타가 설치되어 있던 상태라면 당연히 자동으로 멀티부팅 구성됩니다.

 






 

이상으로 허접한 설명을 마치겠습니다.

 

 

(추가)

가끔 질문주시는 분들이 계신데 VHD에 설치하려고 하면 부팅되지 않을 수 있다는 경고가 나옵니다. 그냥 무시하고 설치하시면 됩니다.

 



 
posted by ZeroZZaNG™
출처 : http://snoopybox.co.kr/1293

1. snoopy는 왜 VHD 부팅을 사용하는가?

VHD는 가상 하드디스크입니다. 저는 이 가상 하드디스크 안에 윈도우 7을 설치하여 사용합니다. 왜 물리 하드가 아닌 가상 하드에 윈도우를 설치하는 것일까요? 그 이유는 유지, 보수, 관리를 매우 효율적으로 할 수 있기 때문입니다.

우선 이해를 돕기 위해 그림판 신공을 사용해보겠습니다.



왼쪽 그림은 일반적으로 가장 많이 사용되고 있는 방식입니다. 파티션을 분할하여 C 드라이브에 OS를 설치하고 나머지 공간은 자료 보관용으로 사용하는 것입니다. 오른쪽 그림은 현재 제가 사용하고 있는 방식입니다. 파티션을 나누지 않고 VHD 파일을 하나 만들어 그 안에 윈도우를 설치해서 사용합니다.

이렇게 VHD라는 테두리 안에 윈도우를 설치했을 때 얻을 수 있는 장점을 몇가지 적어보겠습니다.

  • 윈도우를 설치할 때 파티션을 나눌 필요 없이 있던 하드 안에 VHD 파일만 새로 하나 만들어 설치하면 된다.
  • 그렇기 때문에 윈도우를 설치할 때 포맷을 하기 전 자료를 다른 곳으로 백업할 걱정을 안 해도 된다. 그냥 가상 디스크를 하나 만들어 거기에 설치하면 끝이다. 마치 하드디스크를 추가로 구매하여 거기에 설치하는 것과 비슷하다고 볼 수 있다.
  • 마찬가지로 멀티부팅의 경우도 파티션을 나누거나 추가 하드를 필요로 하지 않고 여러개의 VHD 파일을 만들어 각각에 윈도우를 설치하면 된다.
  • 설치된 윈도우를 삭제하는 일은 매우 쉽다. 기존 방식에선 멀티부팅을 구성한 경우 OS를 삭제하는 일이 간단하지 않다. 특히나 삭제하려는 OS가 부팅 파일이 존재하는 시스템 파티션에 설치되어 있는 경우 문제는 복잡해진다. 해당 파티션을 포맷하면 다른 OS로도 부팅되지 않기 때문이다. 하지만 VHD 부팅에선 그런 걱정을 할 필요가 없다. 그냥 불필요한 OS가 있다면 VHD 파일만 삭제해버리면 끝이다. 매우 간단하다.
  • Expandable 방식의 VHD는 공간 활용 면에서 효율적이다.
  • Differencing VHD는 VHD의 꽃이다. 자세한 이야기는 아래에 이어서 설명하겠다.
  • Sysprep으로 일반화 봉인해두면 동일 VHD 파일을 다른 PC에 옮겨서도 부팅할 수 있다.
  • OS가 VHD 파일 하나에 들어가 있기 때문에 시스템 백업과 복구 역시 그 파일 하나만 백업해뒀다가 교체해버리면 된다. 고스트나 트루 이미지 등 사설 복구 프로그램이 필요하지 않다.
대충 생각나는 장점들을 이렇게 나열해봤습니다. 하지만 VHD의 진정한 꽃은 바로 Differencing VHD입니다. 이 방식은 활용하기에 따라 무한한 확장 가능성을 가지고 있습니다. 상상하는 것 그 이상을 보여줄 것입니다.



2. VHD 종류에는 어떤 것들이 있는가?

VHD 파일에는 크게 3가지 종류가 있습니다.

- Fixed
- Expandable
- Differencing

Fixed는 고정 크기 방식입니다. VHD 파일은 처음 생성할 때 그 크기를 지정해줄 수 있습니다. Fixed 방식에서는 일단 크기가 정해지면 해당 크기만큼 실제 하드디스크 안에서 공간을 차지하게 됩니다. 그러니까 자신의 영역을 미리 할당해두는 것인데 그림은 필요없겠지만 그래도 대충 그려보자면




Expandable은 동적 확장 디스크입니다. 사용된 크기만큼 점점 증가하는 형태입니다. 일반적으로 VMware나 버추얼 PC 등에서 가상 하드를 생성할 때 이 방식이 주로 사용됩니다. VMware에 XP를 설치할 때 40GB를 할당했는데 실제로 하드 용량이 40GB 줄어들지는 않죠? 그 이유는 XP가 설치된 용량만큼만 감소했기 때문입니다.




이번엔 오늘의 하이라이트 Differencing 방식입니다. 이 방식에는 부모 VHD 파일과 자식 VHD 파일이 존재합니다. 자식 VHD 파일은 부모 VHD 파일의 내용물을 그대로 전수받으면서 차이점만 기록되는 방식입니다. 일단 여기서는 매우 심플한 그림으로 보여드리겠습니다.




자식 VHD는 부모 VHD의 내용물을 그대로 전수받는데 이때 모셔만 두고 읽기만 합니다. 비유하자면 부모 VHD는 거울 앞에 서 있는 실존하는 나 자신이고 자식 VHD는 거울 속에 비친 내 모습이라 할 수 있습니다. 빨간색 테두리 안의 영역은 부모 VHD에서 그대로 읽어만 온 영역입니다. 만약 저 상태에서 자식 VHD의 한글 2010을 지운다면 실제로 그것이 부모 VHD에서 지워지지 않습니다. 그냥 자식 VHD의 주황색 부분에다가 한글 2010이 지워졌다는 기록이 추가되는 것 뿐입니다. 따라서 자식 VHD에선 더이상 한글 2010이 보이지 않습니다. 하지만 부모 VHD 안에는 한글 2010이 그대로 존재하는 것입니다. 이를 거울에 비유하자면 거울 속 내 얼굴에 빨간색 매직으로 그림을 그린다면 비록 거울 속 내 모습은 변하지만 실제 내 얼굴에는 빨간색 매직이 칠해지지 않는 것과 비슷한 개념입니다.

만약 자식 VHD에 스타크래프트를 설치하게 되면 마찬가지로 그것은 부모 VHD에는 기록되지 않고 자식 VHD 안에만 주황색 영역에 스타크래프트가 설치되는 것입니다. 이정도면 Differencing VHD가 어떤 개념인지 대충 이해하셨으리라 생각합니다.



3. 왜 Differencing VHD를 사용해야 하는가?
 
그렇다면 왜 제가 그동안 Differencing VHD를 그토록 예찬해왔는지 그 이유를 설명드리겠습니다.

저는 컴퓨터 관련 블로거의 특성상 프로그램을 자주 설치해보는 편입니다. 새로 나온 프로그램이 있다면 일단 설치해본 다음 어떤 프로그램인지 확인합니다. 매우 유용하다 싶으면 블로그에 소개글을 올리기도 합니다. 그런데 대다수의 프로그램들은 한번 설치만 해보는 것으로 끝나버립니다. 지속적으로 계속 사용하게 되는 경우는 거의 없습니다. 아무래도 수년간 애용해왔던 프로그램이 있기 때문에 비슷한 종류의 새로운 프로그램이 등장했을 때는 쉽사리 그것으로 옮겨가지 못하겠습니다. 익숙한 것에 길들여져 있다 보니 변화를 받아들이는 일은 쉽지 않더군요.

또한 프로그램 중엔 트라이얼 버전이 많습니다. 트라이얼 버전은 그 특성상 프로그램을 삭제하더라도 나중에 다시 설치하면 그 이전에 설치했던 기록에 남아있어서 남은 사용기간이 소급 적용되는 경우가 많습니다. 왜냐하면 만약 그런 조치가 없다면 언제든지 기간 안에 지웠다 설치했다를 반복하여 영구적으로 사용할 수 있을 테니까요. 

또한 저는 윈도우의 각종 설정을 변경하거나 레지스트리를 건드리는 일을 자주 하는 편입니다. 이처럼 윈도우에 각종 프로그램을 이것 저것 설치했다 지웠다 하거나, 각종 설정을 이것 저것 변경해보는 일은 일반 유저들 입장에서 결코 부담없이 할 수 있는 일은 아닐 것입니다. 왜냐하면 윈도우란 녀석은 언제든지 망가질 가능성이 있는 것이고 만에 하나 받은 파일이 바이러스를 포함하고 있다면 아무리 백신이 있더라도 100% 안전하지는 못할 것입니다. 또한 아무리 프로그램을 깨끗하게 지운다 하더라도 레지스트리에 남아있을지도 모르는 그 미세한 흔적에 대한 찝찝한 기분을 결코 떨쳐버리기 힘들 것입니다.

Differencing VHD는 이 모든 걱정을 해결해줍니다. 마치 샌드박스와도 비슷한 개념이라 할 수 있으며 저는 사용해보지 않았지만 학교 전산실에서 주로 이용하는 순간 복구 프로그램들도 이와 비슷한 원리를 사용하지 않을까 싶습니다. 유지되어야할 원본은 그대로 모셔다 두고 마음대로 가지고 놀아도 되는 공간에서 마음껏 이것 저것을 해보는 것입니다. 그러다 문제가 발생하거나 깨끗한 순수 상태로 복귀하고 싶어지면 변경된 공간을 초기화 시켜버리는 것입니다. 제가 위에서 그렸던 그림으로 설명드리자면 자식 VHD의 주황색 부분을 날려버리는 것이라 할 수 있습니다. 거울에 비유하자면 더러워진 거울은 버리고 새 거울을 걸어두는 것과 비슷하다 할 수 있습니다.



4. Differencing VHD를 활용하는 다양한 시나리오

저는 집에서 혼자 컴퓨터를 사용하기 때문에 가장 기본적인 형태로 자식 VHD 1개만을 생성해서 사용하고 있습니다. 그런데 일부 유저들은 여러개의 자식 VHD를 필요로 하더군요. 이 글을 시작하게 된 이유도 바로 이 부분에 대해 그동안 몇차례 댓글로 요구사항이 있었기 때문에 이번 기회에 이렇게 정리를 해보는 것입니다.

저는 비교적 단순한 시나리오를 한번 구상해보겠습니다. 이것이 가능한 이유는 하나의 부모 VHD에 여러개의 자식 VHD를 연결할 수 있으며, 자식 VHD에 또 그 자식 VHD를 (즉 손자 VHD) 생성할 수 있기 때문입니다. 이 손자 VHD의 경우 할아버지 VHD의 내용과 부모 VHD의 변경분을 더해서 새로운 원본으로 간주하고 나머지 변경분을 기록하게 됩니다. 고손자 증손자 VHD도 계속해서 생성할 수 있습니다.




위 시나리오는 결코 효율적이지 않겠지만 어디까지나 예로 든 것 뿐입니다. 각자 자식 VHD의 특성을 활용해서 다양하게 시나리오를 꾸며보시기 바랍니다.

일단 VHD를 하나 만들어 거기에 윈도우 7을 설치합니다. 딱 윈도우 7만 설치해도 되고 각종 드라이버나 업데이트 정도는 해주셔도 되겠죠. 그리고 아들, 마눌님 모두 공통으로 사용할만한 프로그램이 있다면 역시 설치해주는게 좋을 것입니다. 물론 당연히 정품인증까지는 해두셔야 합니다.

그 다음엔 자식 VHD를 3개 생성합니다. 자식 1번으로 부팅해서 나 혼자 쓰는 각종 프로그램을 설치하고 최적화 작업을 마칩니다. 마찬가지로 자식 2번으로 부팅해서 초등학생 아들이 주로 하는 게임이나 학습용 프로그램을 설치합니다. 자식 3번은 제가 아직 결혼을 안 해서 잘 모르니 마눌님 좋아하시는 프로그램을 설치하고, 각종 카페 바로가기를 바탕화면에 만든다든지 메신저를 설치한다든지 기타 등등 마눌님 사용하시기에 최적화된 윈도우를 구성합니다.

그 다음엔 각 자식 VHD에다 다시 각각 자식 VHD를 생성합니다. 그 이유는 각각의 유저가 윈도우를 망가트렸을 때 복구해주기 위해서입니다. 일단 할아버지와 부모 세대까지는 원본으로 쓰자는 것이죠. 손자 VHD를 만들어서 마음대로 주물럭 거릴 수 있도록 해두자는 것입니다.

끝에 깨끗한 새끼 VHD라고 있는데 이건 복구용입니다. 자식 VHD를 처음 만들면 용량이 100kb 정도밖에 안 됩니다. 그 순수 VHD를 말하는 것입니다. 이 새끼 VHD를 각각의 손자를 처음 만들었을 때 따로 백업을 해둡니다. 이 100kb 짜리 깨끗한 파일 안에는 자신의 부모가 누구인지에 대한 정보 정도밖엔 들어있지 않습니다. 이렇게 만들어둔 깨끗한 녀석은 나중에 예를 들어 초등학생 아들이 뭘 잘못해서 바이러스에 걸렸다든지 윈도우가 날아가버린 경우 (어차피 날아가도 손자 2번만 날아간 것이니 걱정하지 않아도 됩니다.) 깨끗한 새끼 VHD 파일을 손자2.VHD 파일로 교체해버리면 끝입니다. 매우 간단합니다. 그래서 이 Differencing VHD 방식은 순간 복구 시스템과 비슷하다 할 수 있습니다.


또 다른 시나리오는 프로그램을 계층별로 설치해두는 것인데 하나의 부모가 여러개의 자식을 거느릴 수는 있지만 반대로 하나의 자식이 여러명의 부모를 가질 수는 없으므로 (당연한 이치겠지요 부모가 여러명이면 어떤 부모를 참조해서 다른 점을 기록해야 할지 알 수 없으니) 이 점을 고려하여 잘 구성해보시기 바랍니다. 저는 비교적 간단한 모델을 만들어 보겠습니다.




이렇게 구성하면 총 4가지 버전의 멀티부팅을 사용하게 될 것입니다.

1-2-5-8
1-2-6
1-3
1-4-7

그런데 저는 개인적으로 이러한 방식이 마음에 들지 않습니다. 왜냐하면 유지 보수 측면에서 불편하기 때문입니다. 예를 들어 2번에 오피스 2010이 설치되어 있다고 가정하겠습니다. 그런데 어느날 오피스 2010 서비스팩 1이 나왔고 이놈을 설치하고 싶습니다. 그러면 2번 파일로 부팅을 해서 설치를 해야겠지요. 이렇게 했을 때 5, 6, 8번에는 오피스 2010 서비스팩 1이 적용되지 않습니다. 부모 파일에 뭔가 추가된다면 자식 파일의 경우 교체를 해줘야 그 내용이 적용됩니다. 반대로 부모 파일에 뭔가 삭제된 경우라면 자식 파일에 그대로 적용됩니다. 부모에 있던 파일이 사라져버렸다면 자식에선 더이상 그것을 찾을 수 없겠지요. 다른 점만 보관하고 있었을 테니까요.

좀 말이 헛갈릴 수도 있는데 아무튼 2번에 업데이트를 적용하면 5,6번을 교체해야 하는데 5번의 경우 또 고유한 프로그램이 설치되어 있을테니 그것을 포기하지 않으려면 5번에 대한 백업파일을 가지고 있었어야 합니다. 그렇지 않고 클린 파일을 5번에 교체해버리면 8번은 더이상 무용지물이 되겠지요.

말로 설명하려니 좀 어려운데 아무튼 저의 생각은 이렇게 계층화 해서 프로그램을 설치하는 것은 유지 보수 측면에서 별로 좋아보이지 않는다는 것입니다. 따라서 차라리 작업을 많이 하게 되더라도 1세대 부모를 각 시나리오에 맞게 여러개 만들어 두는 것이 좋다고 생각합니다. 2세대 3세대 이어지게 되면 부모세대를 업데이트 해야할 때 골치아파지기 때문입니다.



5. 부모 파일 업데이트?

바로 위에서 부모 파일 업데이트에 대한 이야기를 했습니다. 평소엔 자식 VHD로 부팅해서 사용을 하지만 영구적으로 적용되어야할 사안이 생긴다면 부모 VHD로 부팅해서 그것을 적용해주는 것이 좋습니다. 왜냐하면 그렇게 하지 않은 경우 매번 자식 VHD를 깨끗한 녀석으로 교체해줄 때 마다 지난번에 설정해뒀던 그 내용이 날아가버려 다시 설정해야 하기 때문입니다.

즉 평소엔 거울 위에다 그림을 그리고 치장을 하겠지만 예를 들어 새로 그린 눈썹이 너무 마음에 들어 계속 유지하고 싶다면, 매번 거울을 깨끗한 것으로 교체할 때마다 눈썹을 그리는 일은 불편할테니 거울이 아닌 내 얼굴에 직접 눈썹을 그려줘야 한다는 말입니다.

물론 이 부모 파일 업데이트의 경우 직접 부모 파일로 부팅해서 내용을 적용해주지 않고 이미 변경된 자식 파일의 내용을 부모 파일에 적용시켜주는 커맨드가 있습니다. 하지만 저는 이런 방식을 싫어합니다. 제 컴퓨터에 관해서는 한번 할 때 완벽하고 깔끔하게 하려는 편이기 때문에 자식 파일에 혹시나 모를 이물질이 남아있다면 그것까지 부모 파일에 적용되는게 싫기 때문입니다. 그래서 꼭 적용해야하는 내용이 생기면 (주로 프로그램 업데이트 관련 이슈) 항상 부모 파일로 부팅해서 그것을 적용해준 다음 다시 자식 VHD를 깨끗한 것으로 교체해주곤 합니다.



6. VHD 부팅은 아무 윈도우나 다 지원하는가?

아쉽게도 그렇지 않습니다. 만약 그랬다면 정말로 환상적일텐데 말이죠. 파티션을 나누지 않고 파일만 딱 3개 만들어서 XP, 비스타, 세븐을 각각 설치하는 겁니다. 그러면 얼마나 좋겠습니까. 하지만 현실은 불가능합니다.

VHD 파일 안에 들어있는 윈도우가 네이티브로 부팅할 수 있는 기술은 오로지 윈도우 7에서만 가능합니다. 아 물론 당연히 서버 2008 R2도 포함입니다. 그런데 윈도우 7도 다 되는게 아닙니다. 물론 기술은 다 가지고 있지만 라이선스로 제한되어 있어서 엔터프라이즈, 얼티밋 버전에서만 VHD 부팅 기능이 지원됩니다. 이 점이 매우 아쉽죠.

예전에 어디서 흘러가는 글로 비스타도 업데이트를 통해 VHD 부팅기능을 지원할 것이라는 소문을 얼핏 본 것 같은데 제가 헛소문을 들었거나 꿈에서 본 것이 아니라면 기술적으로 VDI를 적용하는게 그리 어렵지는 않은 모양입니다.

하기야 버추얼 PC를 생각해보면 윈도우 XP도 약간만 패치를 하면 VHD 네이티브 부팅이 가능할 것 같은 느낌은 드는데 뭐 제가 기술자가 아니다보니 잘은 모르겠습니다. 된다면 얼마나 좋을까요.

그런데 이 부분을 가끔 오해하는 분들이 계십니다. 현재 XP가 설치되어 있거나 비스타가 설치되어 있다고 해서 윈도우 7을 VHD에 설치할 수 없는게 아닙니다. 현재 설치되어 있는 OS는 아무 상관이 없습니다. 아무런 OS가 설치되어 있지 않은 비어있는 하드라도 상관이 없습니다. VHD를 만들고 그 안에 윈도우 7을 설치하면 알아서 부팅파일을 외부에 만들어주고 VHD 스스로 알아서 부팅되기 때문입니다.



7. VHD 부팅 활용하기

이제 VHD에 대한 개념은 다 정리되었을 듯 싶습니다. 따라서 마지막으로 그동안 포스팅했던 VHD 관련 글을 링크로 남기겠습니다. 이 글에서 설치부터 활용까지 모든 내용을 중복해서 다룰 수는 없기 때문에 링크로 대체합니다.

먼저 아래 글을 참조하여 VHD 안에 윈도우 7을 설치합니다.

2009/06/16 - [Windows 7] - 윈도우 7 VHD 만들어서 설치하기

설치를 다 하셨다면 이제 각종 프로그램을 설치하고 완벽히 최적 상태로 만듭니다. 그런 다음 이제 자식 VHD를 생성해서 그걸로 부팅해 평소 실사용 하시면 됩니다.

2009/11/22 - [Windows 7] - 윈도우 7의 Differencing VHD 기능을 활용해보자

이렇게 실사용 하다가 자식 VHD를 깨끗한 녀석으로 교체하려면 F8 복구모드나 PE에서 해야하는데 (혹은 멀티부팅 상태라면 다른 OS상에서 바로 교체) 이를 편리하게 자동으로 해주는 글입니다.

2009/12/10 - [Windows 7] - VHD 파일 자동교체 부팅메뉴 등록하기

그리고 마지막으로 재부팅 후 이 자동 교체 메뉴를 선택해주는 것 조차 귀찮으신 분들을 위해 윈도우에서 이 부팅메뉴를 선택할 수 있도록 해주는 프로그램입니다. 이 프로그램은 부모 VHD로 부팅해서 거기에 설치해두시면 편리하겠지요.

2010/04/25 - [유용한 프로그램] - 멀티부팅 메뉴를 윈도우에서 선택 - iReboot


이렇게 Differencing VHD를 활용하여 자주 시스템을 되돌리는 경우, 단점을 하나 꼽으라 한다면 설정 파일이 C 드라이브에 누적되는 프로그램에선 불편해집니다. 예를 들어 uTorrent 프로그램을 들 수 있습니다. 대량으로 시딩하시는 분들은 시딩 리스트에 대한 정보가 C에 저장되기 때문에 이 방식을 그대로 사용하면 자식 파일을 복구한 경우 시딩중이던 리스트의 변화분을 잃어버리게 됩니다. 다행히 uTorrent는 제가 다른 파티션에 옮겨두는 방식을 소개해드렸지만

2010/04/22 - [컴퓨터 관련 팁] - uTorrent 설정 파일 위치 변경하기

다른 프로그램의 경우 자주 설정을 업데이트 해야 한다면 불편할 수 있습니다. 매번 부모 VHD로 부팅을 해줘야 하니까요. 저는 그런 프로그램을 사용하지 않아서 별 문제가 없는데 다른 분들은 혹 그럴 수 있겠다는 생각이 듭니다.


이 외에도 VHD 파일을 자유자재로 주물럭 거리려면 bcdedit, bcdboot, diskpart 등에 익숙해지셔야 합니다. 일일이 다 설명드릴 수는 없으니 막히면 그때그때 글을 찾아보시기 바랍니다.

최대한 알기 쉽게 쓴다고 썼는데도 예전에 썼던 글을 보면 제가 좀 불친절한 부분이 많았던 것 같습니다. 혹시 이해가 되지 않는 부분이 있다면 댓글로 질문 남겨주시면 되겠습니다. 이상입니다.



※ 추가사항

VHD 용량에 대한 보충 설명입니다.

자식 세대는 무조건 Expandable 형식이며 최대 용량은 원조 부모의 그것을 그대로 물려받습니다.
또한 VHD가 Expandable 형식인 경우 평소에는 사용된 용량만큼 공간을 차지하지만 그것이 마운트된 후에는 최대 용량만큼 공간을 차지하게 됩니다.

예제1)
부모 VHD - Fixed 방식, 최대 용량 40GB, 현재 사용량 20GB

이 경우 자식 VHD로 부팅을 하면 부모 VHD는 Fixed 방식이기 때문에 하드에서 공간을 40GB 차지하게 되고, 자식 VHD 역시 부팅된 상태에선 40GB를 차지하게 됩니다. 고로 80GB의 용량이 필요하게 됩니다. 이 경우 부모 VHD에서 사용되지 않은 공간 20GB와 자식 VHD 역시 사용하지 않고 있는 공간 20GB가 중복되기 때문에 하드 용량이 아깝습니다. 따라서 자식 VHD를 붙일 생각이 있다면 부모 VHD는 무조건 Expandable 방식으로 생성하는 것이 용량 면에서 효율적입니다.

예제2)
할아버지 VHD - Expandable 방식, 최대 용량 40GB, 현재 사용량 20GB
부모 VHD - 할아버지에서 5GB 정도 차분 기록된 상태

이 경우 손자 VHD로 부팅을 하면 할아버지 VHD는 20GB, 부모 VHD는 5GB, 손자 VHD는 40GB의 공간을 하드에서 차지하게 됩니다. 이 두번째 예제만 이해하시면 VHD가 하드에서 공간을 어떤 식으로 차지하게 되는지 완전히 이해가 되시리라 생각합니다.

물론 할아버지 VHD가 현재 20GB를 사용하고 있다고 하더라도 이 Expandable 방식의 파일이 마운트되지 않았을 때 정확히 20GB만 차지하는 것은 아닙니다. 그것보다 더 차지합니다. 그러니까 Expandable 방식에선 최 외곽에 위치했던 파일에 의해 용량이 결정되는 것 같습니다. 제가 사용중인 부모의 경우 사용량은 13.1GB이지만 실제 파일은 14GB 정도 공간을 차지하고 있습니다. 만약 제가 부모로 부팅해서 한 20GB쯤 채운 다음 다시 파일을 삭제하고 13GB로 만든다 해도 재부팅 하면 부모 파일은 20GB를 차지할 것입니다. 즉 Expandable 방식에서는 파일을 삭제하더라도 경계선이 따라서 같이 줄어들지는 않습니다.

근본적으로 부모 VHD를 셋팅할 때 최대한 깨끗하게 설치한다면 용량의 낭비를 줄일 수 있겠지만 이것 저것 설치했다 지웠다를 반복하면 용량의 낭비를 초래할 것입니다.

이 Expandable 방식의 공간 낭비 문제점을 조금이라도 해결하고 싶다면 신비님의 아래 글을 참조하시기 바랍니다.

VHD 파일 최적화하기 - SDelete



posted by ZeroZZaNG™

윈도우7 VHD 크기 조절 방법

씨앗 나눔 화원/OS 2011. 4. 24. 02:52
출처 : http://liverex.tistory.com/371

윈도우7을 VHD로 설치했을 때 그 크기를 늘이거나 줄이는 방법을 알려드리겠습니다. VHD Resizer 라는 유틸을 이용할건데요. 이 유틸은 고정식 디스크 ↔ 동적디스크로의 변환과 VHD 크기의 "확장만" 가능합니다. 일부 글에서 축소가 된다고 소개하는 분들이 있던데... 쩝;;;; 그래서 아마 VHD Resizer 를 사용한다고 해서 이 내용도 엉터리아닐까 생각하신 분들 계실텐데... 정확히 말씀드리면 "디스크 관리"와 "VHD Resizer" 를 이용하는 방법입니다. VHD Resizer 가 용량을 인식할 때 미할당 공간은 인식하지 않는 점을 보고는 착안(?)해낸 방법입니다. 어떻게보면 편법인 셈이죠. 하지만 VHD 를 동적 형식으로 구성해서 사용하시는 분들이 가장 고민하던 것 중 하나인 VHD 크기를 줄이는 방법이 가능하다는 걸 알려드리는 것이니 관련해서 도움이 되시는 분들이 분명 계시리라 생각됩니다. 

 크기를 확장하는 방법은 줄이는 방법을 보시면 쉽게 이해가 되실테니 여기서는 생략을 하도록 하겠습니다. 같은 원리니까요 ^^;; 지금부터 방법을 소개드릴게요.



 
 먼저, 윈도우키 + R 을 눌러서 실행창을 여신 후 diskmgmt.msc 를 입력하여 디스크 관리창을 열어줍니다. 시작 - 컴퓨터에서 우클릭 - 관리 클릭 - 좌측 트리 메뉴에서 디스크 관리를 선택해 주셔도 됩니다. 디스크 관리창을 여셨으면 크기를 줄이고 싶은 VHD 를 연결해 줍니다. 혹시 현재 부팅해서 사용중인 VHD 를 줄이고 싶으시다면 PE로 부팅하여 다른 파티션에 복사하니 수 이 과정을 그대로 해주시면 되겠죠?? 





 저는 아래 사진을 보시면 아시겠지만 기존에 25GB 로 용량을 설정해서 만든 VHD를 연결했습니다. 이 녀석을 20GB 로 줄여볼게요~ 먼저 줄이고자 하는 디스크를 선택 후 우클릭 하여 "볼륨 축소" 를 선택해 줍니다. 





 그럼 아래처럼 축소가 가능한 공간의 수치가 나오는데 원하는 크기를 잘 고려해서 입력하시면 되겠죠?? 여기서 주의하실 점은 본인이 최종적으로 원하는 크기보다 작은 크기로 만들어 줘야합니다. 이 글의 경우에는 20GB 로 만들고 싶다는 가정하에 18GB 정도로 조정을 해볼게요.





 저는 6GB 정도를 축소시켜서 아래와 같이 18GB 를 인식하는 상태로 만들었습니다. 물론 이 상태로 탐색기를 열어도 드라이브 크기에서 인식은 18GB 이긴 한데... 문제는 이 파일로 부팅을 하게되면 VHD가 위치하는 물리적 디스크에서는 25GB 로 인식하고 용량을 잡아먹는다는 겁니다. 그럼 결국 전혀 줄어든게 아닌셈이 되는거죠. 





 위 내용이 무슨 말인지 이해가 안되시는 분들을 위해 짧게 설명드릴게요. VHD 를 이용하시는 분이라면 쉽겠지만 아닌 분들도 계실테니... VHD 로 윈도우7 을 설치하시면 물리적인 디스크에는 VHD 개별 파일로 윈도우7 이 자리잡고 있습니다. 아래 사진과 같이 말이죠. 아래 test 라는 파일 보이시죠? 이 녀석이 지금 20GB 로 표시가 되는데 지금 소개해 드릴 축소 과정을 완료한 후 현재 부팅을 했기 때문에 그런겁니다. 즉, 이 포스팅은 test 완료한 녀석으로 부팅해서 작성중인거죠 ^^;; 참고로 부팅을 안했다면 win7x86(원래 25GB)를 축소해서 다른 이름으로 저장한 것이니 13GB 정도로 표시되겠네요. 동적 디스크로 설치를 하게되면 이런 식으로 용량이 구성됩니다. 
 





 이 개별 파일로 이루어진 VHD 파일로 부팅을 하면 그 파일이 가상디스크를 생성, C 드라이브 등으로 표시가 되면서 하나의 디스크가 되는겁니다. 위 디스크 관리창 사진을 보시면 D 드라이브의 VHD 볼륨이 보이시죠? 이 녀석이 사실은 물리적으로 봤을 때 VHD 파일이 위치하는 파티션이고, 그 파일로 부팅이 되면서 가상디스크로 생성된 것이 현재의 C 드라이브입니다. 이제 얼추 VHD 원리가 이해되시나요? ^^

 아무튼 다시 본론으로 넘어와서... 위 과정까지 완료하셨다면 디스크 관리에 연결된 VHD 를 분리해주시고, VHD Resizer 유틸을 설치 및 실행해 주세요. 실행하시면 리사이징하고자 하는 파일을 선택하라는 창이 뜰겁니다. 조정하고자 하는 녀석을 선택해주시면 되겠습니다. 

 아래 사진을 보시면 아시겠지만 위에서 언급한대로 미할당 공간의 크기는 인식을 하지 않죠? 전체 크기는 25GB 지만 최소크기를 18GB 로 인식을 합니다. 이 유틸은 크기 확장만 가능하니까 이 18GB를 기준으로 원하는 크기로 늘려주면 되는거죠 ^^;;; 말그대로 정말 편법이죠? ㅎㅎ 그래서 디스크 관리에서 볼륨 축소를 할 때 원하는 크기보다 조금 더 작게 축소를 하셔야 하는겁니다. 그래서 저는 20GB로 조정할 것이기에 New Size 에 20 을 입력, save as 버튼을 눌러서 test 라는 다른 이름으로 저장되게 한 후 resize 를 했습니다. 동적으로 할지 고정식으로 할지는 본인의 선택이니 여기서는 언급하지 않겠습니다.


 


 완료가 되면 다른 파일도 리사이징 할 것인지 묻는데 아니라면 아니오를 누르시면 되겠죠??





 이제 리사이즈를 완료한 test 라는 이름의 VHD 파일을 디스크 관리에서 연결해 보면 아래와 같이 인식된 공간은 그대로 18GB 이지만 미할당 공간이 6GB 에서 1GB 조금 넘는 용량으로 변한걸 확인하실 수 있을겁니다.





 이제 이 녀석을 "볼륨 확장" 해주면 모든 과정이 끝입니다 ^^ 조금 번거롭긴 하지만 간단하죠? 







 
★ 윈도우7 VHD 관련 참고글

 
posted by ZeroZZaNG™