3TB 하드디스크 MBR 파티셔닝
3TB 하드디스크를 MBR 파티셔닝해보았다.

흔히 2TiB를 넘는 하드디스크에는 MBR 파티셔닝을 할 수 없다고 이야기하지만
사실 MBR 파티션테이블에서 각 파티션을 표시하는 구조를 보면
4TiB 이하의 HDD까지는 (파티션 크기 및 위치에 약간의 제약은 있지만) MBR 파티셔닝이 가능해 보인다.

아래 표는 위키백과의 마스터 부트 레코드 페이지에서 가져온 것으로,
주 파티션 하나마다 이런 16바이트 레코드가 하나씩 대응되고,
최대 4개의 주 파티션이 지원되므로 파티션테이블의 크기는 16 * 4 = 64바이트가 된다.

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


각 파티션의 외형을 나타내는 항목은 두 가지 방식으로 표현되는 것을 볼 수 있는데,
하나는 CHS 기반의 정보 (오프셋 0x01과 0x05)이고 또 하나는 LBA 기반의 정보 (오프셋 0x08과 0x0C)이다.

CHS 기반의 정보는 시작위치와 끝위치를 각각 3바이트(24비트)로 표시하도록 하고 있는데
이 방식으로는 단순계산으로도 (섹터크기가 512바이트일 경우) 8GiB 이상의 위치를 표시할 수 없으므로
CHS 방식 파티션 정보는 대용량 파티션을 나타낼때는 이미 무시되고 있다고 봐야 할 것이다.

결국 파티션을 나타내는 실 정보는 LBA 기반의 정보로 지정할 수밖에 없는데
시작위치와 크기를 4바이트(32비트) LBA 주소로 나타내고 있다.
32비트 LBA 주소로 지정할 수 있는 위치나 크기는 (섹터크기가 512바이트일 경우) 2TiB 까지이다.

시작위치와 '끝위치'를 지정하는 것이 아니라 시작위치와 '크기'를 지정하게 되어 있다는 것이 중요한데,
시작위치만 2TiB 이내에 있으면 파티션의 뒷부분은 2TiB 경계를 넘어가도 상관없게 되는 것이다.

즉, 이론상 아래의 제약만 지키면 4TiB 이하의 HDD에 대해서는 MBR 파티션을 쓸 수 있을 것이다.

   - 파티션 시작위치 : 2TiB 이하     (정확히는 2^32 섹터)
   - 파티션 최대크기 : 2TiB - 1섹터 (정확히는 2^32 - 1 섹터)

------

Windows 7의 디스크 관리자에서는 2TiB 넘은 HDD에 대해서는 정상적인 MBR 파티션 작업이 안 되는 것 같았다.
GPT 디스크로 설정하면 3TB 전체 공간에 대해 자유로운 파티션 작업이 가능했지만
MBR 디스크로 변경하면 2TiB 영역 안에서만 파티션을 만들수 있도록 제약이 생겼다.

그래서 우선 리눅스(CentOS-5.9)에 하드디스크를 붙여서 대략 1.9xTB + 0.7xTB 등 두 개의 주파티션으로 구성했다.
두 번째 파티션은 시작위치가 살짝 2TiB 안에 걸치도록 만들었다.
둘 다 NTFS 파티션(id=7)으로 했다.

$ cat 3TB_partitioning.txt
# partition table of /dev/sdc
unit: sectors

/dev/sdc1 : start=     2048, size=4294900000, Id= 7
/dev/sdc2 : start=4294902048, size=1565571120, Id= 7
/dev/sdc3 : start=        0, size=        0, Id= 0
/dev/sdc4 : start=        0, size=        0, Id= 0

$ sudo sfdisk --force /dev/sdc < 3TB_partitioning.txt

이렇게 구성한 HDD를 Windows 7 64-bit 시스템에 붙여보면 아래와 같이 잘 인식된다.
두 파티션을 각각 NTFS로 포맷하고 마운트한 뒤 파일 복사도 해 봤는데 잘 되었다.

역시 Windows 7의 파티셔닝 도구가 불필요한 제약을 두고 있을 뿐
2TiB 넘는 영역이라고 해서 MBR 파티셔닝이 무조건 안 되는 것은 아닌 것이다.



------

그런데, 이 디스크를 XP 32-bit 시스템에 가져다 붙여보면 기대대로 되지 않았다.

PC1 : 
    X58 / ICH10R 시스템을 RAID 모드로 설정하고 Intel RST 11.2.0.1066 드라이버를 설치하여 쓰고 있는데,
    시스템의 장치관리자 및 Intel RST 관리자에는 정상적으로 3TB 디스크가 인식되지만
    디스크관리자에는 3TB 디스크가 아예 나타나지도 않았다.

PC2 :
    G43 / ICH10 시스템의 온보드 88SE6111 콘트롤러에서 지원하는 eSATA 포트가 IDE 모드로 설정된 상태에서
    위의 3TB 디스크를 연결해봤다. 장치관리자에는 정상적으로 3TB 디스크가 인식되지만
    디스크관리자에는 748GB 짜리 디스크로 나타나고 MBR 파티션들도 제대로 인식되지 않았다.

XP에서 인식못하는 GPT 파티셔닝을 한 것도 아니고,
Windows 7에서 잘 동작되는 것을 보면 MBR 파티션이 비정상적인 것도 아닌데, 왜 이러는지 모르겠음.
파티셔닝 작업 자체는 지원이 안 되더라도 정상 MBR 파티션을 인식하고 쓰는 것은 되어야 하지 않을까.
by 시험さま | 2013/07/26 10:41 | 컴퓨터 | 트랙백 | 덧글(2)
트랙백 주소 : http://chanik.egloos.com/tb/3968989
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by Blue at 2016/03/09 14:05
다시 찾았네요 이거 한번 봤다가 까먹었었는데
국내서 유일하게 이렇게 한 글을 이것말고 못 봐서..

애니의 명대사 하나가 참 이럴때 와 닿는듯

네트는 광대하다구..
Commented by 시험さま at 2016/03/10 10:02
이 블로그에 일부러 찾아오시기도 하는군요.
아마도 공각기동대 1편의 대사도 남겨주시고.. 반갑습니다.

글을 다시 읽어보며 생각난 것이 있어 적어둡니다.

전에 많이 쓰이던 하드디스크는 512n (512 Native: 섹터 크기 512B) 방식이였고
요즘 많이 쓰이는 하드디스크는 512e (512 Emulated: 물리섹터 4KB, 논리섹터 512B) 입니다.
내부적으로는 4KB 단위의 섹터를 쓰지만 기존 소프트웨어들과의 호환성 문제를 최소화하기 위해
외부에는 512B 섹터를 쓰는 척 흉내를 내 주는 과도기적인 방식입니다.

그런데 흉내를 내주다보니 부작용도 있습니다.
논리섹터 단위에만 의존하지 말고 물리섹터 크기를 고려하여 파티셔닝을 해야만 제 성능이 나오는데
소프트웨어들이 모두 그런 고려를 해 주는 것이 아니라서 생기곤 하는 성능상 부작용입니다.

앞으로는 내/외부적으로 4KB 섹터를 쓰는 4Kn (4K Native) 방식의 하드디스크들이 나오겠죠.
이 경우엔 4TB가 아니라 32TB 하드디스크에도 MBR 파티셔닝이 가능할 것 같습니다.
한 파티션의 최대크기는 16TB가 될 테니, 16TB 디스크는 별 지장없이 쓸 수 있을 것이고
32TB 디스크는 파티션 위치만 좀 신경쓰면 되지 않을까 싶습니다.

굳이 억지로 과거 방식을 고수할 필요는 없지만
상황에 따라서는 어쩔 수 없이 오래된 방식을 선택해야 하는 경우가 생길 수도 있으니
경계선을 알아두면 언제고 한 번 쯤 요긴할 지도 모르죠..

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >