VHD 부팅에 대한 이야기… Windows 7

Windows7_h_rgb

운영 체제를 파일 하나로 휴대… Windows 7
실제 컴퓨터? 가상 컴퓨터.. 이제는 그 구분없이.. Windows 7, 그리고 WIM2VHD

VHD에 대한 이야기는 이미 2개의 포스팅으로 한 적이 있습니다. 지금까지 가상 머신 전용으로만 쓰이던 VHD(Virtual Hard Disk)가 Windows 7, Windows Server 2008 R2는 가상화 플랫폼없이 실제 물리적인 머신에서 사용할 수 있는 디스크의 용도로도 사용할 수 있다는 것이죠.

image 

6월 10일에 진행되었던 Nexcom 2009에서도 언급드렸던 내용의 슬라이드를 짤라보았습니다. 마땅히 쓸만한 그림이 없기에, 태블릿으로 직접 그려넣었던 슬라이드입니다.

Microsoft가 VHD를 실제 물리적인 머신에서 사용할 수 있게 함은, 꽤 많은 의미를 가지고 있습니다. 운영 체제의 휴대성을 확보함과 동시에, 어떠한 플랫폼 환경, 다시 말해 물리적이든, 가상화든.. 개인이 사용하는 데스크톱을 그대로 사용할 수 있게 해준다는 의미죠. 또한 기업 환경에서는 Windows Server에 내장된 Windows 배포 서비스(WDS)를 이용하여, 사용자 데스크톱 운영 체제 이미지를 VHD로도 배포할 수 있게 되었습니다. VHD는 WIM과 더불어, 일반적인 이미지 컨테이너로 지속될 예정입니다.

VHD를 이용한 부팅은 몇가지 혜택을 가지고 올 수 있습니다.

  • 하드웨어나 가상 머신에 운영 체제가 이미 설치된 동일한 이미지를 생성, 배포, 유지 보수할 수 있게 됩니다.
  • 하드웨어 성능 및 가용성에 따라 이미지를 배포할 수 있습니다.
  • 별도의 파티셔닝을 하지 않고, Windows 7 그리고 Windows Vista를 사용하는 머신에서 추가의 운영 체제를 이용할 수 있게 해줍니다.
  • 당연히 VHD를 이용한 배포가 실제 머신을 설치하는 것보다 더 빠르게 작업을 완료할 수 있습니다.
  • 서버나 클라이언트의 배포뿐만 아니라, 장애시 이에 대한 빠른 처리를 할 수 있습니다.

Windows 7과 Windows Server 2008 R2만이 VHD를 이용한 부팅을 사용할 수 있습니다. Windows Vista의 경우에는 BCDEDIT 및 부트로더를 Windows 7용으로 교체하여 사용하실 수 있죠.

VHD를 이용하여 부팅을 하는 경우엔 몇가지 기존 부팅 방식과 다르게 생각해야할 측면이 있습니다.

  • VHD는 고정 크기 방식과 동적 확장 방식이 있는데, 어느 경우건 Windows 7에서 사용할 충분한 하드 디스크의 용량이 있어야 합니다.
  • 실제 머신의 경우, 가상 메모리를 위한 페이징 파일이 하드 디스크에 생성됩니다. VHD를 이용한 부팅의 경우에는 페이징 파일만, VHD내에서 생성되지 않고, 실제 하드 디스크에서 생성됩니다.
  • 최대 절전 모드(Hibernate)는 사용할 수 없습니다만, 절전 모드(Sleep)은 사용할 수 있습니다.
  • VHD를 이용하여 부팅했을 경우, 해당 운영 체제에서도 VHD를 또 만들어서 디스크로 사용할 수 없습니다. (RC이후에 변경되어 VHD 파일로 부팅하셔도, 해당 운영 체제에서 VHD를 만들수 있습니다.)
  • BitLocker를 사용할 수 없습니다.
  • VHD내에 탑재될 수 있는 운영 체제는 Windows 7 Enterprise, Ultimate로 제한됩니다.
  • VHD 파일을 USB 플래쉬 메모리와 같은 이동식 저장소에 저장할 수 있으나, 이를 이용하여 부팅은 할 수 없습니다.
  • VHD 파일을 이용하여 부팅하기 전, 설치된 Windows 7 이미지는 Sysprep(공장 출하 상태)된 상태여야 합니다. WIM2VHD를 이용하여, 설치용 WIM 파일을 VHD로 변환했을 경우에는, Sysprep된 상태의 Windows 7을 얻으실 수 있습니다.

Windows PE로 부팅하여, 아직 운영 체제가 설치되지 않은 빈 하드 디스크에 부트 섹터와 부팅 프로그램만 탑재하고, VHD를 복사해서, 별도의 Windows 7 설치 없이 신규 머신을 VHD에서 부팅할 수 있게 만들 수도 있습니다.

  • 신규 머신을 Windows PE를 이용하여 부팅합니다.
  • DiskPart를 이용하여, 하드 디스크 작업을 합니다.
    Diskpart
    Select Disk 0
    Clean
  • 시스템 파티션을 먼저 100MB만 생성합니다.(Windows 7 설치시 생성되는 가장 상위 파티션 100MB라고 생각하시면 됩니다. 왜 100MB가 생기는지는 설치시 자동 생성되는 200MB 빈 파티션의 진실은? Windows 7 BitLocker와 BitLocker To Go를 참고하세요. Beta 버전에선 200MB였지만, 사용자의 의견을 반영하여, RC부터 100MB로 줄어들었습니다.)
    Create Partition Primary Size=100
    Format Quick FS=NTFS
    Assign Letter=S
    Active
  • 나머지 디스크를 파티셔닝합니다.
    Create Partition Primary
    Format Quick FS=NTFS
    Assign Letter=C
    Exit
  • 이제 VHD 파일을 적절한 위치(이 포스팅에선 C:\)에 복사합니다. 그 후, 해당 VHD를 연결해야겠죠.
    Diskpart
    Select vdisk file=c:\windows7.vhd
    Attach vdisk
  • 그 후, List Volume이라는 명령어를 사용하시면 VHD가 연결된 것을 보실 수 있고, Select Disk <번호>와 Assign Letter 명령어를 이용하여 적절히 드라이브 명을 붙여줍니다.(이 포스팅에선 V:)
  • Windows PE나 V 드라이브내 Windows\System32에 위치한 BCDBOOT 명령어를 이용하여 부트 관리자와 로더를 설정해줍니다. (/s 옵션은 시스템 파티션을 지정해주는 것입니다.)
    BCDBOOT V:\Windows\ /s S:\
    리부팅!

그렇다면 왜 VHD안에는 Windows 7만 사용할 수 있을까요? 생각보다 간단한 이유입니다. Windows 7 부트 매니저와 로더가 운영 체제를 시작하기 위해서 VHD 파일내, Windows 이미지를 읽게 됩니다. Windows가 VHD 파일에서 부팅시, 모든 디스크에 대한 입출력(I/O)는 커널 장치 드라이버에서 로딩하게 되고, 시스템 서비스를 시작하고, 응용 프로그램을 실행하게 됩니다만, 이 입출력은 실제 하드 디스크에서 하는 것은 아니죠. 이를 실제 물리적인 디스크와 NTFS 볼륨으로 전환해주는 기술이 Windows 7에만 탑재되어져 있습니다. 종료시에도, 모든 쓰기 작업은 VHD 파일내로 처리되고, 하위 실제 파티션은 디스크 장치를 종료하게 됩니다.

간단히, VHD 파일내 입출력 처리를 실제 하드 디스크로 전환할 수 있느냐? 없느냐? 에 대한 이야기입니다.

꼬알라 개인적으로는, 설치 이미지내 존재하는 Install.wim을 WIM2VHD를 이용하여 VHD로 전환한 다음, 실제 머신에서 이용하고 있습니다. 간혹, 세미나에서 새로운 시스템이 필요하다면… 기존 머신을 포맷하고, 재설치하는 것이 아니라, 1회성의 목적이라면, VHD를 이용하여 데모나 세미나를 진행하죠.

VHD 파일을 이용한 물리적인 머신 부팅 기술은 매우 유연한 데스크톱 관리에 좋은 기술로 보여집니다. 특히 기업내 IT 관리자의 경우에는 사용자의 데스크톱 배포 및 장애 처리에 대한 요소로 사용할 수 있다는 것도… 매력적이고요~ 조금은 어려운 이야기인데.. 도움이 되셨으면 합니다. :)