디스크의 종류와 용어 4 장 - MBR 디스크와 GPT 디스크 - 기본 디스크 [이동 완료]
이동 완료 2010. 8. 25. 22:47 |이곳은 백업 블로그 입니다. 현재 캐플이 활동 중인 블로그는 CAppleBlog.co.kr 입니다. 최신 정보들은 새로운 블로그에서 확인해 보세요. ^^
- 이곳은 기존 블로그들의 글을 한군데로 모아 놓은 백업 블로그입니다.
- 현재 링크는 대부분 올바르지 않으며 이러한 링크들은 모두 cappleblog.co.kr 로 이동합니다. (※ 링크 주의)
- 블로그와 커뮤니티는 서로 다른 공간입니다.(로그인을 따로 해야합니다.)
- 저는 윈티티(WinTT)이자 신비(ShinB)이며 캐플(CApple)입니다. 편한대로 불러주세요.
윈도우를 설치해서 부팅하는 것 외에는 두 디스크의 차이가 솔직히 없습니다. 이걸 먼저 기억하세요.
윈도우와 디스크 형식
윈도우 7 에서 사용할 수 있는 디스크의 종류에는 크게 MBR 디스크와 GPT 디스크 2 가지 + 기본 디스크와 동적 디스크 2 가지 하여 총 4 가지의 디스크 형식이 있습니다. 그 중에서 먼저 전통적인 BIOS 방식의 시스템에서 사용되는 디스크 형식인 MBR 디스크와 이어서 새롭게 개발된 EFI 방식의 시스템에서 사용되는 디스크 형식인 GPT 디스크로 나누어 집니다. 이러한 MBR 디스크와 GPT 디스크의 차이는 디스크에 관한 정보를 담는데 MBR 을 사용하느냐 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(Master Boot Record) 디스크
우리가 일반적으로 사용하는 전통적인 IBM 호환 PC 의 바이오스(BIOS) 에서 기본적으로 사용하는 디스크 형식입니다. MBR 이란 간략하게 이야기하여 디스크에 대한 정보를 담고 있는 영역입니다.
MBR 과 파티션 테이블의 구조
IBM PC 의 바이오스에는(우리는 흔히 CMOS 셋업을 통해 이를 설정하죠.) 컴퓨터의 하드웨어를 체크하고 부팅할 수 있도록 해주는 작은 프로그램이 설치되어 있습니다. 이 바이오스의 마지막에는 시스템의 첫 번째 하드 디스크의 첫 번째 실린더, 첫 번째 헤드, 첫 번째 섹터로(CHS 0:0:1 시작 지점 - Starting Point) 이동하라는 명령이 포함되어 있죠.
이러한 디스크의 이 시작 지점에 위치한 것이 바로 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, 확장 부트 레코드) 을 통해 이러한 구조적 문제를 해결하고 있습니다.
확장 파티션과 EBR
이러한 파티션 테이블의 구조상 MBR 에서 최대로 생성할 수 있는 파티션의 개수가 네 개 밖에 되지 않기 때문에 MBR 은 파티션 테이블에 기록된 파티션 중 하나를 확장 파티션이라고 명시하고 확장 파티션내에서 다시 MBR 과 비슷한 역할을 하는 EBR 이라는 것을 추가로 생성하고 EBR 을 통해 확장 파티션내에 다시 논리 드라이브라는 파티션을 생성하는 방법을 사용하여 파티션 개수의 한계를 극복하고 있습니다.
http://en.wikipedia.org/wiki/Partition_type
http://www.win.tue.nl/~aeb/partitions/partition_types-1.html
그리하여 MBR 디스크는 파티션 테이블에 생성되는 주 파티션과 확장 파티션, 확장 파티션 내에서 다시 EBR 을 통해 생성되는 논리 드라이브라는 세 가지 종류의 파티션을 가지고 있는 것 입니다. 이러한 주 파티션, 확장 파티션, 논리 드라이브의 구조는 아래의 그림과 같습니다.
출처 - 마이크로소프트 테크넷
EBR 과 논리 드라이브의 구조
확장 파티션의 논리 드라이브에서 추가로 사용되는 EBR 은 MBR 과 거의 흡사한 구조를 가지며 그 구조는 아래와 같습니다.
오프셋[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 은 서로 체인과 같이 연결되어 무한정 확장되는 구조를 가지고 있는 것 입니다. 주 파티션이나 확장 파티션과 같이 디스크의 지정된 특정 영역에 일정 용량의 테이블을 가지고 한정된 엔트리를 통해 구성되는 것과는 다른 구조인 것 입니다.
MBR 디스크 방식의 구조적인 한계
지금까지 MBR 디스크의 구조에 대해서 알아보았습니다. 그런데 MBR 디스크에서는 해결할 수 없는 문제가 하나 있습니다. 바로 CHS(Cylinder-Head-Sector) 주소 체계를 사용하여 디스크에서 인식할 수 있는 주소의 개수가 232 개 뿐이라는 겁니다. 디스크에서 1 섹터는 512 Byte 이므로 MBR 디스크가 인식할 수 있는 디스크의 최대 크기는 512 X 232 = 2 TB(테라바이트) (2.199023256E12 Byte) 밖에 되지 않는다는 것이죠. 이로인해 MBR 디스크에서는 단일 파티션으로 최대 2 TB 까지만 생성하고 사용할 수 있습니다. 이러한 한계를 극복하기 위해 새롭게 내놓은 규격이 바로 확장 펌웨어 인터페이스(EFI)의 GPT 디스크 입니다.
GPT(GUID Partition Table) 디스크
새로운 디스크 형식 -GPT 디스크
우리가 흔히 접해보지 못한 디스크 형식으로 전통적인 IBM PC 의 바이오스(BIOS) 가 아닌 EFI 라는 좀 더 개선된 펌웨어에서 사용하는 디스크 형식으로 GPT 란 MBR 과 마찬가지로 디스크에 대한 정보를 담고 있는 영역입니다.
원래 EFI 에 포함되어 개발되어진 새로운 기술이지만 우리가 일반적으로 사용하는 BIOS 기반의 PC 에서도 사용할 수 있습니다.[물론 윈도우가 이를 지원 해 주어야 합니다. 윈도우 XP x64 버전부터 지원합니다. 윈도우 XP 에서는 지원하지 않습니다.] 다만 일반적인 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 디스크로 변환 할 때에는 데이터의 손실 없이 바로 변환 할 수 있지만 GPT 디스크를 다시 MBR 디스크로 변환하기 위해선 GPT 디스크의 모든 파티션을 제거한 상태에서만 변환 할 수 있다는 사실입니다. 그러니 GPT 디스크를 다시 MBR 디스크로 변환하기 위해선 GPT 디스크에 저장된 데이터를 백업할 수단을 마련해 놓아야합니다.
GPT 디스크의 파티션 테이블 구조
GPT 디스크도 MBR 을 가지고 있습니다. LBA 0 에 위치하고 있는 Protective MBR 이라는 것으로 이 MBR 은 GPT 디스크를 인식하지 못하고 MBR 디스크만을 인식하는 시스템이나 프로그램에서 해당 디스크가 비어 있는 것으로 착각하고 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~34 에는 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 디스크와 다르지 않기 때문에 실제로 활용하는 데에는 별 어려움이 없을 것 입니다.
☞ MBR 디스크와 GPT 디스크의 비교
마지막으로 MBR 디스크와 GPT 디스크의 차이점에 대한 마이크로소프트 테크넷의 표를 보도록 하겠습니다. 내용은 중요한 부분만 추렸습니다. 또한 윈도우 XP 의 Resource Kit 에서 발췌한 표이기 때문에 비스타와 세븐에 관한 정보는 빠져있습니다. 비스타 부터는 GPT 디스크를 기본적으로 지원하기 때문에 그 이후의 운영체제인 비스타, Server 2008, 세븐, Server 2008 R2 에서는 모두 지원하는 것으로 생각하시면 됩니다.
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. |
http://technet.microsoft.com/en-us/library/bb457122.aspx
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