바로 앞선 글에서 신비님의 글을 소개해드렸는데 제 방식대로 설명해보겠습니다.

Expandable VHD 방식의 단점은 일단 한번 덩치가 커지면 안에 들어있는 파일을 삭제하더라도 그 덩치가 같이 줄어들지는 않는다는 것입니다. 그 이유는 하드에서 데이터를 삭제하면 실제로 그 위치에서 바이너리가 삭제되는 것이 아니고 데이터가 그 위치에 있다는 정보만 사라지는 것이기 때문입니다. 그러한 이유로 인해 삭제된 파일을 복구하는 프로그램이 존재할 수 있는 것이죠.

따라서 삭제된 파일 영역에 0이라는 값을 채워넣어 줘야 완전히 비울 수 있습니다. 이를 흔히 제로필이라 부르는데 VHD 파일의 빈 공간을 제로필 해준 다음 DISKPART의 Compact 명령어를 써주면 용량을 최소화 시킬 수 있습니다.

준비물


위 파일을 압축 푼 다음 D 드라이브에 복사해둡니다. 꼭 D일 필요는 없지만 아무튼 PE로 부팅했을 때 파일이 바로 보일 수 있도록 VHD가 아닌 물리 하드에 복사해두는 것이 좋겠지요.

윈도우 7 DVD나 F8 복구모드, PE 등으로 부팅을 해서 Shift + F10으로 커맨드 창을 띄웁니다. 이때 커맨드 창에다
start cmd 라고 입력하시면 커맨드 창을 2개 띄울 수 있습니다. 이렇게 하는 이유는 한쪽에선 DISKPART 작업을 하고 한쪽에선 SDelete 작업을 하기 위함입니다. 저는 DISKPART 작업을 해야하는 경우 보통 이렇게 커맨드 창을 2개 띄워놓고 하는 편입니다. 왜냐하면 창이 하나일 때는 중간에 DISKPART를 나갔다가 다시 들어와야 하는 경우 불편하기 때문입니다. 게다가 윈도우 7은 DVD로 부팅했을 때도 에어로 스냅을 사용할 수 있기 때문에 더욱 편리합니다. 창을 끌어서 좌우로 옮기시면 각각 절반 크기로 최대화 됩니다.

왼쪽

오른쪽

diskpart
- 디스크파트 실행

 

sel vdi file=c:\win7.vhd
- 최적화할 VHD 파일 선택

 

attach vdi
- VHD 마운트

 

sel par 1
- 첫번째 파티션 선택

 

ass letter=T
- 임시 문자 할당

 

 

sdelete -c T:
- 제로필 시작

detach vdi
- VHD 분리

 

com vdi
- compact로 용량 최적화

 




위에서 사용한 DISKPART의 명령어는 대부분 약자입니다. 저는 이게 더 편한데 헛갈리실 수도 있겠네요.

sel => select
vdi => vdisk
par => partition
ass => assign
com => compact


아무튼 Expandable VHD의 크기가 쓸데없이 너무 커졌다 싶을 때는 한번씩 이렇게 최적화를 해주는 것도 괜찮을 것 같습니다. 최적화 전에는 한 1GB 정도 차이가 났었는데 최적화 후에는 현재 사용중인 C 드라이브의 용량과 부모 VHD 파일의 크기가 거의 같아졌습니다.