신비로그의 다음 포스팅을 참고하였다.
http://shinb.textcube.com/252 - VHD 파일 최적화하기
가변 용량으로 만든 VHD 파일의 크기는 한번 커진 이상 줄어들지 않는다. 이것을 diskpart 의 compact명령을 이용해서 줄여줄 수 있지만, 그것도 일단 완전히 비어있는 영역이 아니면 줄여주지 못한다. 그래서 compact를 사용하기 전에, 삭제된 것으로 보이지만 실제로는 데이터가 들어있는 영역을 깨끗하게 WIPE해줄 필요가 있다.
그러한 용도로 사용할 수 있는 것이 바로 Sdelete 이다.
Sdelete 의 옵션을 살펴보면,
SDelete - Secure Delete v1.51
Copyright (C) 1999-2005 Mark Russinovich
Sysinternals - www.sysinternals.com
usage: sdelete [-p passes] [-s] [-q] <file or directory>
sdelete [-p passes] [-z|-c] [drive letter]
-c Zero free space (good for virtual disk optimization)
-p passes Specifies number of overwrite passes (default is 1)
-q Don't print errors (Quiet)
-s Recurse subdirectories
-z Clean free space
-c 옵션과 -z 옵션이 있는데, 본인이 이해한 바로는 -c 는 삭제된 부분의 데이터에 모두 0x00 을 세 번(Number of overwite passes 가 1일경우) write 해서 virtual disk 의 압축률을 높이기 위한 것이고, -z 는 0x00, 0xFF, 그리고 난수를 write 해서 지워진 데이터를 복구할 수 없도록 만드는 명령이다.
지금 하고자 하는 일은 VHD 파일의 용량을 줄이고자 함이므로 -c 옵션이 적절할 것이다.
작업 순서는 다음과 같다.
- Sdelete 파일을 실행하기 쉽도록 루트디렉토리(c:\등)에 카피
- windows 7 부팅USB 등을 이용해서 PE 모드로 들어가기
- shift + F10 을 눌러 command prompt 를 띄운다.
- > diskpart
- diskpart> select vdisk file=vhd파일경로
- diskpart> attach vdisk
-
diskpart> list vol - VHD가 로드된 드라이브명 확인
- diskpart> exit
- > sdelete -c 드라이브명:
- > diskpart
- diskpart> select vdisk file=vhd파일경로
- diskpart> detach vdisk
- diskpart> compact vdisk
이 과정을 마치고 나니, 대략 1기가 정도의 용량이 줄어들었다.
자식 파일을 만들어놓은 상태에서 부모 vhd파일을 최적화했지만, 어차피 삭제된 영역만 깨끗히 지운 것이기 때문에 자식파일 실행에는 아무런 문제가 없었다.
trackback from: vmdk 파일을 vhd로! vmdk2vhd
답글삭제오늘은 VMWare과 VirtualBox용 가상 하드디스크 파일을 Windows용 vhd 파일로 바꾸는 프로그램을 소개합니다. 이름은 vmdk2vhd인데요, 무설치입니다. 제작사 홈페이지 : http://vmToolkit.com/ ZIP 파일로 되어있어서 EXE 파일로 올립니다. 실행만 하면 됩니다. VmdkConvert.exe 변환하는 방법: 프로그램을 실행하면 아래와 같은 창이 뜨게 됩니다. 전 여기서 Windows 7 PE Disk를 선택합니다..