윈도우 비스타 이상 7, 8 에서 사용할 수 있는 디스크의 종류에는 크게 MBR 디스크와 GPT 디스크 2 가지 + 기본 디스크와 동적 디스크 2 가지 하여 총 4 가지의 디스크 형식이 있습니다. 그 중에서 먼저 전통적인 BIOS 방식의 시스템에서 사용되는 디스크 형식인 MBR 디스크와 이어서 새롭게 개발된 EFI 방식의 시스템에서 사용되는 디스크 형식인 GPT 디스크로 나누어 집니다. 이러한 MBR 디스크와 GPT 디스크의 차이는 디스크에 관한 정보를 담는데 MBR 을 사용하느냐 GPT 를 사용하느냐에 따라 나누어지는 것 입니다.
※ 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 과 파티션 테이블의 구조
이러한 디스크의 이 시작 지점에 위치한 것이 바로 MBR 입니다. 정확하게 디스크의 시작 지점에 512 Byte 의 크기를 가지고 있습니다. 이러한 MBR 은 크게 부팅에 관한 정보를 담고 있는 440 Byte 의 Master Boot Code 영역과 파티션에 관한 정보를 담고 있는 64 Byte 의 Partition Table 영역으로 나누어집니다. 아래는 이러한 MBR 의 구조를 기술한 자세한 표 입니다.
주소 | 설명 | 크기 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 크기의 파티션 엔트리는 아래와 같은 구조를 가지고 있습니다.
오프셋 | 필드 길이 | 설명 |
---|---|---|
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
http://en.wikipedia.org/wiki/Partition_type
http://www.win.tue.nl/~aeb/partitions/partition_types-1.html
그리하여 MBR 디스크는 파티션 테이블에 생성되는 주 파티션과 확장 파티션, 확장 파티션 내에서 다시 EBR 을 통해 생성되는 논리 드라이브라는 세 가지 종류의 파티션을 가지고 있는 것 입니다. 이러한 주 파티션, 확장 파티션, 논리 드라이브의 구조는 아래의 그림과 같습니다.
출처 - 마이크로소프트 테크넷
3.EBR 과 논리 드라이브의 구조
오프셋[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 디스크의 이러한 한계를 극복하고 여러가지 컴퓨팅 환경의 변화에 대응하기 위해 새롭게 내놓은 규격이 바로 확장 펌웨어 인터페이스(EFI)의 GPT 디스크 입니다.
Ⅲ. 윈도우와 디스크 형식
1. 새로운 디스크 형식 -GPT 디스크
원래 EFI 에 포함되어 개발되어진 새로운 기술이지만 우리가 일반적으로 사용하는 BIOS 기반의 PC 에서도 사용할 수 있습니다.[물론 윈도우가 이를 지원 해 주어야 합니다. 윈도우 XP 64비트 버전부터 지원합니다. 윈도우 XP 32비트 버전에서는 지원하지 않습니다.] 다만 일반적인 BIOS 시스템에서 GPT 디스크에 설치된 윈도우로 부팅하는 것은 불가능합니다. GPT 디스크를 통해 부팅을 하기 위해선 BIOS 가 아닌 EFI(UEFI) 시스템이 필요하며 이를 윈도우에서도 지원을 해주어야 합니다. 그리하여 현재 이를 지원하는 메인보드와 윈도우를 함께 사용하는 환경이 아닌 보통의 환경에서 GPT 디스크는 데이터 저장용으로만 사용되고 있습니다.
또한 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 영역에도 함께 준비하고 있습니다.
2. GPT 디스크의 파티션 테이블 구조
LBA 1 에는 Primary GPT Header 가 위치하며 그 내용은 아래와 같습니다.
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 개가 위치하고 있습니다. 각 파티션 엔트리의 구조는 아래와 같습니다.
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 디스크의 비교
Characteristic |
MBR Disk |
GPT Disk |
---|---|---|
Number of partitions on basic disks |
Supports up to either:
|
Supports up to 128 partitions. |
Compatible operating systems |
Can be read by:
|
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. 참고 자료
http://en.wikipedia.org/wiki/Master_boot_record
http://en.wikipedia.org/wiki/Extended_boot_record
http://en.wikipedia.org/wiki/Partition_type
http://www.win.tue.nl/~aeb/partitions/partition_types-1.html
http://en.wikipedia.org/wiki/GUID_Partition_Table