Next Previous Contents

## 14. Расширенные и логические разделы

Ниже можно видеть структуру MBR (сектор 0): код загрузчика, затем 4 входа таблицы разделов по 16 байт каждый, затем специальная "подпись" AA55. Элементы таблицы разделов с типом 5 или F или 85 (в шестнадцатиричной системе) имеют специальное значение: они описывают extended (расширенные) разделы : куски диска, которые разбиты на несколько логических разделов.Т.е. расширенные разделы сами по себе не используются они могут лишь хранить логические разделы. Важно только положение первого сектора расширенного раздела. Этот первый сектор хранит таблицу разделов с четырьмя входами: один используется для логического раздела, другой для еще одного расширенного раздела,а два не используются. Таким образом можно получить цепочку из таблиц разделов, где первая описывает три основных раздела,а каждая следующая один логический раздел и положение следующей таблицы.

Очень важно понимать это: Когда люди делают что то глупое во время разбиения диска, их волнует вопрос - сохранились ли их данные ? Обычно данные остаются на своем месте, исключения составляют сектора, которые перекрываются расширенными таблицами разделов - они теряются на всегда.

Программа 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

>     #

> `

Во время разбиения диска могут быть созданы плохие таблицы разделов. Многие ядра зацикливаются если какой либо расширенный раздел указывает сам на себя,или на более ранний раздел в цепочке. Также возможно иметь ссылки на два расширенных раздела в одной таблице, т.е. она раздваивается.. (Это например случается когда fdisk не распознает каждую из 5, F, 85 как расширенный раздел, и создает 5 следом за F.) Не одна из стандартных fdisk програм не может справиться с такой ситуацией,вам потребуется очень много времени и сил чтобы пофиксить эту проблему. Ядро Линукс воспринимает такое раздвоение нормально. То есть вы можете иметь две цепи логических разделов. Иногда это полезно - например можно использовать тип 5 (виден DOS) и тип 85(невиден DOS),так что DOS fdisk не "упадет" из за логических разделов за пределами 1024 цилиндра

Next Previous Contents