레이블이 VHD인 게시물을 표시합니다. 모든 게시물 표시
레이블이 VHD인 게시물을 표시합니다. 모든 게시물 표시

2010년 1월 1일 금요일

Sdelete로 VHD 파일 용량 줄이기

신비로그의 다음 포스팅을 참고하였다.

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 옵션이 적절할 것이다.

 

 

작업 순서는 다음과 같다.

 

  1. Sdelete 파일을 실행하기 쉽도록 루트디렉토리(c:\등)에 카피
  2. windows 7 부팅USB 등을 이용해서 PE 모드로 들어가기
  3. shift + F10 을 눌러 command prompt 를 띄운다.
  4. > diskpart
  5. diskpart> select vdisk file=vhd파일경로
  6. diskpart> attach vdisk
  7. diskpart> list vol - VHD가 로드된 드라이브명 확인
  8. diskpart> exit
  9. > sdelete -c 드라이브명:
  10. > diskpart
  11. diskpart> select vdisk file=vhd파일경로
  12. diskpart> detach vdisk
  13. diskpart> compact vdisk


이 과정을 마치고 나니, 대략 1기가 정도의 용량이 줄어들었다.

자식 파일을 만들어놓은 상태에서 부모 vhd파일을 최적화했지만, 어차피 삭제된 영역만 깨끗히 지운 것이기 때문에 자식파일 실행에는 아무런 문제가 없었다.

2009년 12월 25일 금요일

VHD를 이용한 Windows 7 설치 & 멀티부팅

윈도우 7 Ultimate 운영체제에서는 VHD를 이용한 운영체제 설치 및 사용이 가능하다.

 

VHD 는 가상 드라이브이지만 물리 디스크에서 사용하는 것과 거의 비슷한 느낌으로 쓸 수 있는데다가 복구 및 관리가 용이하기 때문에 요새 이것을 사용하는 사람들이 많아지고 있는 추세인 듯 하다.

 

나도 요새 이것저것 삽질을 하다가 윈도우가 좀 지저분한 느낌이 많아졌는데 이것을 순식간에 복구할 수 있다는 매력에 이끌려 VHD를 사용해보기로 하였다. 스누피님의 블로그에서 많은 정보를 얻었다.

 

 

1. 우선 윈도우 7 운영체제 WIM 파일을 VHD 파일로 변환하였다.

 

기존에 윈도우7을 쓰고 있었기 때문에 바로 윈도우상에서 imagex 를 이용하여 VHD 파일을 마련할 수 있었다.

그 방법은 스누피님의 블로그를 참고하였다. http://snoopybox.co.kr/847

기존에 윈도우7을 사용하지 않던 사람들은 pe 로 부팅해서 http://snoopybox.co.kr/842 의 방법을 쓰면 가능할 것 같다.

 

 

2. 메인 하드에 WINDOWS XP 를 설치하였다.

 

한 파티션 내에 윈7과 windows XP 를 멀티부팅으로 사용하고 싶었기 때문이었다. 사용빈도는 많이 떨어지지만 그래도 한번씩 XP 가 필요할 때가 있기 때문이다.

 

 

3. VHD 를 부트메뉴에 등록하고 WINDOWS 7 을 설치하였다.

 

이 과정은 두 단계로 이루어진다. ① VHD 파일을 ATTACH 하고, ② 그 운영체제를 부트메뉴에 등록해주는 것.

 

① VHD 파일을 ATTACH 하기

  • WINDOWS 7 의 설치프로그램을 부팅한다.
  • SHIFT + F10 을 눌러서 커맨드 프롬프트 화면으로 들어간다
  • > diskpart
  • diskpart> sel vdisk file=VHD파일경로 (예 : c:\vhd\main.vhd)
  • diskpart> attach vdisk
  • diskpart> list vol –> 무슨 드라이브로 로드되었는지 확인!
  • diskpart> exit

② 부트메뉴에 등록하기

  • > bcdboot 로드된VHD드라이브:\windows /s c:
  • > bootsect /nt60 c:

③ 재부팅하면 이제 VHD로 부팅되면서 윈도우7 설치가 시작된다.

기본적인 설치를 하고 각종 환경을 나에게 맞게 설정하였다.

 

 

4. 자식파일을 만들어 자식파일로 부팅 후 사용하였다.

 

자식파일을 만들어서 사용하면 각종 변경사항들은 일단 자식파일에만 적용되기 때문에 이것을 삭제 또는 교체하는 것만으로 원래 부모VHD의 상태로 쉽게 돌아갈 수 있다.

 

위에서 나온 방법대로 커맨드 프롬프트 화면으로 들어간 후에 다음과 같은 방법으로 만들어 부트메뉴에 추가한다.

  • > diskpart
  • diskpart> create vdisk file=백업용자식파일경로 parent=부모파일경로
  • diskpart> create vdisk file=자식파일경로 parent=부모파일경로
  • diskpart> attach vdisk
  • diskpart> list vol –> 무슨 드라이브로 로드되었는지 확인!
  • diskpart> exit
  • > bcdboot 로드된자식VHD드라이브:\windows /s /c:

백업용 자식파일을 먼저 만드는 이유는 그래야 attach vdisk 명령 전에 sel 명령어를 통해 attach할 자식파일을 따로 선택해줄 필요가 없기 때문이다. attach 를 하는 순간 용량이 늘어나므로 백업용은 attach 하지 않고 가만히 놔두는 것이 좋다.

 

 

5. 각종 프로그램을 설치하면서 괜찮으면 부모파일에 합치고 마음에 안들면 자식파일을 교체하였다.

 

부모파일에 합치는 방법은 다음과 같다.

  • diskpart> sel vdisk file=자식파일경로
  • diskpart> merge vdisk depth=1

자식파일을 교체하는 방법은, 교체할 vhd가 아닌 아무 운영체제나 부팅 한 후 백업용자식파일을 더러워진 자식파일에 덮어 씌우면 된다. 명령프롬프트에서는

  • > copy 백업용자식파일경로 자식파일경로 /y

만 해주면 바로 덮어씌워진다. 참고로 이 자식파일은 attach 하기 전의 파일이라서 부모파일을 건드렸을 경우에도 그냥 이 자식파일로 교체만 해주면 바로 새 부모에 맞는 자식VHD를 부팅할 수 있게 된다.