운영 체제를 파일 하나로 휴대… Windows 7

운영 체제를 파일 하나로 휴대… Windows 7

  • Comments 21
  • Likes

Windows7_h_rgb

운영 체제를 파일 하나로 휴대할 수 있다면 어떨까요? 해당 파일을 하드 디스크에 복사해놓고, 이를 부트 로더가 읽어서, 부팅을 시켜준다면?

운영 체제의 휴대성(Mobility)를 부여하는 것은 매우 큰 의미를 가집니다. 지금까지 하드 디스크내 설치된 운영 체제의 파일들을 분리해서 사용한다는 것은 생각하기 어려운 일이었습니다. 하드 디스크를 실제로 옮겨서, 부팅시키지 않는한 말이죠 :)

Windows 7에서는 VHD(Virtual Hard Disk) 포맷을 기본적으로 지원합니다. 뜬금없이 왠 VHD냐? 라는 말씀을 하실 수 있을건데요. VHD 파일에 대해 잘 모르시는 분들을 위해 간단하게 설명을 하겠습니다.

VHD(Virtual Hard Disk)

원래에는 Virtual PC, Virtual Server 2005, Windows Server 2008 Hyper-V, Microsoft Hyper-V Server, XEN 기반 가상화등에서 널리사용되고 있는 가상 머신용 하드 디스크입니다. VHD 파일 하나가 실제 하드 디스크의 형태로, 시스템에서 보이게 되며, 이를 이용하여 가상 머신이 동작하고, 데이터를 저장하게 됩니다.

image

 

꼬알라가 데모를 위해서 사용하는 VHD 파일들입니다. 개별 파일 하나하나가 실제 가상 머신의 하드 디스크로 동작하고 있다고 생각하시면 쉬워집니다. VHD는 오픈 스펙으로 Microsoft에서 스펙을 공개하고 있으며, 이를 XEN에서 받아들여, XEN 기반 가상화에서도 가상 머신에 대한 하드 디스크로 사용중이죠. 이에 고객은 손쉽게 가상 머신 하드 디스크, 즉 VHD 파일을 다른 물리적인 머신으로 복사하여, 동일한 형태의 가상 머신을 구성할 수 있습니다. 이런 의미에서 가상화는 가상 머신에 대한 휴대성 및 빠른 재난 복구라는 비즈니스 가치도 부여하고 있었습니다.

그렇다면 VHD 파일의 내부는 어떨까요? 그냥 하드 디스크와 동일한 계층 구조로 저장되어져 있습니다. 그렇다면.. ISO 파일을 데몬과 같은 프로그램으로 마운트해서 사용하듯이 VHD 파일도 마운트해서 쓸 수 있다는 생각이 드시죠? 지금까진 가상화 솔루션내 VHDMount.exe를 사용했었습니다.

이야기가 길어졌습니다.

언급한바와 같이 VHD 파일을 Windows 7에서는 실제 파일을 저장하기 위한 캐비넷 형태로 사용할 수 있고, 해당 VHD 파일을 딴 곳으로 복사해서, 다시 연결하시면, 되겠죠? 자 그럼 어떻게 만드는지 볼까요?

디스크 관리자를 엽니다.

image

VHD 만들기는 하나의 VHD 파일을 생성한다는 의미이며, 생성 후, 해당 파일을 마운트하여, 별도의 하드 드라이브로 연결합니다. VHD 연결의 의미는 기존에 사용중이던 VHD 파일을 마운트한다는 의미죠.

image 

Dynamic Expanding(동적 확장) 유형은 최초에 작은 크기로 VHD를 만들고, 사용자가 지정한 크기까지 파일이 점점 커지는 구조입니다. 하드 디스크 사이즈 관리에는 용이하지만, 성능 & 디스크 조각에는 영향을 줄 수 있습니다. Fixed Sized는 처음부터 해당 크기를 가진 VHD 파일을 만드는 것입니다. 디스크 사이즈엔 영향을 주지만, 성능 & 디스크 조각화 방지에는 좋습니다. 원하는 형태로 VHD 파일을 만들고, 연결하면…

image

디스크 처럼 잡혔죠?

image

파일 형태로 저장되어져 있고요~

이렇게 데이터 형태로 VHD를 사용할 수 있다는 의미입니다. 여기에서 끝이 아닙니다. VHD를 이용해서 부팅도 가능합니다. Windows 7의 부트 로더는 VHD 파일을 파싱할 수 있고, 해당 VHD 파일안의 데이터를 이용하여 부팅을 하게 됩니다.

권한이 상승된 명령어 프롬프트를 엽니다. BCDEDIT.EXE를 사용할 것입니다.

  1. BCDEDIT /COPY {CURRENT} /D “부트 로더에 표시될 이름” ? 부트 로더내 현재 엔트리를 한개 복사하여, /D에서 입력한 이름의 형태로 표시시킵니다. 여기서 GUID가 리턴됩니다.
  2. BCDEDIT /SET {GUID} DEVICE VHD=[드라이브명:]\폴더\파일명
  3. BCDEDIT /SET {GUID} OSDEVICE VHD=[드라이브명:]\폴더\파일명
  4. BCDEDIT /SET {GUID} DETECTHAL ON - HAL을 업데이트하여, 변경된 형태의 하드웨어를 인식시킵니다.

image

이런 후 다시 시작을 시키면..

image

감이 오시나요? 주의하실 사항은 VHD 파일내 지원 가능한 운영 체제는 Windows 7이어야 합니다. 하위 운영 체제는 지원하지 않습니다. 그리고 Windows 7과 동일한 부트 로더를 사용하는 Windows Vista의 경우에는, Windows 7의 부트 로더 파일만 복사하여, Windows 7의 VHD 이미지를 부팅에서 사용할 수 있습니다.

VHD 파일을 어떻게 만들 수 있을까요? 현재 방법은 Windows 7을 Hyper-V나 Virtual PC, Virtual Server 2005 환경에서 만들어야 합니다. 운영 체제를 가상화 환경내 설치하고, Sysprep을 이용하여, 해당 VHD내 운영 체제를 초기화해야 합니다.

어떠세요? 이제 다른 곳에서 동일한 환경을 써야한다면.. VHD 파일 형태로 만들어서, 이를 휴대해서 사용하실 수 있겠죠? 시간이 될때, Windows Vista 환경에서 이를 사용하는 방법, 그리고 새로운 빈 하드 디스크(운영 체제가 없는)에서 VHD만을 이용해서 시스템을 구성하는 이야기를 포스팅하겠습니다.

Comments
  • VHD 파일을 기본적으로 운영체제에서 지원한다는 사실이 놀랍습니다. 가상 머신을 동작시키는 것 뿐 아니라, 운영체제 자체에서 사용 가능하다는 것이 참 좋은 것 같습니다. 말씀하신 대로 '성능 & 디스크 조각화 방지'에 매우 좋을 것 같네요.

    잘 보고 갑니다.

  • :) 아크몬드님.. 자주 방문해주셔서 감사합니다.

  • Vista 이후 wim 과 vhd 파일이 항상 혼동되곤 합니다.

    각각의 파일 포맷의 특징, 장/단점에 대해서 한번 정리해 주는 포스팅을 해주시는 것은 어떨까요? ^^

  • 하나의 운영체제를 여러 컴퓨터에서 작동시킬 수 있다는 것이 독특한 것 같습니다. 헌데, 컴퓨터가 달라진다는 것은 하드웨어가 바뀐다는 것인데요. 장치 인식의 한계는 있다고 보여지는데 어떠한가요? 아니면 Virtual Server처럼 가상 드라이버로 작동하는 것인가요?

    항상 좋은 글들 감사하게 보고갑니다.

  • 기성님 // 시간이 되면 한번 찾아서 포스팅하겠습니다.

    혁 // 물리적인 하드 디스크 안에 저장된 VHD 파일을 실제 물리적인 머신이 하드 디스크를 읽고 쓰듯이 한다는 의미입니다. Windows 7 VHD 파일을 5개를 만들어놓고.. 이를 개별적(멀티부팅개념으로)으로 실제 머신에서 부팅할 수 있다는 의미죠..

    결국 VHD 파일내 운영 체제는 실제 물리적인 머신에 대한 하드웨어 드라이버를 다 설치해줘야 합니다. 제대로 다 쓰시려면.. 포맷을 VHD형식으로 쓰지, 실제 가상화와는 전혀 다른 동작 방식입니다.

  • Windows7의 부트로더는 VHD외에

    ISO 화일도 부팅이 가능한지요?

  • Zento님..

    ISO로는 부팅이 되지 않습니다.

    방문해주셔서 감사합니다. :)

  • 오~~죽이는 기능이군요..지금 저도 windows 7 beta Build No.7000 번 설치하고 있습니다.

  • 미친감자님 :)

    나름 흥미로운 기술이라 생각해요 저도.. 감사합니다.

  • 공부하는 공학도로서는 VHD기반 부팅환경은 흥미롭네요^^!

    "논리파티션위에 바이너리디스크(?)"

    윈도우에서 설치되는 우분투도 이같은 환경인 듯 한데,,

    앞으로는 이것이 대세군요,,,,,,ㅋ;

  • 권한이 상승된 명령어 프롬프트를 엽니다. BCDEDIT.EXE를 사용할 것입니다.

    BCDEDIT /SET {CURRENT} ~~~ 가 아니라

    BCDEDIT /copy {CURRENT}~~~~

  • 일전에.. 운영 체제를 파일 하���로 휴대… Windows 7 라는 포스팅을 한적이 있습니다. Windows 7은 Virtualized Aware OS로서, 물리적 환경 또는 가상화

  • 마소가 리눅스를 따라하다니...

    이미 리눅스에서 xen 이용해서 지원하던 기수인데;;;

  • 꼬알라님~~ 위에 복돌이님이 댓글 다셨듯이 중간에 오타가 하나 있네요~~

    BCDEDIT /SET {CURRENT} /D “부트 로더에 표시될 이름”

    스샷에는 COPY로 제대로 나와있는데 설명은 SET 으로 하셨어요~~

  • Snoopy님, 복돌이님 // 늦었지만, 오타는 수정해놓았습니다. :) 감사합니다

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment