Ⅰ. 가상 하드 디스크(Virtual Hard Disk)

가상 하드 디스크(가상 디스크)란 간단하게 이야기하여 디스크 이미지 파일을 실제 물리 디스크처럼 사용하는 것을 의미합니다. 즉, 가상이라는 말이 의미하는 것과 같이 실제로는 존재하지 않는 디스크를 디스크 이미지 파일을 통해 논리적으로 구현하여 마치 실제 물리 디스크를 사용하는 것과 같은 효과를 내는 것입니다.




Ⅱ. 디스크 이미지(Disk Image)

가상 하드 디스크를 이야기하는데에 디스크 이미지를 빼놓고 이야기하기란 쉽지 않습니다. 가상 하드 디스크의 근본이 되는 것이 바로 디스크 이미지이기 때문이죠.


1. 디스크 이미지

디스크 이미지란 하드 디스크, 테이프 디스크, 플로피 디스크, CD/DVD/BD, 플래시 디스크 등 저장 장치를 하나의 파일로 복제한 것 입니다. 디스크 이미지는 디스크에 포함된 데이터 뿐만 아니라 해당 저장 장치의 구조까지 그대로 복제한 것으로 해당 디스크를 완벽하게 복제한 하나의 파일입니다. 보통 디스크를 디스크 이미지로 만들 때에는 디스크의 데이터를 Sector by Sector 방식으로 복사하는 것이 일반적입니다.

* Sector(섹터) - 디스크의 가장 작은 저장 단위[512 Byte], 운영체제 차원에서 파일 시스템을 통해 섹터를 클러스터로 묶고 데이터를 파일 단위로 저장을 하지만 디스크 레벨에서 보자면 모든 데이터는 이 섹터에 나뉘어서 저장되는 것 입니다.

* Sector by Sector 복사 - 디스크의 데이터를 다른 디스크로 복사할 때 운영체제 레벨이 아닌 디스크 레벨에서 섹터 대 섹터로 1 : 1 대응하여 데이터를 원본과 동일하게 복사하는 것을 의미합니다.



2. Sector by Sector 복사

위에서 간단하게 이야기한 Sector by Sector 복사에 대해서 이야기를 해보도록 하겠습니다. 이것을 대략적으로라도 이해하지 않으면 디스크 이미지 파일의 정확한 개념을 파악하기 힘들거든요.

A. File by File 복사

우리가 흔히 사용하는 파일을 복사하는 것은 File by File 복사라고 합니다. 파일에서 파일로 복사를 하는 것이지요. 이러한 File by File 복사에서 복사의 주체는 파일입니다. 그렇기 때문에 파일 시스템이랄지 이런 것을 전혀 생각할 필요가 없습니다.[파일 시스템의 한계를 넘어서는 파일 이동이 아니라면] NTFS 로 포맷된 드라이브에서 FAT32 로 포맷된 드라이브로 파일을 복사한다고 하여 파일 자체의 데이터가 변하는 것은 아니니까요. 그저 파일이라는 하나의 완전한 데이터를 그대로 다른 저장 공간으로 그 공간의 파일 시스템에 맞게 옮겨 담는 것 뿐 입니다.

그러니 파일 대 파일 복사에서는 저장 장치가 파일을 기록할 수 있도록 준비가 되어 있고[파일 시스템으로 포맷되어 있고] 해당 파일을 포함할 수 있는 충분한 공간만 있으면 되는 것 입니다. 나머지는 운영체제와 파일 시스템이 알아서 처리를 합니다.


B. Sector by Sector 복사

Sector by Sector 복사는 일반적인 파일 복사와는 전혀 다른 방식입니다. Sector by Sector 복사에서 복사의 주체는 디스크의 섹터입니다. 이는 디스크와 디스크 단위에서의 복사에 적용되는 개념으로 원본 디스크와 대상 디스크의 섹터를 1 : 1 로 대응시켜 각 섹터의 데이터를 그대로 원본 섹터에서 대상 섹터로 일일히 복사하는 방식입니다. 이런 방식으로 원본 디스크의 데이터를 그모습 그대로 옮겨담은 복제 디스크가 탄생하는 것 입니다.

즉, 복사라기 보다는 복제에 가깝죠. 그렇기 때문에 Sector by Sector 복사에서는 기본적으로 원본 디스크와 대상 디스크의 구조가 동일해야 합니다.[하드 디스크를 다이렉트로 CD 로 복제? 이런 건 안 된다는 말]


C. File by File 복사와 Sector by Sector 복사

A. B. 에서 끝내려고 했는데 추가합니다. 솔직히 위에서 두 복사 방식의 차이를 설명했지만 하얀건 모니터요 검은건 글자려니 하시는 분들도 많으실 겁니다. ^^; 그래서 되도록 어려운 말 안 쓰고 비유를 통해 쉽게 풀어서 대충 두 복사 방식이 어떤 것인지 어떻게 다른 것인지 이야기하도록 하겠습니다.

일단 아래의의 그림을 보시죠. 아래의 그림은 디스크에 파일이 있는 모습을 아주 간략하게 나타내 본 것 입니다.

디스크와 파일의 모습디스크의 간략한 구조


이 그림을 제가 방금 말한 디스크와 파일의 간략한 모식도로 보셔도 되고 그냥 간단하게 일반 종이에 글을 적어놓은 것이라고 보아도 됩니다. 여기에서 파일 대 파일 복사 방식은 아래와 같습니다.

File by File Copy


파일 대 파일 복사에서는 복사의 주체가 파일이라고 했죠? 그걸 나타낸 겁니다. 파일 대 파일 복사에서는 파일을 주체로 하여 파일이라는 측면에서만 복사가 이루어집니다.

노란 종이에 적혀 있는 김현식님의 추억 만들기 구절이 너무나도 좋아 가지고 있는 다른 빨간 종이로 옮겨 적었습니다. 이 때 종이의 색깔이(파일 시스템) 다른 것은 문제가 되지 않습니다. 해당 구절을 옮겨 적은 종이의 색깔은 바뀌었지만 김현식님의 추억 만들기라는 내용 자체가(파일) 변하는건 아니니까요. 또한 파일의 위치도 변할 수 있습니다. 노란 종이에는 아래 쪽에 해당 구절을 적어놓았지만 비어있던 빨간 종이에 옮겨 적으니 가장 처음 부분에 적히게 되죠. 이게 바로 파일 대 파일 복사 방식입니다.


다음 이야기로 넘어가죠. 종이 위에 노란 칠도 칠해져 있고(파티션, 파일 시스템) 그 위에 각각 다른 문장들이(폴더, 파일) 수 없이 적혀 있습니다. 그런데 우리 눈에는 보이지 않지만 이 종이는 일정한 단위의 구획으로 나누어져 있습니다. 아래 그림을 보시죠.

디스크는 섹터로 이루어져 있다.


이러한 것을 섹터라고 합니다. 우리가 일상적으로 보는 하나의 파일도 실질적인 디스크의 입장에서는 위와 같이 여러 개의 작은 섹터에[512 byte] 그 내용이 나누어져서 저장이 되어 있습니다. 파티션, 파일 시스템이란 것도 결국 디스크의 입장에서는 섹터에 기록된 하나의 데이터에 불과합니다. 대충 아시겠나요?

동일한 구조를 가지는 다른 디스크를 준비했습니다. 이제 디스크 1 의 모든 내용을 디스크 2 로 복사하려고 합니다. 이 때 어떻게 복사를 하느냐? 아래와 그림과 같이 복사를 합니다.

Sector by Sector Copy


즉, 섹터 하나 하나의 내용을 일일히 1 : 1 로 동일하게 대응시켜서 복사를 진행합니다. 디스크 1 에서 디스크 2 로 말 그대로 진짜 디스크 전체를 통째로 디스크의 최소 데이터 저장 단위인 섹터 레벨에서 하나 하나 복사하는 과정을 거치는 것이죠. 그 결과는?

디스크의 복제


바로 이렇게 디스크 1 의 내용과 완벽하게 동일한 디스크 2 복제품이 탄생하게 되는 것이죠. 파티션은 물론 파일 시스템 안에 담긴 파일까지 완벽하게 복제가 이루어지는 것 입니다. 즉, 당연한 이야기겠지만 섹터의 내용을 그대로 일일히 복사해놓고 보니 파일은 물론 파티션과 파일 시스템 등 디스크의 모든 내용이 그대로 옮겨진 것 입니다. 간단하죠? 만약 특정 섹터의 데이터에 오류가 있었다면? 그 오류도 그대로~ 대상 디스크로 복사가 되는 것이죠.

디스크를 하나의 문서로 본다면 말 그대로 복사기에 넣고 그대로 뽑아낸 것과 같습니다. 원본 문서에 먼지가 쌓여 필요없는 점이 하나 찍혀 있었다면 복사기를 통과할 때 이것도 그대로 복사가 되죠? 이런식으로 하나의 문장 레벨에서가 아닌(파일) 문서 전체 레벨에서(디스크,섹터) 복사를 진행하는 것이 바로 섹터 대 섹터 복사입니다. 그리고 이러한 특성으로 섹터 대 섹터 복사에서는 원본과 대상의 구조가 같아야 하는 겁니다.


이제 복제할 디스크의 대상을 다른 디스크가 아닌 파일로 설정합니다. 그럼 디스크와 동일한 구조와 내용을 가지는 파일이 하나 생성이 되겠죠? 이게 바로 디스크 이미지입니다.

디스크 이미지의 생성


이렇게 디스크의 내용을 그대로 파일로 복제하는 작업을 덤프, 클론, 또는 이미징이라고 하고 이렇게 생성된 파일을 디스크 이미지라고 합니다. 이제 대충 디스크 이미지가 무엇인지 아시겠나요?



3. 디스크 이미지와 가상 하드 디스크

이러한 디스크 이미지는 여러 장치와 분야에 걸쳐서 다양하게 쓰입니다. 굉장히 많은 디스크 이미지들이 있죠. 플로피에는 IMA, VFD, FLP, BIF 등이 있고 CD/DVD 의 ISO, BIN, IMG, NRG, DMG, VCD, UIF 등이 있으며 디스크의 GHO, V2I, TIB, VHD, VMDK, VDI 등이 있습니다. 이 모든 게 디스크 이미지이죠. 이런 디스크 이미지들은 각자의 목적에 맞게 굉장히 여러 분야에서 쓰이고 있습니다.

원래 디스크 이미지는 원본 디스크의 내용을 그대로 복제한 것이기 때문에 원본과 동일한 크기를 가집니다. 이런걸 RAW 이미지라고 합니다.[그래픽 이미지의 RAW 가 아님] 플로피 이미지나 CD/DVD 이미지가 여기에 속하죠.[일부 디스크 이미지도 이 방식으로 생성할 수습니다.]

그런데 이렇게 되면 플로피나 CD/DVD 와 같은 저용량에서는 문제가 안 되지만 하드 디스크와 같은 고용량에서는 디스크 이미지 파일의 크기가 너무 커지는 문제가 생깁니다. 그래서 디스크에서 비어있는 섹터는 제외해 버리고 실질적으로 데이터가 담긴 섹터만 이미지로 덤프시키는 방식을 사용합니다. 그래도 크다면? 이미지 자체를 압축 알고리즘을 통해 압축해 버립니다. 고스트나 트루 이미지의 디스크 이미지가 이런 방식에 속합니다.


앞의 예제가 실질적인 물리 디스크를 디스크 이미지로 만드는 것에 대한 이야기였다면 이제 여기에서 한 단계 더 나아가서 아예 디스크의 구조만으로 디스크 이미지를 만들어 버립니다. 원본이 존재할 필요없이 원본의 기본적인 구조를 모두 알고 있으니 그냥 이를 통해서 디스크 이미지를 만들어버리는 것이죠.

실제 디스크의 구조는 모두 알고 있으니 이러한 구조만 동일하게 디스크 이미지로 만들고, 그에 맞는 에뮬레이트를 준비하여 가상의 인터페이스를 만들어서 해당 인터페이스에 디스크 이미지를 장치로 연결하여, 실제 디스크처럼 인식하게 만든 후 데이터를 읽고 쓰는 하는 것이죠. 이게 바로 VMware 나 VirtualBOX, VirtualPC 에서 사용하는 VMDK, VDI, VHD 등의 가상 하드 디스크 이미지 입니다. 간단하죠?

이제 이러한 디스크 이미지를 만들 때 비어있는 섹터를 어떻게 처리하느냐에 따라[실제로 이러한 방식으로 디스크 이미지를 만들면 우선은 디스크의 내용은 비어있는 것과 같죠.] 가상 하드 디스크에서 이야기하는 고정 크기 가상 디스크동적 확장 가상 디스크가 나누어지는 것 입니다. 비어있는 섹터까지 모두 포함하여 RAW 이미지 형식으로 만들면 고정 크기 디스크 형식이(Fixed) 되고 비어있는 섹터는 우선 명시만 해 놓고 실질적으로 데이터를 기록하면 그 때 기록하면서 디스크 이미지의 용량을 늘려가는 방식으로 사용하면 동적 확장 디스크 형식이(Expandable) 되는 것이죠.

그리고 여기에 더해 어차피 파일이라는 특성을 십분 활용하여 부모-자식 관계의 계층적인 구조를 지원하거나[VMware 의 스냅샷을 통해 생성된 이미지들도 이런 계층 구조를 갖습니다.] 디스크 이미지끼리 링크로 연결시키는 등 만드는 놈이 상상하는 한도 내에서 별짓을 다하게끔 여러가지 기능들이 추가된 것 입니다.[가상이 이래서 좋죠. 상상이 논리적으로 가능하다면 실제로 구현해 낼 수 있습니다.]





Ⅲ. 윈도우 7 의 가상 하드 디스크 - VHD

VHDVHD

가상 하드 디스크 이미지에는 여러가지 종류가 있습니다. VMware 에서 사용하는 VMDK, VirtualBOX 에서 사용하는 VDI, VirtualPC 에서 사용하는 VHD 등 여러가지가 있죠.

이중에서 마이크로소프트는 자사의 가상 머신 프로그램인 VirtualPC 에서 사용하던 VHD 가상 하드 디스크 이미지 파일을[오른쪽 그림] 윈도우 7 과 통합시켜 버렸습니다.[VirtualPC 를 XP 모드로 통합시켜 버린 것과는 별개로]

디스크 관리와 DiskPart 에 VHD 와 관련된 명령과 기능들이 추가되고 윈도우 7 의 부트 매니저인 BOOTMGR 과 BCD 에서도 VHD 를 지원하게끔 업그레이드가 이루어졌조. 그리고 VHD 를 OS 차원에서 활용하기 위해 윈도우 7 자체적으로 에뮬레이트 할 수 있도록 에뮬레이터를 드라이버 형식으로 준비를 시켜 놓았습니다.

VHD 를 처음 연결할 때 준비되는 드라이버의 모습.



이러한 모든 준비를 마침으로써 특별한 프로그램의 도움 없이 윈도우 7 자체적으로 VHD 가상 하드 디스크를 생성하고 연결하여 사용할 수 있게 된 것 입니다.

윈도우 7 의 가상 하드 디스크



거기에 더해 윈도우 7 자체를 가상 환경에서 바로 사용할 수 있게 개선하여 이를 지원하는 Ultimate 에디션과 Enterprise 에디션은 VHD 에 설치되어 직접 부팅하는 것도 가능하죠.

VHD 부팅 항목.



이러한 변화로 인해 VMware 나 VirtualBOX 와 같은 가상 머신 프로그램을 사용할 때만 알고 있으면 되었던 가상 하드 디스크에 대해서 이제는 기본적으로 알아야만 하는 시대가 왔습니다. 기쁜 일인지 슬픈 일인지 모르겠지만 아무튼 가상 하드 디스크와 디스크 이미지에 관한 글은 여기까지입니다. 가상 하드 디스크를 생성하고 관리하는 내용은 디스크 관리와 DiskPart 에서 찾아 뵙도록 하죠.




Ⅳ. 부록

1.참고 자료






 

 

신고
캐플 블로그에 공개된 글은 반드시 원본 글의 링크를 포함시키는 조건으로 자유롭게 이용하실 수 있습니다.
하지만 블로그의 발전을 위하여 되도록이면 링크로 글을 소개해주시길 부탁드립니다. ^^

- 상업적인 용도의 사이트는 대상에서 제외됩니다. -
- 글에는 오류가 있을 수 있고, 추후 수정 또는 재발행될 수 있습니다. -
  1. 돌산 2013.01.15 11:07 신고  댓글주소  수정/삭제  댓글쓰기
    디스크 이미지란 것,그리고 sector by sector 의 의미에 대해서 잘 읽었습니다.
    이 두 가지는 그동안 캐플님의 글을 읽으면서 약간 이해가 잘 안되는 부분이었는데 오늘 이 글을 읽다 보니 의문을 가지고 있었던 내용인지라 확 땡기네요.한번 더 읽어 봐야 겠습니다.
  2. 돌머리 2014.03.14 18:29 신고  댓글주소  수정/삭제  댓글쓰기
    우선 이런 유익한 강좌 남겨주신 것에 대해 감사 말씀 먼저 올립니다. 정말 유용하게 보고 배우고 있습니다. 하지만 워낙 머리가 돌이라서 중간 중간 글의 문맥 조차 파악 못 하는 경우가 생기네요. 이전 글까지는 어떻게든 땜빵해서 넘어갔는데 이번에는 도저히 감이 안 잡혀서 댓글을 남겨봅니다.

    [b][실제 디스크의 구조는 모두 알고 있으니 이러한 구조만 동일하게 디스크 이미지로 만들고, 그에 맞는 에뮬레이트를 준비하여 가상의 인터페이스를 만들어서 해당 인터페이스에 디스크 이미지를 장치로 연결하여, 실제 디스크처럼 인식하게 만든 후 데이터를 읽고 쓰는 하는 것이죠.][/b]

    해당 부분에서 에뮬레이트까지는 어떻게든 이해했는데 뒤의 인터페이스 부분 부터는 무슨 말씀이신지 도통 감이 안 잡힙니다; 이거 모른다고 가상 이미지 이해 못 하는 건 아니지만 간단하다고 말씀하실 정도면 기초적인 지식이라는 건데 이런 부분의 이해도 없으면 안 될 것 같아서 질문 드려봅니다. 혹시라도 읽어주셨다면 감사드립니다. ^^
  3. BlogIcon DoubleS2 2015.07.27 21:29 신고  댓글주소  수정/삭제  댓글쓰기
    좋은 정보 감사합니다! 포스팅 글을 제 블로그로 공유하는데 혹시 문제가 생기면 내리겠습니다! 감사합니다^^
  4. BlogIcon DoubleS2 2015.07.27 21:29 신고  댓글주소  수정/삭제  댓글쓰기
    좋은 정보 감사합니다! 포스팅 글을 제 블로그로 공유하는데 혹시 문제가 생기면 내리겠습니다! 감사합니다^^

댓글을 달아 주세요

- 댓글에선 예의를 지켜주시기 바라며, 블로그지기는 댓글에서 따로 활동하지 않습니다.

* 티스토리 사용자는 여기를 클릭하시면 로그인 됩니다.

BBCode 안내   굵게 밑줄 기울임 취소선   취소선 취소선 취소선 취소선   왼쪽 정렬 가운데 정렬 오른쪽 정렬   코드박스 인용구 이미지   이미지 업로드-Imgur.com