본문 바로가기

디스크와 파티션

[디스크 정보] 디스크의 종류와 용어 2 장 - MBR 디스크와 GPT 디스크

Ⅰ. 윈도우와 디스크 형식

윈도우 비스타 이상 7, 8 에서 사용할 수 있는 디스크의 종류에는 크게 MBR 디스크와 GPT 디스크 2 가지 + 기본 디스크와 동적 디스크 2 가지 하여 총 4 가지의 디스크 형식이 있습니다. 그 중에서 먼저 전통적인 BIOS 방식의 시스템에서 사용되는 디스크 형식인 MBR 디스크와 이어서 새롭게 개발된 EFI 방식의 시스템에서 사용되는 디스크 형식인 GPT 디스크로 나누어 집니다. 이러한 MBR 디스크와 GPT 디스크의 차이는 디스크에 관한 정보를 담는데 MBR 을 사용하느냐 GPT 를 사용하느냐에 따라 나누어지는 것 입니다.

※ BIOS - Basic Input/Output System, 바이오스, 기본 입출력 시스템
※ EFI - Extensible Firmware Interface, 확장 펌웨어 인터페이스
※ MBR - Master Boot Recored, 마스터 부트 레코드
※ GPT - GUID(Globally Unique Identifire, 전역 고유 식별자) Partition Table, GUID 파티션 테이블


참고로 이 장에서 설명하는 MBR 디스크와 GPT 디스크의 내용은 기본 디스크를 기준으로 설명된 것 입니다. 동적 디스크는 다른 장에서 MBR 디스크와 GPT 디스크 구분 없이 공통적으로 설명됩니다.




Ⅱ. MBR(Master Boot Record) 디스크

우리가 일반적으로 사용하는 전통적인 IBM 호환 PC 의 바이오스(BIOS) 에서 기본적으로 사용하는 디스크 형식입니다. MBR 이란 간략하게 이야기하여 디스크에 대한 정보를 담고 있는 영역입니다.


1.MBR 과 파티션 테이블의 구조

IBM PC 의 바이오스에는(우리는 흔히 CMOS 셋업을 통해 이를 설정하죠.) 컴퓨터의 하드웨어를 체크하고 부팅할 수 있도록 해주는 작은 프로그램이 설치되어 있습니다. 이 바이오스의 마지막에는 시스템의 첫 번째 하드 디스크의 첫 번째 실린더, 첫 번째 헤드, 첫 번째 섹터로(CHS 0:0:1 시작 지점 - Starting Point) 이동하라는 명령이 포함되어 있죠.

이러한 디스크의 이 시작 지점에 위치한 것이 바로 MBR 입니다. 정확하게 디스크의 시작 지점에 512 Byte 의 크기를 가지고 있습니다. 이러한 MBR 은 크게 부팅에 관한 정보를 담고 있는 440 Byte 의 Master Boot Code 영역과 파티션에 관한 정보를 담고 있는 64 Byte 의 Partition Table 영역으로 나누어집니다. 아래는 이러한 MBR 의 구조를 기술한 자세한 표 입니다.

마스터 부트 레코드의 구조[Structure of a Master Boot Record]
주소 설명 크기
Bytes
16진수 8진수 10진수
0000 0000 0 코드 영역[code area] 440
(max. 446)
01B8 0670 440 디스크 서명[disk signature (optional)] 4
01BC 0674 444 비어 있음[Usually nulls; 0x0000] 2
01BE 0676 446 프라이머리 파티션 테이블
네 개의 16 Byte 엔트리
[Table of primary partitions
(Four 16-byte entries, IBM partition table scheme)]
64
01FE 0776 510 55h MBR 서명[MBR signature];
0xAA55
2
01FF 0777 511 AAh
MBR, 전체 크기: 446 + 64 + 2 = 512



여기에서 우리가 살펴보아야 할 내용은 바로 64 Byte 로 구성된 프라이머리 파티션 테이블 영역입니다. 프라이머리 파티션 테이블에 기록이 되는 파티션 엔트리는 개당 16 Byte 로 이루어져 있습니다. 그리하여 MBR 디스크에서 최대로 생성할 수 있는 파티션의 개수는 64/16 = 4 해서 4 개가 되는 것 입니다. 이러한 16 Byte 크기의 파티션 엔트리는 아래와 같은 구조를 가지고 있습니다.

16-Byte 로 된 파티션 레코드의 구조
오프셋 필드 길이 설명
0x00 1 Byte 파티션 상태 (0x80 = 시동 가능, 0x00 = 부팅불가, 기타 = 비정상)
0x01 3 Byte 파티션의 첫 번째 섹터의 실린더-헤드-섹터 주소
0x04 1 Byte 파티션 종류
0x05 3 Byte 파티션의 마지막 섹터의 실린더-헤드-섹터 주소
0x08 4 Byte 파티션의 첫 번째 섹터의 LBA
0x0C 4 Byte 파티션의 크기 (단위: 섹터) [* 전체 섹터의 개수]



이러한 파티션 테이블의 구조상 MBR 에서 최대로 생성할 수 있는 파티션의 개수가 네 개 밖에 되지 않기 때문에 MBR 은 확장 파티션EBR(Extended Boot Record, 확장 부트 레코드) 을 통해 이러한 구조적 문제를 해결하고 있습니다.



2. 확장 파티션과 EBR

이러한 파티션 테이블의 구조상 MBR 에서 최대로 생성할 수 있는 파티션의 개수가 네 개 밖에 되지 않기 때문에 MBR 은 파티션 테이블에 기록된 파티션 중 하나를 확장 파티션이라고 명시하고 확장 파티션내에서 다시 MBR 과 비슷한 역할을 하는 EBR 이라는 것을 추가로 생성하고 EBR 을 통해 확장 파티션내에 다시 논리 드라이브라는 파티션을 생성하는 방법을 사용하여 파티션 개수의 한계를 극복하고 있습니다.

파티션은 종류별로 고유의 시스템 ID 를 가지고 있습니다. 이러한 파티션의 ID 는 파티션 레코드의 0x04 영역에 기록이 되며 시스템은 이곳에 기록된 파티션의 ID 를 참고하여 파티션의 종류를 파악합니다. 확장 파티션의 파티션 ID 는 05(0x05) 입니다.

http://en.wikipedia.org/wiki/Partition_type
http://www.win.tue.nl/~aeb/partitions/partition_types-1.html


그리하여 MBR 디스크는 파티션 테이블에 생성되는 주 파티션확장 파티션, 확장 파티션 내에서 다시 EBR 을 통해 생성되는 논리 드라이브라는 세 가지 종류의 파티션을 가지고 있는 것 입니다. 이러한 주 파티션, 확장 파티션, 논리 드라이브의 구조는 아래의 그림과 같습니다.

출처 - 마이크로소프트 테크넷




3.EBR 과 논리 드라이브의 구조

확장 파티션의 논리 드라이브에서 추가로 사용되는 EBR 은 MBR 과 거의 흡사한 구조를 가지며 그 구조는 아래와 같습니다.

확장 부트 레코드의 구조[Common Structure of Extended Boot Records]
오프셋[Offsets]
(within EBR sectors)
내용 크기
Bytes
16진수 8진수 10진수
000 - 1BD 000 - 675 000 - 445 대체로 사용되지 않으며 0 으로 기록되어 있음.
[Generally unused; normally filled with zeroes;
may contain another boot loader i.e. a partition boot record]
446
18A - 192 612 - 622 394 - 402 Possible IBM Boot Manager menu entry 9 *
1BE - 1CD 676 - 715 446 - 461 첫 번째 파티션 엔트리[Partition table's first entry] 16
1CE - 1DD 716 - 735 462 - 477 두 번째 파티션 엔트리[Partition table's second entry] 16
1DE - 1FD 736 - 775 478 - 509 세 번째, 네 번째 파티션 엔트리, 사용되지 않으며 0 으로 기록 됨.
[Unused, but should be filled with zeroes]
32
1FE 776 510 55h 부트 레코드 서명[Boot record signature]:
0xAA55 (AA55h)
2
1FF 777 511 AAh
EBR, 전체 크기: 446 + 16 +16 +32 + 2 = 512



EBR 내의 파티션 테이블은 총 네 개이며 파티션 엔트리의 구조는 MBR 의 파티션 엔트리와 동일합니다.[16-Byte 로 된 파티션 레코드의 구조 표 참조] 그러나 구조적인 모습이 같다고 하여 EBR 의 파티션 엔트리에 기록되는 논리 드라이브도 마찬가지로 네 개의 생성 개수 제한을 가지는 것은 아닙니다. EBR 의 파티션 테이블에 기록되는 파티션 엔트리는 MBR 의 그것과는 다소 다른 양상을 보입니다.

일단 EBR 은 MBR 이 디스크의 시작 부분에 위치하는 것과 같이 확장 파티션의 시작 부분에 위치하여 논리 드라이브를 관리하는 구조가 아닙니다. EBR 은 확장 파티션이 아닌 논리 드라이브에 포함되어 각 논리 드라이브의 시작 부분에 모두 위치하고 있습니다. 이 말은 논리 드라이브의 개수만큼 EBR 도 존재한다는 의미입니다.

그렇다면 EBR 의 파티션 테이블은 논리 드라이브를 어떻게 기록하는 것일까요? 일단 EBR 파티션 테이블의 파티션 엔트리 네 개 중 세 번째와 네 번째 파티션 엔트리는 사용되지 않는 엔트리 입니다. 그렇기 때문에 비어 있습니다.

첫 번째 파티션 엔트리에는 현재의 논리 드라이브에 관한 정보가 기록이 됩니다. EBR 은 논리 드라이브에 포함되어 있다고 했죠? 즉, 첫 번째 파티션 엔트리는 자기 자신(현재 논리 드라이브)에 대한 정보를 담고 있는 것 입니다. 그 내용은 MBR 의 프라이머리 파티션 테이블의 파티션 엔트리에 기록되는 내용과 동일합니다. 이를 통해 일단 논리 드라이브는 자기 자신을 규정하게 됩니다.

두 번째 파티션 엔트리는 처음엔 비어 있습니다. 그러다 다시 새로운 논리 드라이브가 생성이 되면 새롭게 생성된 논리 드라이브의 EBR 을 가르키는 내용이 기록 됩니다. 즉, 논리 드라이브가 다수가 존재하고 있다면 각각의 논리 드라이브에 존재하는 EBR 의 두 번째 파티션 엔트리에는 자기 다음에 위치한 논리 드라이브의 EBR 을 가르키는 내용이 기록이 되어 있는 것 입니다. 다음 번 논리 드라이브가 없다면 두 번째 파티션 엔트리는 비어있고 그리하여 마지막 논리 드라이브에 존재하는 EBR 의 두 번째 파티션 엔트리는 비어 있게 됩니다.[다시 새로운 논리 드라이브가 생성될 때 까지]

이런 식으로 EBR 내에서 다음 EBR 을 가르키는 방식으로 EBR 은 무한정 확장될 수 있으며 이를 통해 논리 드라이브를 무한정 생성할 수 있는 것 입니다. 지금까지 설명한 EBR 과 논리 드라이브의 구조를 그림으로 살펴보면 아래와 같습니다.

출처 - 마이크로소프트 테크넷



이제 확장 파티션 내의 논리 드라이브가 어떠한 구조로 생성이 되는지 아시겠나요? 짧게 요약하자면 논리 드라이브는 자체적으로 EBR 을 포함하고 있으며 해당 EBR 에 자기 자신의 정보를 기록하고 이러한 EBR 은 서로 체인과 같이 연결되어 무한정 확장되는 구조를 가지고 있는 것 입니다. 주 파티션이나 확장 파티션과 같이 디스크의 지정된 특정 영역에 일정 용량의 테이블을 가지고 한정된 엔트리를 통해 구성되는 것과는 다른 구조인 것 입니다.



4. MBR 디스크 방식의 구조적인 한계

지금까지 MBR 디스크의 구조에 대해서 알아보았습니다. 그런데 MBR 디스크에서는 해결할 수 없는 문제가 하나 있습니다. 그것이 무엇이냐면 MBR 은 각 섹터를 인식하는 주소 체계로 32bit 체계를 사용하고 이 때문에 인식 가능한 주소의 한계가 232 개, 섹터의 크기가 512Byte 이기 때문에 최대 232 x 512 하여 2TB 의 용량 한계를 가진다는 것입니다.

MBR 디스크의 이러한 한계를 극복하고 여러가지 컴퓨팅 환경의 변화에 대응하기 위해 새롭게 내놓은 규격이 바로 확장 펌웨어 인터페이스(EFI)의 GPT 디스크 입니다.





Ⅲ. 윈도우와 디스크 형식

1. 새로운 디스크 형식 -GPT 디스크

우리가 흔히 접해보지 못한 디스크 형식으로 전통적인 IBM PC 의 바이오스(BIOS) 가 아닌 EFI 라는 좀 더 개선된 펌웨어에서 사용하는 디스크 형식으로 GPT 란 MBR 과 마찬가지로 디스크에 대한 정보를 담고 있는 영역입니다.

원래 EFI 에 포함되어 개발되어진 새로운 기술이지만 우리가 일반적으로 사용하는 BIOS 기반의 PC 에서도 사용할 수 있습니다.[물론 윈도우가 이를 지원 해 주어야 합니다. 윈도우 XP 64비트 버전부터 지원합니다. 윈도우 XP 32비트 버전에서는 지원하지 않습니다.] 다만 일반적인 BIOS 시스템에서 GPT 디스크에 설치된 윈도우로 부팅하는 것은 불가능합니다. GPT 디스크를 통해 부팅을 하기 위해선 BIOS 가 아닌 EFI(UEFI) 시스템이 필요하며 이를 윈도우에서도 지원을 해주어야 합니다. 그리하여 현재 이를 지원하는 메인보드와 윈도우를 함께 사용하는 환경이 아닌 보통의 환경에서 GPT 디스크는 데이터 저장용으로만 사용되고 있습니다.

이러한 GPT 디스크는 MBR 의 단점을 극복하기 위해 16 Byte 였던 파티션 엔트리의 크기를 128 Byte 로 확장하였고 파티션 테이블의 크기는 16,384 Byte 로 확장하였습니다. 그리하여 16,384 / 128 = 128 개로 하나의 디스크에 최대 128 개의 파티션을 생성할 수 있습니다.

또한 MBR 디스크에서 는 CHS 주소 체계를 사용하였던 것에 반해 GPT 디스크는 LBA(Logical-Block-Addressing) 주소 체계를 사용하고 있습니다.

결정적으로 MBR 디스크가 주소 체계에 32 bit 를 사용하여 단일 디스크의 최대 인식 용량이 2 TB 였던 것에 반해 GPT 디스크는 주소 체계를 64 bit 로 확장하여 최대 18 EB(엑사바이트, 1 EB = 1,048,576 TB) 까지 지원을 하고 있습니다. 이론적으로는 최대 264 X 512 = 8 ZB(제타바이트, 1 ZB = 1024 EB) (9.444732966E21 Byte) 까지 지원을 할 수 있지만 18 EB 로 제한을 하고 있습니다.

한 가지 우리가 XP 가 아닌 비스타 이상의 OS 에서 파티션을 생성하게 되면 디스크의 가장 처음 부분과 마지막 부분에 1MB 의 여유 공간을 남겨두게 되는데 이는 MBR 디스크를 GPT 디스크로 변환할 때를 대비한 것 입니다.(왼쪽 그림의 GPT 영역을 참고) GPT 디스크에서는 MBR 과 달리 GPT 를 디스크의 처음 부분과 이에 대한 클론을 디스크의 마지막 부분의 1MB 영역에도 함께 준비하고 있습니다.

[주의] 한 가지 주의해야 할 점이 MBR 디스크와 GPT 디스크를 서로 상호 변환 할 때에는 디스크의 모든 파티션을 제거한 상태에서만 변환 할 수 있다는 사실입니다. 그러니 디스크의 형식을 변환하고자 한다면 디스크에 저장된 데이터를 백업할 수단을 마련해 놓아야합니다.



2. GPT 디스크의 파티션 테이블 구조

GPT 디스크도 MBR 을 가지고 있습니다. LBA 0 에 위치하고 있는 Protective MBR 이라는 것으로 이 MBR 은 GPT 디스크를 인식하지 못하고 MBR 디스크만을 인식하는 시스템이나 프로그램에서 해당 디스크가 비어 있는 것으로 착각하고 GPT 디스크를 수정하는 것을 방지하기 위해 해당 디스크가 비어있지 않다는 것을 알려주는 역할을 하고 있습니다.

LBA 1 에는 Primary GPT Header 가 위치하며 그 내용은 아래와 같습니다.

Partition table format
Offset Length Contents
0 8 bytes Signature ("EFI PART", 45 46 49 20 50 41 52 54)
8 4 bytes Revision (For version 1.0, the value is 00 00 01 00)
12 4 bytes Header size (in bytes, usually 5C 00 00 00 meaning 92 bytes)
16 4 bytes CRC32 of header (0 to header size), with this field zeroed during calculation
20 4 bytes reserved, must be zero
24 8 bytes Current LBA (location of this header copy)
32 8 bytes Backup LBA (location of the other header copy)
40 8 bytes First usable LBA for partitions (primary partition table last LBA + 1)
48 8 bytes Last usable LBA (secondary partition table first LBA - 1)
56 16 bytes Disk GUID (also referred as UUID on UNIXes)
72 8 bytes Partition entries starting LBA (always 2 in primary copy)
80 4 bytes Number of partition entries
84 4 bytes Size of a partition entry (usually 128)
88 4 bytes CRC32 of partition array
92 * reserved, must be zeroes for the rest of the block (420 bytes for a 512-byte LBA)
LBA Size TOTAL



LBA 2~33 에는 128 Byte 의 크기를 가지는 파티션 엔트리 128 개가 위치하고 있습니다. 각 파티션 엔트리의 구조는 아래와 같습니다.

GUID partition entry format
Offset Length Contents
0 16 bytes Partition type GUID
16 16 bytes Unique partition GUID
32 8 bytes First LBA (little-endian)
40 8 bytes Last LBA (inclusive, usually odd)
48 8 bytes Attribute flags (e.g. bit 60 denotes read-only)
56 72 bytes Partition name (36 UTF-16LE code units)
128 TOTAL



GPT 디스크에 대한 정보는 여기까지 입니다. 아직 범용적으로 사용되는 디스크 형식이 아니기 때문에 아직까진 쉽게 이해할 수 있는 관련 자료가 다소 부족한 편 입니다. 다만 디스크에 파티션을 나누고 활용하는 방법은 MBR 디스크와 다르지 않기 때문에 실제로 활용하는 데에는 별 어려움이 없을 것 입니다.





Ⅳ. 부록

1. MBR 디스크와 GPT 디스크의 비교

마지막으로 MBR 디스크와 GPT 디스크의 차이점에 대한 마이크로소프트 테크넷의 표를 보도록 하겠습니다. 내용은 중요한 부분만 추렸습니다. 또한 윈도우 XP 의 Resource Kit 에서 발췌한 표이기 때문에 비스타와 세븐에 관한 정보는 빠져있습니다. 비스타부터는 GPT 디스크를 기본적으로 지원하기 때문에 그 이후의 운영체제인 비스타, Server 2008, 세븐, Server 2008 R2 에서는 모두 지원하는 것으로 생각하시면 됩니다.

Comparison of MBR and GPT Disks

Characteristic

MBR Disk

GPT Disk

Number of partitions on basic disks

Supports up to either:

  • Four primary partitions per disk, or
  • Three primary partitions and an extended partition with unlimited logical drives.

Supports up to 128 partitions.

Compatible operating systems

Can be read by:

  • Microsoft MS-DOS
  • Microsoft Windows 95
  • Microsoft Windows 98
  • Microsoft Windows Me
  • Windows NT, all versions
  • Windows 2000, all versions
  • Windows XP

Can be read by Windows XP Professional x64 Edition and Windows Server 2003 Service Pack 1.

Maximum size of basic volumes

Supports basic volumes up to 2 terabytes.

Supports basic volumes up to 18 exabytes.

Maximum size of dynamic volumes

Supports the maximum volume size of the file system used to format the volume.

Supports the maximum volume size of the file system used to format the volume.

Partition tables (copies)

Contains one copy of the partition table.

Contains primary and backup partition tables for redundancy and checksum fields for improved partition structure integrity.




2. 참고 자료