Tips/VHD

VHD 파일 실제 용량 최적화

Maximer 2012. 4. 22.
728x90

고정디스크방식의 VHD는 말 그대로 고정디스크이기때문에 하드디스크에서 차지하는 VHD파일의 용량이

처음 VHD파일을 생성했을 때 정한 크기로 항상 같습니다.

동적디스크방식의 VHD는 실제 VHD안에 포함된 내용물의 용량만큼만 하드디스크에서 차지하는데요,

VHD에 아직 미숙한 분은 이런 질문을 할지도 모릅니다.

“동적VHD인데도 VHD파일을 보면 항상 최대용량크기이던데?”

이것은 VHD로 부팅한 상태에서는 해당 VHD파일이 마운트되기 때문에 VHD는 최대용량으로 확장하기 때문입니다.

해당 VHD파일로 부팅을 하지 않고 다른 윈도우7이나 PE상태에서 VHD파일을 보게되면 실제 하드디스크에서

차지하는 용량을 알 수 있습니다.

이것을 이용해서, 자동교차 VHD부팅을 하는 유저가 현재 자신이 부팅된 VHD가 A인지 B인지 알려면

간단하게 VHD파일이 있는 폴더에 가서 용량이 최대로 커진 VHD파일이 바로 자신이 부팅한 VHD인 걸 알 수 있죠.

서론은 이쯤 접어두고,

VHD를 처음 생성시 20GB로 생성을 하였고, 윈도우7과 프로그램을 설치한 후,

VHD파일의 실제 용량이 15GB가 되었다고 가정했을때

VHD로 부팅된 상태에서 VHD드라이브인 C:에 영화 2GB를 다운받아 다보고 휴지통에서까지 지운다면

실제 VHD파일의 용량은 어떨까요? 15GB일까요? 17GB일까요?

일전 포스팅 부모와 자식에 대한 이해 에서 간략하게 언급을 했는데, 정답은 17GB입니다.

윈도우에서 파일을 지운다고 해서 실제로 파일이 들어있는 하드디스크의 섹터에서 해당 파일을 지우는 것이 아니라,

해당파일이 하드디스크에 존재한다는 정보를 지우기 때문에 실제로 파일이 하드디스크에 여전히 남아 있음에도

해당 파티션의 정보를 담당하는 우두머리(MFT)에게 그자리는 비어있다고 뻥을 치는 겁니다. 그래서 나중에

다른 파일들을 해당 파티션에 복사하게되면 비어있다고 인식하고 있기 때문에 그위에 덮어쓰게 되는거죠.

아무튼, 이렇게 동적디스크내에서 지운 파일들은 실제로는 존재하고 있기 때문에, 지운 파일들의 실제 데이터까지

깨끗하게 지워줘야합니다. 지우기만 해서는 안되고 VHD파일 자체를 한번 압축해주어야합니다.

그럼 작업해보겠습니다.

먼저 작업할 VHD파일이나 그 자식으로 부팅한 상태에서는 불가능합니다. 연결되어있는 상태에서는 마지막 작업인 압축을 못해주기 때문입니다.

CCleaner를 적절한 파티션에 저장해놉니다.

PE나 다른 윈도우7로 부팅을 합니다. 또 다른 윈도우7 멀티부팅을 하고 있는 유저라면 그 윈도우로 부팅해서 작업해도 되는데 오직 VHD 하나로만 부팅하는 유저인 경우에는 PE로 부팅해야합니다. 하드디스크에서 PE부팅하기

윈도우에서 제공하는 기본 PE(BOOT.WIM)라면 컨트롤 + F10을 눌러서 커맨드창을 띄운 후 아래처럼 하면 됩니다.(익스플로러가 가능한 트윅된 PE나 EasyVHD PE로 부팅해서 디스크관리에서 해도 됩니다.)

DISKPART                               DISKPART 진입

select vdisk file=e:\win7.vhd  먼저 최적화시킬 VHD파일을 선택

attach vdi                              VHD연결

exit                                      커맨드창으로 복귀

D:\CCLEANER\CCLEAR.EXE      CCLEANER 실행

CCleaner에서 wipe작업            지운 파일들의 실제 공간지우기

diskpart                                 diskpart 진입

select vdisk file=e:\win7.vhd    VHD파일 선택

detach vdi                              VHD분리

compact vdi                                 VHD압축

재부팅

노란색부분은 자신에 맞게 적어야 합니다. 다른 부분은 여러번 해서 다들 아실테니 CCLEANER에서

마운트된 VHD드라이브의 빈 공간을 깨끗이 지워줍니다.

단순한 덮어쓰기로 하셔도 충분합니다.

어차피 목적은 깨끗하게 0으로 지우는 것이지 보안을 위해 지우는게 아니니까요.

단순한 덮어쓰기는 여유공간을 한번씩만 0으로 덮어씌우는거고 그외에는 복구를 못하도록 특정 알고리즘으로 여러번 덮어쓰우는겁니다.

 

Sdelete라는 명령줄유틸을 사용해도 좋지만, 요즘은 윈도우 설치 dvd에 들어있는 기본적인 pe인 boot.wim보다는

트윅된 pe를 구하기 쉽고 또 멀티 OS부팅상황에서는 ccleaner가 편할 수도 있으니까요.

설명이 길었는데 요약하자면 해당 vhd파일이나 자식이 아닌 다른 os로 부팅을 한 후,

vhd파일을 연결(diskpart 또는 디스크관리-diskmgmt.msc)

디스크의 빈공간을 지워주는 유틸로 마운트된 vhd드라이브를 Wipe

vhd분리

diskpart에서 compact로 vhd파일 압축

 

동적 vhd만 해당되며, 프로그램을 설치시에는 설치를 위한 더미파일들이 생겨졌다가 지워지는 경우가 많기 때문에 부모vhd에서 자신이 필요한 프로그램을 모두 설치하고 나서는 이렇게 한번 최적화 해주는 것이 좋습니다. 특히 용량이 작은 ssd에서는요^^

 

donaricano-btn
커피 한 잔 값으로 블로그를 후원하실 수 있습니다.

 

그런데 이것도 귀찮죠? EasyVHD의 PE를 통해 원클릭으로 가능합니다. 이동하려면 여기를 클릭하세요.

728x90

댓글