자식 디스크(차이점 보관용 디스크)를 VHD 부팅에 적용하기
기존 자료 백업 2009. 12. 27. 15:49 |이곳은 백업 블로그 입니다. 현재 캐플이 활동 중인 블로그는 CAppleBlog.co.kr 입니다. 최신 정보들은 새로운 블로그에서 확인해 보세요. ^^
- 이곳은 기존 블로그들의 글을 한군데로 모아 놓은 백업 블로그입니다.
- 현재 링크는 대부분 올바르지 않으며 이러한 링크들은 모두 cappleblog.co.kr 로 이동합니다. (※ 링크 주의)
- 블로그와 커뮤니티는 서로 다른 공간입니다.(로그인을 따로 해야합니다.)
- 저는 윈티티(WinTT)이자 신비(ShinB)이며 캐플(CApple)입니다. 편한대로 불러주세요.
윈도우 7 의 VHD 중에는 차이점 보관용 디스크(자식 디스크)라는 방식의 가상 디스크가 존재합니다. 자세한 내용은 아래 글을 참고하시길 바랍니다.
이러한 자식 디스크는 물론 현재 윈도우를 설치하여 사용 중인 VHD 에도 적용이 가능하며 마찬가지로 윈도우가 설치된 VHD 와 연결하여 생성한 자식 디스크로 부팅하는 것도 가능합니다. 자식 디스크는 특성상 부모 디스크와 연결되어 부모 디스크의 내용을 그대로 가져오니 자식 디스크의 크기를 매우 작게 유지할 수 있고 이 후 자식 디스크로 연결하여 부팅된 윈도우에서 변경된 모든 내용은 부모 디스크가 아닌 자식 디스크에 기록되니 부모 디스크의 데이터를 언제나 동일하게 유지할 수 있다는 것 입니다. 또한 원하는 경우 자식 디스크의 내용을 부모 디스크에 바로 병합할 수도 있으니 변경된 내용을 언제든 부로 디스크로 추가시킬 수도 있습니다.
이와 같은 자식 디스크의 특성으로 인해 자식 디스크를 부팅용으로 사용하게 되면 얻게 되는 이점은 무엇일까요? 자식 디스크를 사용하기 이전엔 윈도우를 최적의 상태로 되돌리기 위해 미리 백업해둔 거대한 VHD 파일로 교체해야 했고 파일의 크기가 크다보니 다소 시간이 걸리는 작업이 아닐 수 없었습니다. 하지만 자식 디스크를 이용하는 경우 부모 디스크와 연결된 후 자식 디스크로 부팅하여 일어난 모든 변경분은 자식 디스크에 기록되니 최초에 생성된 매우 작은 크기의 자식 디스크만(약 100KB 이하) 다시 교체하면 되기 때문에 이 작업에 걸리는 시간이 획기적으로 단축되게 됩니다. 이는 여러가지 테스트 작업 등으로 인해 VHD 파일을 자주 교체하는 분들에겐 꽤나 큰 메리트로 작용하게 됩니다.
또한 하나의 부모 디스크에 여러 개의 자식 디스크를 생성하는 것이 가능하니 다양한 윈도우를 꾸밀 때 좀 더 수월해 지게 됩니다. 즉, 여러 환경의 윈도우를 멀티 부팅으로 꾸미고자 할 때 다수의 윈도우가 동일하게 가지는 환경까지 윈도우를 설정한 후 이를 부모 디스크로 하여 이 후 원하는 윈도우 환경의 수만큼 자식 디스크를 계층적으로 생성하여 원하는대로 꾸며주시면 됩니다. VMware Workstation 을 사용하시는 분들이라면 스냅샷을 통해 하나의 윈도우에 다양한 환경을 분기시키는 것을 상기시켜 보시면 이해가 빠르실 겁니다.
그렇다면 반대로 잃게 되는 단점은 무엇일까요? 부팅용으로 사용되는 모든 VHD 는 부팅이 진행되면 고정 크기 가상 디스크 형식으로 바뀌어 용량이 최대 크기에 맞춰 늘어나게 됩니다. 자식 디스크라고 예외일 수는 없습니다. 문제는 부모 디스크 하나만 사용할 때와는 달리 자식 디스크를 부팅용으로 사용하면 동적 확장 부모 디스크 + 고정 크기 자식 디스크의 크기로 실제 디스크의 용량을 꽤나 많이 잡아먹게 된다는 데에 있습니다. 이는 부모 디스크의 최대 크기가 크고 VHD 파일의 크기가 크면 클 수록 더욱 두드러지게 됩니다.
저 같은 경우 이것저것 사용하는 프로그램이 많아서 평상시 VHD 의 크기가 20GB 에 달하고(이것도 큰 프로그램들 몇 개 없애고 최대한 최적화하면 15GB 가 나오지만 이도 큰 편이죠.) 이를 수용하기 위해 가상 디스크의 최대 크기를 30 GB 로 설정해 놓았습니다. 하지만 자식 디스크를 사용하게 될 경우 20GB + 30GB = 50 GB 라는 꽤나 거대한 용량을 잡아먹게 됩니다. 또한 저는 특별한 경우를 제외하고 거의 모든 테스트를 VMware 의 가상 머신을 이용하고 사실 복원도 잘 안 하는 편 입니다. 이젠 대충 맘대로 써도 윈도우가 맛이 안 가더군요. -_-;; 그래서 사실 저는 사용하고 있지 않습니다.
아무튼 저는 여러분들께 윈도우 부팅용으로 자식 디스크를 꼭 사용하라고 권장할 수는 없습니다. 모든 선택은 장점과 단점을 잘 생각해 보신 후 여러분들이 선택하셔야 합니다. 저는 그저 활용하는 방법에 대한 가이드를 제공해 드릴 뿐이죠. ^^
잡소리는 이쯤하고 자식 디스크를 사용하실 분들을 위해 자식 디스크를 생성하고 부팅 메뉴에 추가하는 방법에 대해서 설명을 드리도록 하겠습니다. 그럼 자식 디스크를 생성하고 이를 부팅 목록에 추가해 보도록 하겠습니다. 작업의 순서는 아래와 같습니다.
이 때 부모 디스크가 될 VHD 가상 디스크는 이미 윈도우가 설치되어 있는 가상 디스크여야 합니다. 그럼 작업을 시작하도록 하겠습니다.
자식 디스크를 생성하기 위해선 원본이 되는 부모 디스크를 반드시 시스템에서 분리시켜야 합니다. 하지만 여러분들이 작업하실 때 대부분은 현재 부팅하여 사용 중인 VHD 를 대상으로 작업을 진행하실 겁니다. 이럴 때는 윈도우를 종료하는 것 말고는 방법이 없습니다. 다른 윈도우 7 으로 부팅하시거나 윈도우 7 설치 DVD 와 같은 다른 7 계열 운영체제로 부팅하시길 바랍니다.
[참고] 윈도우 7 설치 DVD 로 부팅하기 전에 보면 좋은 정보 - 자식 디스크를 만들기 이전에 부모 디스크가 될 원본을 먼저 최적화 해 주시면 더욱 좋습니다. 아래의 두 글 중 맘에 드는 녀석으로 골라서 작업하시면 됩니다.(ImageX 를 통한 작업이 좀 더 효과가 좋지만 시간은 좀 오래 걸리는 편 입니다.)
최적화 작업은 하셔도 되고 안 하셔도 됩니다. 한 가지 최적화 작업을 하실거라면 최적화 작업을 먼저 하신 후 자식 디스크를 생성하셔야 합니다. 자식 디스크를 생성하신 후 최적화 작업을 하시면 안 됩니다~! 최적화 작업을 만약 하신다면 원하시는 방법으로 최적화하신 후 2 단계로 건너 뛰시면 됩니다.
글에서는 윈도우 7 설치 DVD 로 부팅하도록 하겠습니다. 다음 작업을 위해 미리 명령 프롬프트까지 띄우는 것까지 마쳐놓도록 하겠습니다.
[참고] 윈도우 7 설치 DVD 외에 컴퓨터 복구로 부팅하여 작업하셔도 됩니다.
이제 부모 디스크가 될 VHD 파일이 시스템에서 분리되었으니 바로 자식 디스크를 생성하시면 됩니다.
[참고] 만약 깨끗한 자식 디스크를 백업해 두길 원하신다면 자식 디스크를 시스템에 연결하기 전 다른 곳으로 복사하신 후 나머지 작업을 계속하시면 됩니다. 아래와 같이 말이죠.
이제 생성하고 연결한 자식 디스크의 윈도우를 BCDBOOT 를 통해 부팅 목록에 추가해 줍니다.
이제 모든 작업을 마쳤습니다. 이제 재부팅하시면 부모 디스크와 자식 디스크에 연결된 윈도우가 모두 부팅 목록에 표시되게 되는데 방금 추가한 자식 디스크의 윈도우가 기본 부팅 항목으로 설정이 되어 있기 때문에 기본으로 선택되어져 있는 윈도우로 부팅하시면 됩니다.
이제 부모 디스크에 연결된 부팅 목록은 제거하여 더이상 부모 디스크가 사용되는 일이 없도록 해주는게 좋습니다. 부모 디스크의 데이터가 변경되면(제거되면) 자식 디스크에서 오류가 발생할 수 있기 때문입니다. 일단 작업을 마치고 부팅하면 아래와 같이 부팅 목록이 두 개가(하나의 윈도우만 사용하고 있었다는 가정하에) 뜨게 되는데 둘 중에 위에 기본으로 선택되어져 있는게 최근에 추가한 즉, 자식 디스크에 연결된 윈도우 입니다.
자식 디스크에 연결된 VHD 로 부팅을 완료하셨으면 이제 부모 디스크에 연결된 부팅 목록을 제거하도록 하겠습니다. BCDEDIT 를 이용하시면 되지만 글에선 간단하게 MSCONFIG 를 통해 작업하도록 하겠습니다. 키보드의 WinKey + R 을 눌러 실행을 띄운 후 다음의 작업을 해 줍니다.
간단하죠? 좀 더 확실하게 작업하고 싶으시면 관리자 권한으로 명령 프롬프트를 실행하신 후 BCDEDIT 를 통해 정확한 목록을 확인하시고 작업하시면 됩니다.
이렇게 확인하신 {ID} 를 통해 아래의 명령을 내려주시면 됩니다.
이 때 {ID} 항목을 일일히 타이핑하기 힘드니 아래의 글을 참고하시면 좀 더 쉬운 작업을 하실 수 있습니다.
참고로 작업 중간 자식 디스크를 생성할 때 백업해둔 백업 파일의 모습입니다. (숨겨진 내용)
이와 같이 파일이 매우 작기 때문에 추후에 윈도우의 복원을 위해 VHD 를 교체할 때 많은 시간이 절약되게 됩니다.
마지막으로 자식 디스크를 사용하시다가 자식 디스크의 변경된 내용이 마음에 들어 부모 디스크에 해당 내용을 추가하고자(병합하고자) 하시는 분들은 아래의 글을 참고하시길 바랍니다.
이상입니다. ^ㅡ^*
이러한 자식 디스크는 물론 현재 윈도우를 설치하여 사용 중인 VHD 에도 적용이 가능하며 마찬가지로 윈도우가 설치된 VHD 와 연결하여 생성한 자식 디스크로 부팅하는 것도 가능합니다. 자식 디스크는 특성상 부모 디스크와 연결되어 부모 디스크의 내용을 그대로 가져오니 자식 디스크의 크기를 매우 작게 유지할 수 있고 이 후 자식 디스크로 연결하여 부팅된 윈도우에서 변경된 모든 내용은 부모 디스크가 아닌 자식 디스크에 기록되니 부모 디스크의 데이터를 언제나 동일하게 유지할 수 있다는 것 입니다. 또한 원하는 경우 자식 디스크의 내용을 부모 디스크에 바로 병합할 수도 있으니 변경된 내용을 언제든 부로 디스크로 추가시킬 수도 있습니다.
이와 같은 자식 디스크의 특성으로 인해 자식 디스크를 부팅용으로 사용하게 되면 얻게 되는 이점은 무엇일까요? 자식 디스크를 사용하기 이전엔 윈도우를 최적의 상태로 되돌리기 위해 미리 백업해둔 거대한 VHD 파일로 교체해야 했고 파일의 크기가 크다보니 다소 시간이 걸리는 작업이 아닐 수 없었습니다. 하지만 자식 디스크를 이용하는 경우 부모 디스크와 연결된 후 자식 디스크로 부팅하여 일어난 모든 변경분은 자식 디스크에 기록되니 최초에 생성된 매우 작은 크기의 자식 디스크만(약 100KB 이하) 다시 교체하면 되기 때문에 이 작업에 걸리는 시간이 획기적으로 단축되게 됩니다. 이는 여러가지 테스트 작업 등으로 인해 VHD 파일을 자주 교체하는 분들에겐 꽤나 큰 메리트로 작용하게 됩니다.
또한 하나의 부모 디스크에 여러 개의 자식 디스크를 생성하는 것이 가능하니 다양한 윈도우를 꾸밀 때 좀 더 수월해 지게 됩니다. 즉, 여러 환경의 윈도우를 멀티 부팅으로 꾸미고자 할 때 다수의 윈도우가 동일하게 가지는 환경까지 윈도우를 설정한 후 이를 부모 디스크로 하여 이 후 원하는 윈도우 환경의 수만큼 자식 디스크를 계층적으로 생성하여 원하는대로 꾸며주시면 됩니다. VMware Workstation 을 사용하시는 분들이라면 스냅샷을 통해 하나의 윈도우에 다양한 환경을 분기시키는 것을 상기시켜 보시면 이해가 빠르실 겁니다.
그렇다면 반대로 잃게 되는 단점은 무엇일까요? 부팅용으로 사용되는 모든 VHD 는 부팅이 진행되면 고정 크기 가상 디스크 형식으로 바뀌어 용량이 최대 크기에 맞춰 늘어나게 됩니다. 자식 디스크라고 예외일 수는 없습니다. 문제는 부모 디스크 하나만 사용할 때와는 달리 자식 디스크를 부팅용으로 사용하면 동적 확장 부모 디스크 + 고정 크기 자식 디스크의 크기로 실제 디스크의 용량을 꽤나 많이 잡아먹게 된다는 데에 있습니다. 이는 부모 디스크의 최대 크기가 크고 VHD 파일의 크기가 크면 클 수록 더욱 두드러지게 됩니다.
저 같은 경우 이것저것 사용하는 프로그램이 많아서 평상시 VHD 의 크기가 20GB 에 달하고(이것도 큰 프로그램들 몇 개 없애고 최대한 최적화하면 15GB 가 나오지만 이도 큰 편이죠.) 이를 수용하기 위해 가상 디스크의 최대 크기를 30 GB 로 설정해 놓았습니다. 하지만 자식 디스크를 사용하게 될 경우 20GB + 30GB = 50 GB 라는 꽤나 거대한 용량을 잡아먹게 됩니다. 또한 저는 특별한 경우를 제외하고 거의 모든 테스트를 VMware 의 가상 머신을 이용하고 사실 복원도 잘 안 하는 편 입니다. 이젠 대충 맘대로 써도 윈도우가 맛이 안 가더군요. -_-;; 그래서 사실 저는 사용하고 있지 않습니다.
아무튼 저는 여러분들께 윈도우 부팅용으로 자식 디스크를 꼭 사용하라고 권장할 수는 없습니다. 모든 선택은 장점과 단점을 잘 생각해 보신 후 여러분들이 선택하셔야 합니다. 저는 그저 활용하는 방법에 대한 가이드를 제공해 드릴 뿐이죠. ^^
잡소리는 이쯤하고 자식 디스크를 사용하실 분들을 위해 자식 디스크를 생성하고 부팅 메뉴에 추가하는 방법에 대해서 설명을 드리도록 하겠습니다. 그럼 자식 디스크를 생성하고 이를 부팅 목록에 추가해 보도록 하겠습니다. 작업의 순서는 아래와 같습니다.
1. 부모 디스크가 될 VHD 가상 디스크를 시스템에서 분리하는 과정.
2. 자식 디스크를 생성하고 시스템에 연결하여 드라이브 문자를 할당하는 과정.
3. 연결된 자식 디스크를 BCDBOOT 를 통해 부팅 목록에 추가하는 과정.
4. 부모 디스크와 연결된 부팅 목록을 제거하는 과정.
2. 자식 디스크를 생성하고 시스템에 연결하여 드라이브 문자를 할당하는 과정.
3. 연결된 자식 디스크를 BCDBOOT 를 통해 부팅 목록에 추가하는 과정.
4. 부모 디스크와 연결된 부팅 목록을 제거하는 과정.
이 때 부모 디스크가 될 VHD 가상 디스크는 이미 윈도우가 설치되어 있는 가상 디스크여야 합니다. 그럼 작업을 시작하도록 하겠습니다.
1. 부모 디스크가 될 VHD 가상 디스크를 시스템에서 분리
자식 디스크를 생성하기 위해선 원본이 되는 부모 디스크를 반드시 시스템에서 분리시켜야 합니다. 하지만 여러분들이 작업하실 때 대부분은 현재 부팅하여 사용 중인 VHD 를 대상으로 작업을 진행하실 겁니다. 이럴 때는 윈도우를 종료하는 것 말고는 방법이 없습니다. 다른 윈도우 7 으로 부팅하시거나 윈도우 7 설치 DVD 와 같은 다른 7 계열 운영체제로 부팅하시길 바랍니다.
[참고] 윈도우 7 설치 DVD 로 부팅하기 전에 보면 좋은 정보 - 자식 디스크를 만들기 이전에 부모 디스크가 될 원본을 먼저 최적화 해 주시면 더욱 좋습니다. 아래의 두 글 중 맘에 드는 녀석으로 골라서 작업하시면 됩니다.(ImageX 를 통한 작업이 좀 더 효과가 좋지만 시간은 좀 오래 걸리는 편 입니다.)
최적화 작업은 하셔도 되고 안 하셔도 됩니다. 한 가지 최적화 작업을 하실거라면 최적화 작업을 먼저 하신 후 자식 디스크를 생성하셔야 합니다. 자식 디스크를 생성하신 후 최적화 작업을 하시면 안 됩니다~! 최적화 작업을 만약 하신다면 원하시는 방법으로 최적화하신 후 2 단계로 건너 뛰시면 됩니다.
글에서는 윈도우 7 설치 DVD 로 부팅하도록 하겠습니다. 다음 작업을 위해 미리 명령 프롬프트까지 띄우는 것까지 마쳐놓도록 하겠습니다.
[참고] 윈도우 7 설치 DVD 외에 컴퓨터 복구로 부팅하여 작업하셔도 됩니다.
2. 자식 디스크를 생성하고 시스템에 연결하여 드라이브 문자를 할당받기
이제 부모 디스크가 될 VHD 파일이 시스템에서 분리되었으니 바로 자식 디스크를 생성하시면 됩니다.
diskpart
- DiskPart 를 시작하니다.
create vdisk file="c:\7uk32-c.vhd" parent="c:\7uk32.vhd"
- C:\7UK32.VHD 를 부모로 하는 C:\7UK32-C.VHD 자식 디스크를 생성합니다. 자식 디스크는 자동으로 부모 디스크의 최대 크기를 따라가고 동적 확장 형식으로 생성되니 관련 매개 변수들은 생략해야 합니다.
attach vdisk
- 생성한 자식 디스크를 시스템에 연결합니다.
select partition=1
- 첫 번째 파티션을 선택합니다. 자식 디스크는 부모 디스크의 데이터와 연결되어 있기 때문에 생성과 동시에 부모 디스크와 동일하게 구성됩니다.
assign letter=v
- 파티션에 임시 드라이브 문자인 V: 를 할당합니다. 이 때 V: 드라이브 문자는 다른 볼륨에 할당되지 않은 문자여야 합니다.
exit
- DiskPart 를 종료합니다.
- DiskPart 를 시작하니다.
create vdisk file="c:\7uk32-c.vhd" parent="c:\7uk32.vhd"
- C:\7UK32.VHD 를 부모로 하는 C:\7UK32-C.VHD 자식 디스크를 생성합니다. 자식 디스크는 자동으로 부모 디스크의 최대 크기를 따라가고 동적 확장 형식으로 생성되니 관련 매개 변수들은 생략해야 합니다.
attach vdisk
- 생성한 자식 디스크를 시스템에 연결합니다.
select partition=1
- 첫 번째 파티션을 선택합니다. 자식 디스크는 부모 디스크의 데이터와 연결되어 있기 때문에 생성과 동시에 부모 디스크와 동일하게 구성됩니다.
assign letter=v
- 파티션에 임시 드라이브 문자인 V: 를 할당합니다. 이 때 V: 드라이브 문자는 다른 볼륨에 할당되지 않은 문자여야 합니다.
exit
- DiskPart 를 종료합니다.
[참고] 만약 깨끗한 자식 디스크를 백업해 두길 원하신다면 자식 디스크를 시스템에 연결하기 전 다른 곳으로 복사하신 후 나머지 작업을 계속하시면 됩니다. 아래와 같이 말이죠.
3. 연결된 자식 디스크를 BCDBOOT 를 통해 부팅 목록에 추가하기
이제 생성하고 연결한 자식 디스크의 윈도우를 BCDBOOT 를 통해 부팅 목록에 추가해 줍니다.
bcdboot v:\windows /l ko-kr
- V: 드라이브에 설치된 Windows 를 부팅 목록에 추가해 줍니다. V: 드라이브는 앞에서 자식 디스크에 할당한 드라이브 문자입니다. 이 때 부팅 목록을 추가할 BCD 저장소가 위치한 시스템 파티션의 위치는 펌웨어(바이오스)에서 인식한 파티션이(활성 파티션) 자동으로 지정됩니다. 입력 로케일은 한국어로 설정합니다.
- V: 드라이브에 설치된 Windows 를 부팅 목록에 추가해 줍니다. V: 드라이브는 앞에서 자식 디스크에 할당한 드라이브 문자입니다. 이 때 부팅 목록을 추가할 BCD 저장소가 위치한 시스템 파티션의 위치는 펌웨어(바이오스)에서 인식한 파티션이(활성 파티션) 자동으로 지정됩니다. 입력 로케일은 한국어로 설정합니다.
이제 모든 작업을 마쳤습니다. 이제 재부팅하시면 부모 디스크와 자식 디스크에 연결된 윈도우가 모두 부팅 목록에 표시되게 되는데 방금 추가한 자식 디스크의 윈도우가 기본 부팅 항목으로 설정이 되어 있기 때문에 기본으로 선택되어져 있는 윈도우로 부팅하시면 됩니다.
4. 부모 디스크와 연결된 부팅 목록을 제거하기
이제 부모 디스크에 연결된 부팅 목록은 제거하여 더이상 부모 디스크가 사용되는 일이 없도록 해주는게 좋습니다. 부모 디스크의 데이터가 변경되면(제거되면) 자식 디스크에서 오류가 발생할 수 있기 때문입니다. 일단 작업을 마치고 부팅하면 아래와 같이 부팅 목록이 두 개가(하나의 윈도우만 사용하고 있었다는 가정하에) 뜨게 되는데 둘 중에 위에 기본으로 선택되어져 있는게 최근에 추가한 즉, 자식 디스크에 연결된 윈도우 입니다.
자식 디스크에 연결된 VHD 로 부팅을 완료하셨으면 이제 부모 디스크에 연결된 부팅 목록을 제거하도록 하겠습니다. BCDEDIT 를 이용하시면 되지만 글에선 간단하게 MSCONFIG 를 통해 작업하도록 하겠습니다. 키보드의 WinKey + R 을 눌러 실행을 띄운 후 다음의 작업을 해 줍니다.
간단하죠? 좀 더 확실하게 작업하고 싶으시면 관리자 권한으로 명령 프롬프트를 실행하신 후 BCDEDIT 를 통해 정확한 목록을 확인하시고 작업하시면 됩니다.
이렇게 확인하신 {ID} 를 통해 아래의 명령을 내려주시면 됩니다.
bcdedit /delete {ID} /cleanup
- {ID} 항목을 지우고 목록에서도 제거합니다.
- {ID} 항목을 지우고 목록에서도 제거합니다.
이 때 {ID} 항목을 일일히 타이핑하기 힘드니 아래의 글을 참고하시면 좀 더 쉬운 작업을 하실 수 있습니다.
참고로 작업 중간 자식 디스크를 생성할 때 백업해둔 백업 파일의 모습입니다. (숨겨진 내용)
이와 같이 파일이 매우 작기 때문에 추후에 윈도우의 복원을 위해 VHD 를 교체할 때 많은 시간이 절약되게 됩니다.
마지막으로 자식 디스크를 사용하시다가 자식 디스크의 변경된 내용이 마음에 들어 부모 디스크에 해당 내용을 추가하고자(병합하고자) 하시는 분들은 아래의 글을 참고하시길 바랍니다.
이상입니다. ^ㅡ^*