새 컴퓨터에 윈도우 7 VHD 패밀리 구성하기

새 컴퓨터에 윈도우 7 VHD 패밀리 구성하기

1 개요

  • VHD 패밀리는 스누피가 제안한 가상하드(VHD) 1 부모, 3 자식 체제이다.
  • 이 체제를 갖추면 특별한 절차 없이 재부팅만 한번하면 복원지점으로 돌아갈 수 있다.
  • 복원에 드는 시간이 매우 적기 때문에 원할 때마다 부담없이 할 수 있다.
스누피 테스트 결과 15초, 일반적인 SSD 환경에서 25초 이내.
  • 고스트나 알백 같은 백업/복원 솔루션이 필요없게 된다.
  • 윈도우 7 Enterprise, Ultimate 판에서 가능하다.

2 구조

  • 부모: 가상하드 이미지. (복원지점)
  • 자식: 부모 이미지의 변경분.
    • clean.vhd : 깨끗한 자식. 부모에서 변경된 부분이 없음. 보관용이며 mount하는 경우는 없다. child를 복구할 때 이것을 복사해간다.
    • child1.vhd, child2.vhd : 실제로 mount하여 사용하는 자식 이미지. 평소 이중 하나를 사용하게 될 것이다.

3 준비물

  • 새 컴퓨터
  • 윈도우 7 설치파일 (Enterprise 또는 Ultimate)
  • 외장하드(또는 USB 메모리)

4 외장하드로 윈도우 설치본 만들기

5 SSD 포맷하고 VHD 만들기

(참고자료: http://snoopybox.co.kr/852)

  • 외장하드로 부팅
  • Windows 설치 --- [다음]
  • [지금 설치]
  • [v] 동의함 --- [다음]
  • [사용자 지정(고급)]
  • 디스크 0 할당되지 않은 공간 --- [드라이브 옵션(고급)] --- [새로 만들기(E)] --- [적용] --- [포맷]
  • 파티션에는 ... 데이터가 손실됩니다. --- [확인]
  • Shift + F10
  • cmd 창에서 아래 명령어 실행
아래 예시에서는 VHD에 30GB(=30720MB)를 할당함.
X:\Sources>c:

C:\>dir
 C 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: 1234-5A6B

 C:\ 디렉터리

파일을 찾을 수 없습니다.

C:\>diskpart

Microsoft DiskPart 버전 6.1.7601
Copyright (C) 1999-2008 Microsoft Corporation.
컴퓨터: JMNOTE

DISKPART> create vdisk file=c:\win7.vhd maximum=30720 type=expandable

  100 퍼센트 완료

DiskPart가 가상 디스크 파일을 만들었습니다.

DISKPART> attach vdisk

  100 퍼센트 완료

DiskPart가 가상 디스크 파일을 연결했습니다.

DISKPART>
  • cmd창 닫기
  • [새로 고침(R)] ---> 방금 만든 가상디스크가 추가됨 (예: 디스크 3 할당되지 않은 공간 30.0GB)
  • 가상 디스크 선택 --- [다음]
  • Windows 설치... (이후 일반적인 설치과정 진행)

6 윈도우 설치

  • 윈도우 설치
  • 드라이버 설치
  • 정품 인증

7 기초 설정 1

  • 바탕화면의 메신저 센터, 미디어 플레이어 센터 아이콘 삭제
  • 입력 도구 모음 숨김
  • 컴퓨터 관리 --- 저장소 --- 디스크 관리

디스크 초기화 창

논리 디스크 관리자가 디스크에 액세스하기 전에 디스크를 초기화해야 합니다.

(v) 디스크 0

  • (o) MBR
  • ( ) GPT

8 기초 설정 2

9 VHD 최적화

  • 필수 응용프로그램 설치

10 child들 생성

  • 윈도우 재부팅시 F8
  • [윈도우 복구]
  • 시스템 복구 옵션 --- [다음(N)] --- [명령 프롬프트]
Microsoft Windows [Version 6.1.7601]


X:\windows\system32>diskpart

Microsoft DiskPart 버전 6.1.7601
Copyright (C) 1999-2008 Microsoft Corporation.
컴퓨터: JMNOTE-ABCDEFG
 
DISKPART> create vdisk file=c:\clean.vhd parent=c:\win7.vhd
 
  100 퍼센트 완료
 
DiskPart가 가상 디스크 파일을 만들었습니다.
 
DISKPART> create vdisk file=c:\child1.vhd parent=c:\win7.vhd
 
  100 퍼센트 완료
 
DiskPart가 가상 디스크 파일을 만들었습니다.
 
DISKPART> create vdisk file=c:\child2.vhd parent=c:\win7.vhd
 
  100 퍼센트 완료
 
DiskPart가 가상 디스크 파일을 만들었습니다.

DISKPART> exit

DiskPart 마치는 중...

X:\windows\system32>exit
  • [다시 시작(R)] --> 재부팅 됨

11 child VHD 부팅메뉴 등록

(참고자료: http://snoopybox.co.kr/1405)

  • BCD 종합 관리도구 다운로드
  • CMD 파일 실행 --- [4. VHD 파일 부팅 메뉴에 등록하기] --- [D:\child1.vhd] --- [Windows 7 - Child 1] --- [Y] --- 창닫기
  • CMD 파일 실행 --- [4. VHD 파일 부팅 메뉴에 등록하기] --- [D:\child2.vhd] --- [Windows 7 - Child 2] --- [Y] --- 창닫기6

12 cmd 파일 생성

  • [윈도우 버튼] --- [cmd]
  • 다음과 같이 명령어 입력하여 Parent, Child 1, Child 2의 identifier 확인
C:\Users\jmnote>bcdedit -v | findstr "\-\- identifier description"
--------------------
identifier              {9dea862c-5cdd-4e70-acc1-f32b344d4795}
description             Windows Boot Manager
-------------------
identifier              {094df4be-36d7-11e1-9d5e-f91aa44ec368}
description             Windows 7
-------------------
identifier              {094df4bf-36d7-11e1-9d5e-f91aa44ec368}
description             Windows 7 - Child 1
-------------------
identifier              {094df4c0-36d7-11e1-9d5e-f91aa44ec368}
description             Windows 7 - Child 2

여기서는 부모가 094df4be-..., 자식1이 094df4bf-..., 자식2가 094df4c0-...임을 알 수 있음

  • [윈도우 버튼] --- [D:] ---> 탐색기 실행됨
  • 마우스 우클릭 --- 새로 만들기 --- 텍스트 문서 --- [자식교체.cmd]
  • 마우스 우클릭 --- 새로 만들기 --- 텍스트 문서 --- [parent.cmd]
  • 자식교체.cmd 우클릭 --- [편집]
자식교체.cmd
@echo off
pushd %~dp0
bcdedit /default {094df4bf-36d7-11e1-9d5e-f91aa44ec368} & copy clean.vhd child1.vhd
if errorlevel 1 bcdedit /default {094df4c0-36d7-11e1-9d5e-f91aa44ec368} & copy clean.vhd child2.vhd
shutdown /r /t 0
exit
  • parent.cmd 우클릭 --- [편집]
parent.cmd 내용
@echo off
pushd %~dp0
bcdedit /default {094df4be-36d7-11e1-9d5e-f91aa44ec368}
copy clean.vhd child1.vhd
copy clean.vhd child2.vhd
shutdown /r /t 0
exit
  • 자식교체.cmd 더블클릭
  • THE END!
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}