다음 이전 차례

13. 확장 및 논리 파티션

위에서 우리는 MBR(Master Boot Record)(sector 0)의 구조에 대해 보았다. 부트 로더 코드 이후에 위치하는 4개의 파티션 테이블 항목은 각각 16바이트 를 차지하고 있다. 그리고 마지막으로 AA55 값으로 기록되어 있다. 파티션 테이블 항목중 5번이나 F 또는 85(hex) 유형의 파티션은 특별한 의미를 갖는다. 이러한 유형은 확장(extended) 파티션을 의미한다. 이것은 여러개의 논리(logical) 파티션으로 재 분할됨을 가리키는 표시이다. (그러므로, 확장 파티션은 하나의 큰 상자일 뿐이며, 이것 자체적으로 사용되지 않고 확장 파티션 내부에 논리 파티션을 생성하여 사용한다.) 단지 확장 파티션의 첫번째 섹터에 대한 위치가 중요할 뿐이다. 첫번째 섹터는 4개의 항목을 갖는 파티션 테이블을 포함한다 : 하나의 논리 파티션과 하나의 확장 파티션 그리고 두개의 미사용 파티션으로 구성된다. 이러한 방식으로 하나의 확장 파티션은 디스크상에 흩어져 연결된 파티션 테이블 섹터를 갖는다.

이것을 이해하는 것을 매우 중요하다.: 어떤 사람이 디스크를 파티션 할 때 실수를 한 경우, 데이터가 아직 존재하는 알고 싶을 것이다. 결론은 일반적으로 존재한다는 것이다. 그러나 논리 파티션이 생성되고 나서 논리 파티션의 정보를 나타내는 파티션 테이블 섹터가 이러한 논리 파티션들의 시작에 기록된 다면 이전에 있던 데이터를 잃어 버리게 된다.

sfdisk 프로그램은 전체적인 연결을 보여 줄 것이다.


  # sfdisk -l -x /dev/hda

  Disk /dev/hda: 16 heads, 63 sectors, 33483 cylinders
  Units = cylinders of 516096 bytes, blocks of 1024 bytes, counting from 0

     Device Boot Start     End   #cyls   #blocks   Id  System
  /dev/hda1          0+    101     102-    51376+  83  Linux
  /dev/hda2        102    2133    2032   1024128   83  Linux
  /dev/hda3       2134   33482   31349  15799896    5  Extended
  /dev/hda4          0       -       0         0    0  Empty

  /dev/hda5       2134+   6197    4064-  2048224+  83  Linux
      -           6198   10261    4064   2048256    5  Extended
      -           2134    2133       0         0    0  Empty
      -           2134    2133       0         0    0  Empty

  /dev/hda6       6198+  10261    4064-  2048224+  83  Linux
      -          10262   16357    6096   3072384    5  Extended
      -           6198    6197       0         0    0  Empty
      -           6198    6197       0         0    0  Empty
  ...
  /dev/hda10     30581+  33482    2902-  1462576+  83  Linux
      -          30581   30580       0         0    0  Empty
      -          30581   30580       0         0    0  Empty
      -          30581   30580       0         0    0  Empty

  #

만약 비정상적인 파티션 테이블을 작성할 수 있다면 확장 파티션이 자신을 다시 가리키거나 파티션 연결의 초기를 가리키도록 된다면 많은 커널이 무한 순환에 빠지게 될 것이다.

두개의 확장 파티션을 이러한 파티션 테이블 섹터중 하나에 만들어서 파티션 테이블 연결을 만드는 것은 가능하다. (이러한 경우는 5, F, 85 를 확장 파티션으로 인식하지 못하는 fdisk 프로그램에서 F 다음 파티션으로 5를 생성하는 경우 발생할 수 있다.) 이러한 상황을 처리할 수 있는 표준적인 fdisk type 프로그램은 없다. 이것을 고치기 위해서는 약간의 수작업이 필요하다.

리눅스 커널은 가장 바깥쪽 레벨에서 포크를 받아 들일 것이다. 다시 말하며, 두개의 논리 파티션 연결을 만들 수 있다. 때로는 이것이 유용하기도 하다. 예를 들어 하나는 5번 유형을 사용할 수 있고, DOS에서 사용된다. 그리고 다른 유형 85는 DOS에서는 사용되지 않으므로 DOS FDISK 는 1024개의 실린터를 지나치는 논리 파티션 때문에 문제시 되지 않을 것이다.


다음 이전 차례