vhd 사용하기
vhd 사용하기
1. 머릿말
안녕하세요.
vhd에 대해서 많은 분들께서 아실 것이고 많은 분들께서 사용하고 계실 것입니다.
하지만 처음 들어보신 분들도 계실 것이고 들어보긴 했지만 모르시는 분들도 계실 것입니다.
vhd를 잘 모르시는 분들을 위해서 vhd를 소개하고자 vhd 대해서 아는 대로 적어보았습니다.
저는 초보라서 자세히는 잘 모릅니다. 초보가 작성한 글이기 때문에 글이 다소 이상하거나 맘에 들지 않으시더라도 너그럽게 봐주시기 바랍니다.
이 글의 내용은 제가 알아낸 것이 아니고 다른 사이트에 있는 정보를 옮긴 것입니다.
그래서 이 글의 출처는 맨 아래에 적었습니다. 출처가 궁금하시다면 맨 아래로 가보시기 바랍니다.
2. vhd란?
vhd는 Virtual Hard Disk의 약자입니다.
우리말로는 가상하드디스크입니다.
CD나 DVD로 이미지 만들기를 한번쯤은 해보셨을 겁니다.
이미지 만들기를 하면 컴퓨터로 DVD 정보가 담긴 이미지파일이 생성되며 대표적으로 iso라는 파일로 만들어집니다. 생성된 iso 파일은 DVD 정보를 포함하고 있지만 DVD 아닌 가상 DVD입니다. 이와 같이 vhd도 파일로 존재하며 물리 하드디스크가 아닌 하드디스크의 이미지파일입니다.
vhd의 주 기능은 윈도우 백업입니다.
윈도우를 백업하기 위해서 고스트라는 프로그램을 한번쯤은 사용해보셨을 겁니다.
고스트 프로그램으로 OS가 설치된 하드를 백업하면 하드에 대한 정보가 저장된 이미지 파일이 생성됩니다. 그리고 OS를 복구할 때 미리 백업해둔 이미지파일로 복구를 하게 됩니다.
vhd는 고스트와 동일한 기능을 합니다. 윈도우 자체에서 지원하는 백업 프로그램으로 하드나 파티션을 백업하게 되면 이미지파일이 생성되는데 vhd라는 파일로 만들어집니다. 그리고 만들어진 vhd 이미지로 복구를 할 수 있습니다.
이 기능은 고스트 프로그램과 다를 바가 없습니다.
vhd가 고스트 프로그램 보다 무엇이 더 좋기에 소개를 하는지 궁금하실 겁니다.
고스트 프로그램을 사용하시면서 한번쯤은 격어 보셨을 단점들이 있을 것입니다.
고스트 백업을 하게 되면 생성된 이미지파일은 수정하기 힘듭니다. 백업을 잘못하게 되면 파일 수정이 힘들기 때문에 백업을 다시 해야 하는 경우가 있습니다.
그리고 고스트 백업 이미지로는 부팅이 불가능합니다. 또한 백업이미지의 용량이 커질수록 복구하는데 시간이 오래 걸립니다. 복구하는 시간을 단축시키려면 백업이미지의 용량을 줄여야합니다.
고스트 프로그램과는 다르게 vhd는 위에서 서술된 단점들이 보안되어 있습니다.
vhd는 생성된 이미지를 수정할 수 있고, 뿐만 아니라 vhd로 윈도우 부팅이 가능합니다.
또한 vhd의 기능 중에 하나인 Differencing vhd를 사용하면 순식간에 복구가 가능합니다. 많이 과장을 해서 말씀들이자면 용량에 상관없이 1초 만에 복구가 될 수도 있습니다.
이것이 vhd의 장점입니다.
아쉽지만 모든 OS 가 vhd 부팅을 지원하지는 않습니다.
XP, vista는 vhd부팅을 지원하지 않습니다.
그리고 같은 OS라고 하더라도 모든 에디션이 부팅을 지원하지 않습니다.
windows 7 은 Ultimate와 Enterprise 에디션만 vhd 부팅을 지원합니다.
widnws 10은 pro, Enterprise, education만 vhd 부팅을 지원합니다.
vhd로 부팅을 하고 싶으시다면 사용하시는 OS 가 vhd 부팅을 지원하는지 잘 알아보시기 바랍니다.
3. vhd에 윈도우 설치하기
vhd를 설치하는 방법에는 다양한 방법이 있습니다.
하지만 저는 다른 프로그램 도움없이 윈도우 설치 DVD 만으로 vhd를 설치하는 방법을 적어보겠습니다.
먼저 윈도우 상에서 vhd를 만드는 방법입니다.
내 컴퓨터에서 오른쪽 마우스를 누르고 관리로 들어갑니다.
디스크 관리로 이동한 후 메뉴에서 동작 ->vhd 만들기를 클릭합니다.
저장할 경로와 용량을 지정하고 동적확장을 선택한 후 확인을 누릅니다.
cmd 도스창으로 만들려면 아래와 같이 입력합니다.
type=expandable 은 동적확장 (사용한만큼 늘어남)입니다.
type=fixed는 고정크기 (처음부터 용량이 고정됨)입니다.
참고로 fixed로 하게되면 vhd가 생성되는 시간이 몹시 오래 걸립니다.
maximum=20480 은 vhd를 생성할 가상드라이브의 최대 크기입니다. 단위는 MB입니다.
자 이제 본론으로 들어가서 vhd에 윈도우 설치해봅시다.
윈도우 DVD 또는 USB로 부팅을 하여 설치화면을 띄웁니다.
shift + F10 을 눌러서 도스창을 띄웁니다.
그 다음 아래 스샷과 같이 입력합니다.
파일경로와 파일 이름은 각자 원하는 이름으로 설정합니다.
주의하실점은 vhd를 만드실 때 vhd가 생성될 하드디스크 파티션 용량보다 작게 만드셔야합니다.
그렇지 않으면 부팅할 때 블루스크린이 뜨면서 부팅이 안됩니다.
vhd 생성과 연결이 완료되면 설치를 계속합니다.
"이 디스크에 Windows를 설치할 수 없습니다" 라는 문구가 뜨는 디스크에 설치를 합니다.
vhd에 설치가 되는 모습입니다.
설치가 완료되면 자동으로 부팅됩니다.
아래는 설치가 완료된 상태이고,
D 로컬 디스크의 vhd로 부팅한 win.vhd 용량이 20G 로 늘어난 상태입니다.
원래 하드가 1개 뿐인데 vhd로 윈도우를 설치하게 되면 로컬 디스크가 2개로 보일 것입니다.
이것은 공짜로 하드가 굴러들어온 것이 아닙니다.
C 로컬 디스크는 가상 하드디스크입니다. 용량을 확인해보면 20GB입니다.
20GB의 용량이 생겼다면 어딘가에서 그만큼 손실이 있겠죠?
위의 스샷을 확인해보시면 아시겠지만 D로컬 디스크의 vhd 용량이 20GB입니다.
결론을 말씀들이자면 D 로컬 디스크의 vhd가 차지한 용량만큼 C 로컬 디스크로 반환한 것입니다.
D 로컬 디스크의 vhd = 윈도우가 설치된 C 로컬 디스크
위에 방법으로는 vhd를 동적 확장으로 만들었는데 20GB가 되었습니다.
동적으로 만들어도 OS가 설치된 vhd로 부팅하게 되면 최대용량으로 늘어나게 됩니다. 시스템 종료를 하게 되면 반대로 사용한 만큼의 용량으로 줄어들게 됩니다.
만약에 HDD 또는 SSD의 파티션용량보다 vhd의 용량을 더 크게 만들게 되면 vhd로 부팅할 때 최대용량으로 늘어나지 못하기 때문에 블루스크린 오류가 나면서 부팅이 불가능하게 됩니다. 따라서 vhd를 생성하실 때는 vhd가 들어있는 파티션보다 작게 만드셔야합니다.
vhd에 윈도우를 설치하셨다면 드라이버도 잡아주시고 사용할 프로그램들도 깔아주시고 최적화 해주시기 바랍니다.
작업이 끝났다면 다음 단계로 넘어갑니다.
4. 자식 vhd (Differencing VHD) 만들기
윈도우 DVD 나 USB로 부팅하여 설치화면을 띄웁니다.
참고로 사용 중이거나 부팅중인 vhd의 자식(Differencing VHD)은 만들지 못합니다.
부팅중이 vhd에 자식 vhd를 만들려고 한다면 아래와 같이 나옵니다.
그러므로 윈도우 DVD, USB로 부팅합니다.
Shift + F10 을 눌러서 도스창을 띄웁니다.
create vdisk --------> 가상 하드디스크를 만들어라는 명령어 입니다.
file=C:win-diff.vhd --> 자식 vhd (Differencing VHD)를 만들 디스크 경로와 파일 이름입니다.
parent=C:win.vhd ---> C:win.vhd를 원본(부모)으로 하라는 명령어 입니다.
아래 스샷과 같이 작성합니다.
자식 vhd (Differencing VHD) 생성과 부팅작업을 완료하면 재부팅합니다.
작업을 무사히 마치면 아래와 같이 2개의 부팅 목록이 나타날 것입니다.
첫 번째 부팅목록이 바로 지금 막 생성한 따끈따끈한 자식 vhd로 부팅하는 목록입니다.
두 번째 부팅목록은 원본 vhd 로 부팅하는 목록입니다.
따끈따끈한 자식 vhd로 부팅합니다.
아래와 같이 win.vhd 원본이 7G로 줄었습니다.
원본 win.vhd로 부팅을 하지 않았기 때문에 사용한 만큼의 용량으로 줄었습니다.
win-diff.vhd 가 생성되었으며 부팅중이므로 20G로 늘어난 상태입니다.
마지막으로 원본 win.vhd의 부팅목록을 삭제해보겠습니다.
아래스샷과 같이 따라하시면 됩니다.
이렇게 설정하면 1개의 목록만 남게 됩니다.
그러면 멀티부팅 메뉴가 나타나지 않고 바로 자식(diff)vhd 로 부팅할 수 있습니다.
원본 윈도우를 자주 편집하실 생각이 있으시면 그대로 두셔도 상관없습니다.
5. 자식 vhd(Differencing VHD)을 바꿔서 윈도우 초기화 시키기
먼저 아래와 같이 윈도우 배경화면을 바꾼상태입니다. 그리고 바이러스가 들어왔습니다.
win.vhd는 윈도우가 설치된 vhd 원본파일입니다.
그리고 win-diff.vhd는 사용중인 상태이며 바이러스가 들어와있는 자식 vhd (Differencing VHD) 입니다.
backup.vhd 는 순수한 때타지 않은 자식 vhd 입니다.
윈도우를 초기화 시키려면 바이러스에 감염된 win-diff.vhd를 삭제하고 순수한 backup.vhd로 교체하면 초기화 됩니다.
아래 스샷은 윈도우로 부팅한 상태이며 오염된 win-diff.vhd를 지워보겠습니다.
지우기를 시도했지만 사용중인 상태이므로 지울 수가 없습니다.
윈도우를 부팅한 상태에서는 교체가 힘들기 때문에 윈도우설치 DVD 나 USB로 부팅합니다.
vhd의 교체방법은 여러 가지가 있습니다. 멀티부팅 방법으로 교체할 수도 있고, 윈도우 PE 부팅으로 교체가 할 수 있는 등 여려가지 방법이 있습니다.
아래 방법은 누구나 가지고 있는 윈도우 DVD 나 USB로 vhd를 교체하는 방법입니다.
shift + F10을 눌러서 아래 스샷을 참고하여 작성합니다.
작업이 무사히 완료되었다면 재부팅합니다.
윈도우 초기화를 시켰더니 아래와 같이 바이러스가 사라졌으며, 윈도우 배경화면이 원래대로 돌아왔습니다.
6. vhd를 다른하드로 옮겨 부팅하기 (마이그레이션)
vhd를 사용하게 되면 별도의 마이그레이션 툴이 필요없게 됩니다.
왜냐하면 vhd를 다른하드에 옮겨놓고 부팅연결만 하면 되기 때문입니다.
기존하드에 있는 vhd를 새로운 하드에 복사하고, 기존하드를 제거하여 새로운 하드로 부팅해보겠습니다.
먼저 2TB 이하 용량의 새 하드를 연결합니다. MBR을 선택합니다.
설정이 완료되었다면 할당되지 않은 디스크를 찾아서 파티션을 생성해줍니다.
F 로컬 디스크로 생성되었습니다.
파티션 생성이 완료되면 "파티션을 활성 파티션으로 표시"를 해줍니다.
파티션을 생성과 설정을 다했다면 새로 생성된 디스크에 vhd를 복사합니다.
D 디스크에 있는 파일들입니다. 여기서 vhd 파일만 복사합니다.
새로운 하드의 파티션 문자가 F로 할당되었으므로 F로컬 디스크에 vhd를 복사합니다.
하드를 새로 바꿨으니 깨끗한 윈도우를 사용하시고 싶으시면 win-diff.vhd는 그대로 놓아두고 원본 vhd인 win.vhd와 깨끗한 backup.vhd를 복사합니다.
그런다음 backup.vhd를 win-diff.vhd로 복사해 줍니다.
마이그레이션은 사용중인 윈도우를 그대로 옮기는 것이기 때문에 마이그레이션이 아니라고 따질 수 있습니다.
위의 상황은 윈도우가 초기화된 상태로 옮기는 아주 사소한 팁으로 그냥 알려드린 것입니다.
사용중인 윈도우를 통째로 옮겨야 마이그레이션이겠죠?
사용중인 윈도우를 통째로 옮기시려면 win.vhd와 win-diff.vhd를 그냥 복사하셔서 옮기시면 됩니다. 매우 간단하죠?
현재 부팅하여 사용되고 있는 win-diff.vhd (20GB로 늘어난 자식 vhd) 까지 모두 복사가 완료되었습니다.
여기까지 윈도우를 옮기는 작업은 끝났습니다.
그럼 부팅이 되게끔 부팅연결만 해주면 됩니다.
컴퓨터 관리를 켜시고 디스크 관리로 이동합니다.
그런후 동작 -> vhd 연결을 클릭합니다.
새 하드에 복사한 Win-diff.vhd를 연결합니다.
vhd 불러오기를 하셨다면 아래와 같이 오프라인으로 나타납니다.
불러온 vhd에 오른쪽 마우스를 클릭하고 온라인을 선택합니다.
새로운 하드에 복사된 vhd가 G 로컬 디스크로 연결되었습니다.
그렇다면 컴퓨터 관리 창을 닫습니다.
다시 설명을 드리자면 F 로컬 디스크가 새로운 하드 디스크입니다.
그리고 G로컬 디스크는 F 디스크에 들어있는 vhd가 연결되어 나타난 디스크입니다.
cmd 창을 관리자 권한으로 실행합니다.
아래와 같이 입력합니다.
G:\windows /s F: /l ko-kr
또는 G:\windows /s F: /f bios /l ko-kr
G 디스크에 설치된 윈도우의 부트매니저를 F디스크에 생성하라는 의미입니다.
/l ko-kr 은 부팅 메뉴 언어를 한글로 표시하라는 의미입니다. /l은 소문자 L입니다.
이제 마지막으로 bootsect 설정을 해줍니다.
cmd 창에 아래와 같이 입력합니다.
bootsect /nt60 F: /mbr
이 작업을 빠트리면 부팅이 되지 않습니다.
여기까지 완료되셨다면 마이그레이션이 끝났습니다.
이 작업이 진행되지 않는다면 글을 아래쪽 7번 글에 해결방법을 적어놓았습니다.
작업이 잘 되었는지 확인합니다.
이제 이전에 사용했던 하드를 분리하고 마이그레이션을 했던 새로운 하드로 부팅합니다.
부팅에 성공한 스샷입니다.
새로 바꾼 하드의 문자가 F 문자로 할당되어 있습니다.
문자를 바꾸시기 귀찮다거나 상관없으시다면 그냥 사용하셔도 됩니다.
만약 문자를 바꾸고 싶다면 컴퓨터 관리를 실행합니다.
F 디스크에서 오른쪽 마우스 클릭 후 “드라이브 문자 및 경로 변경”을 선택하셔 문자를 바꾸시면 됩니다.
D 로컬 디스크로 문자를 바꿨습니다.
이제 모든 작업이 완료되었습니다.
약간의 팁을 더 드리자면 윈도우 8, 8.1, 10을 vhd로 설치하여 위의 방법으로 USB로 옮기면 매우 간단하게 Win To Go 가 됩니다. USB에 Win To Go를 직접 만들게 되면 만드는데 시간이 오래 걸리고 부팅해서 새로운 프로그램을 설치하는 것도 시간이 오래 걸립니다.
vhd에 8이상의 윈도우를 하드나 SSD에 설치하고 원하시는 작업을 하신 후 USB로 옮기시면 시간절략도 되고 스트레스도 덜 받고 손쉽게 Win To Go를 만드실 수 있습니다.
7. 윈도우 7에서 bootsect 명령어를 사용하지 못할 때
윈도우 8 이상 버전에서는 아무런 문제없이 bootsect 설정이 잘 될 것입니다.
윈도우 7에서 작업하실 때는 마지막단계인 bootsect 설정에서 막힐 겁니다.
cmd 창에 bootsect를 입력하면 아래와 같이 나올 것입니다.
왜냐하면 윈도우 7에는 기본적으로 bootsect.exe파일이 없기 때문에 명령어가 작동하지 않습니다.
그러므로 윈도우 7에서 작업할때는 bootsect.exe파일을 가져와야합니다.
8 이상의 윈도우에서 bootsect.exe 파일을 가져오면 깔끔하게 해결됩니다.
만약 8 이상의 윈도우가 없어서 bootsect.exe 파일을 가져오지 못하는 경우에는 윈도우 설치 DVD나 iso에서 추출해야합니다.
bootsect.exe 파일을 가져오기 위해서는 2가지의 준비물이 필요합니다.
1) 7zip 프로그램(http://www.7-zip.org/)
2) 윈도우 DVD 또는 iso (윈도우 7, 8, 8.1, 10)
(32bit 윈도우7이 설치된 컴퓨터에서는 윈도우 32bit의 설치 DVD나 iso가 필요합니다.)
(64bit 윈도우7이 설치된 컴퓨터에서는 윈도우 DVD나 윈도우 iso 파일이 필요합니다. 32bit, 64bit 모두 가능)
제일 먼저 7zip을 설치합니다.
설치가 완료되면 윈도우 설치 DVD 또는 iso를 마운트합니다.
윈도우 설치 DVD가 마운트된 디스크 -> sources -> boot.wim을 찾습니다.
boot.wim 파일에 오른쪽 클릭을 하여 7zip 압축파일 열기를 클릭합니다.
2 -> windows -> system32 폴더에서 bootsect.exe 파일을 찾습니다.
찾은 bootsect.exe 파일을 C로컬 디스크 -> windows -> system32 폴더에 복사합니다.
복사를 완료했다면 bootsect 명령어를 사용하실 수 있습니다.
8. vhd 용량 줄이기
vhd를 동적으로 만들게 되면 사용한 만큼 늘어나게 됩니다.
하지만 늘어난 vhd에 들어있는 파일을 삭제한다고 하더라도 다시 용량이 줄어들지 않습니다.
아래의 방법은 vhd의 용량을 줄이는 방법입니다.
여기서 핵심은 vhd에 제로필드를 하는 것입니다.
제로필드를 하는 프로그램이 많이 있습니다만 쉽게 구할 수 있는 CCleaner를 사용하였습니다.
아래 스샷과 같이 3.14GB의 TEST.vhd가 있습니다. 아래 TEST.vhd의 용량을 줄여보겠습니다.
vhd를 연결합니다.
컴퓨터 관리 -> 디스크 관리 -> 동작 -> VHD 연결을 선택합니다.
연결한 vhd에 내용을 확인해보니 아래 스샷과 같이 아무것도 없습니다.
파일과 내용물이 없는데 3.14GB를 차지하고 있었습니다.
CCleaner를 실행하여 연결된 vhd디스크에 1단계 보안삭제(제로필드)를 시작합니다.
보안삭제가 완료되었다면 CCleaner를 닫습니다.
vhd의 연결을 해제합니다.
cmd 창을 관리자 권한으로 실행하여 아래와 같이 입력합니다.
압축이 끝날때까지 기다리면 아래와 같이 완료됩니다.
완료가 되었다면 cmd 창을 닫습니다.
vhd 용량을 다시 확인해보니 용량이 56.1MB로 줄었습니다.
9. 꼬리말
추가로 Differencing vhd가 무엇인지 좀더 알려드리겠습니다.
아래 스샷에서 처음 생성한 Differencing vhd용량이 1MB도 안되는 매우 작은 용량입니다.
아래와 같이 Differencing vhd를 메모장으로 열어보니 부모 vhd(원본 vhd)에 대한 주소가 들어있습니다.
위에 보시는 것과 같이 특별한 것은 없고 부모(원본) vhd에 대한 주소가 들어있습니다.
주소의 의미는 부모 vhd를 불러오라는 의미입니다.
자식 vhd는 부모 vhd를 불러와서 부모 vhd의 정보를 뼈대로 사용하게 됩니다.
그리고 자식 vhd로 부팅해서 설정을 변경하거나 파일 삭제 또는 파일을 새로 설치했다고 하면 추가로 변경된 사항들을 부모 vhd가 아닌 자식 vhd에 저장하게 됩니다.
그러기 때문에 자식 vhd를 날려버리면 자식 vhd에 저장되어있던 모든 정보가 삭제되고 부모 vhd의 정보만 남게되어 빠르고 깔끔하게 이전 상태로 되돌릴 수 있습니다.
포맷하고 윈도우를 설치하다보면 또 다시 재설치를 해야 될 때가 있습니다.
윈도우를 클린설치하고 드라이버 다잡아놓고 사용하려고하니 드라이버가 꼬였거나 윈도우 업데이트가 꼬였거나 바이러스가 들어왔거나 하면 윈도우 재설치를 또 해야 됩니다.
Differencing vhd(자식 vhd)를 사용하게 되면 포맷을 하지 않고 윈도우를 처음 설치한 상태로 초기화 시킬 수 있습니다.
vhd를 사용하게되면 복구가 쉽고 마이그레이션이 쉽다는 것을 위의 내용을 통해서 확인하셨을 것입니다.
단점은 자식 vhd는 부모 vhd와 동일한 폴더에 있어야합니다. 그렇지 않으면 자식 vhd를 사용할 수 없습니다.
그리고 vhd를 SSD에 사용하게 되면 트림기능이 안된다고 합니다.
또한 최대 절전모드를 사용하실 수 없습니다.
확실하지는 않지만 vhdx를 사용하게 되면 트림이 작동된다고 합니다만 직접 사용을 해보지 않아서 정확한 정보인지는 모르겠습니다.
위에서 설명했던 vhd의 교체방법 외에도 여러 가지 방법이 있습니다.
검색하시면 충분히 많이 나옵니다.
다른 방법을 원하시면 검색해보시기 바랍니다.
저는 초보라 잘못 적었을 수 있고, 설명이 부족할 수도 있습니다만 너그럽게 봐주시기 바랍니다.
이만 글을 마치겠습니다.
허접한 긴글을 끝까지 읽어주셔서 감사합니다.
10. 출처
스누피 블로그
캐플 블로그
윈도우 포럼
이 글은 위의 출처 3곳에 있는 정보를 모아서 재구성하였습니다.