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

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만을 이용해서 시스템을 구성하는 이야기를 포스팅하겠습니다.