BSD-стиль разметки

Совершенно иначе выглядит BSD-стиль разметки (BSD Label), используемый во FreeBSD, DragonFlyBSD, Net- и OpenBSD. Здесь также может быть использована BIOS-таблица, заполнение которой создаст четыре первичных раздела. В терминологии FreeBSD они именуются слайсами (slices -- наиболее точным переводом будет "отрезки"), чтобы отличать их от собственно разделов (partitions) BSD-разметки внутри слайсов.

Если одному или нескольким из слайсов будет присвоен идентификатор BSD-системы -- 165 в десятичном исчислении или a5 в шестнадцатеричном (как уже говорилось, тип называется 4.2BSD), то в его начальный блок запишется собственно BSD-таблица разделов (BSD Label). В соответствие с её форматом, каждый слайс с ID 165 абсолютно равноправен и может быть поделен на логические разделы (собственно partitions, в терминологии FreeBSD, именуемые в остальных BSD-системах подразделами -- subpartitions).

Для разделов в BSD-таблице предусмотрено восемь (FreeBSD) или шестнадцать (DragonFlyBSD) записей. Соответствующие им разделы номенклатурно маркируются литерами -- от a до h (или -- до p в случае с DragonFly). То есть таких логических разделов, казалось бы, может быть создано 8 (или, соответственно, 16). Однако практически это не совсем так (вернее, совсем не так).

Начать с того, что одна из записей (третья по счету, маркируемая литерой c) резервируется для описания всего слайса в целом. Далее, первая запись таблицы, отводится для описания корневого раздела файловой системы. А очевидно, что на конкретной локальной машине корневой раздел данной ОС может быть только один, вне зависимости от количества дисковых разделов и даже физических дисков.

Наконец, вторая запись, маркируемая литерой b, предназначена исключительно для описания раздела подкачки (swap-раздела), который, во-первых, не может содержать данные, и во-вторых, является единственным на весь диск (ясно, что создавать по своп-разделу в каждом слайсе бессмысленно, хотя при наличии двух физических дисков поделить между ними пространство подкачки -- идея вполне здоровая). В итоге на четырёх слайсах физического диска средствами FreeBSD может быть создано 22 раздела -- 1 корневой, один раздел подкачки и 20 разделов для хранения данных. Максимальное же количество разделов в случае с DragonFlyBSD предлагается подсчитать заинтересованным лицам.

Практически, однако, так никто, насколько я знаю, не делает. Создание слайсов преследует своей целью разместить на диске более чем одну операционку и сохранить возможность обмена данными между ними (теоретически к BSD-разделам можно обращаться из Linux'а, если пересобрать его ядро должным образом; хотя обратная процедура -- обращение к Linux-разделу из BSD-системы, -- гораздо проще).

Если же весь наличествующий диск планируется отдать на растерзание какой-либо BSD-системе, то проще создать один-единственный слайс на (почти) весь его объем, оставив записи в BIOS-таблице для остальных неиспользованными. Ну а семи (и, тем более, 15) позиций BSD-таблицы, как мы увидим на страницах о стратегии и тактике разметки, обычно достаточно для обособления всех необходимых ветвей файловой системы. Впрочем, в ряде случаев целесообразно и разнесение разделов по двум слайсам, но -- не более.

Разметка диска, использующая записи в BIOS-таблице первого блока, называется разметкой в режиме совместимости. Вне зависимости от того, создаётся ли один слайс для BSD-системы или несколько отдельных -- для каждой операционки, в режиме совместимости в начале диска резервируется пространство в размере 63 блоков (всего около 30 Кбайт), в котором не только сохраняется в неприкосновенности "умолчальный" MBR, но и остаётся место для записи кода какого-либо стороннего загрузчика. В итоге диск будет доступным для других операционных систем, по крайней мере теоретически.

Однако использование режима совместимости и BIOS-таблицы разделов во FreeBSD не является обязательным. Вполне допустимо записать в MBR, вместо таблицы BIOS, непосредственно BSD-таблицу разделов. В этом случае понятно, что слайсов как таковых не возникнет, а все дисковое пространство представит собой как бы один слайс, и может быть разбито на BSD-партиции по тем же правилам, что и слайс отдельный. И тут становится ясной необходимость резервирования третьего поля BSD-таблицы -- именно в ней и описывается весь наш диск, целиком отведённый под BSD-систему.

Такое обращение с диском именуется режимом эксклюзивного использования, или Dangerously Dedicated. Вопреки названию, в нем не таится никакой опасности ни для данных пользователя, ни для его здоровья. А единственная подстерегающая его опасность -- это то, что диск в эксклюзивном режиме не будет опознан никакой другой операционной системой, установленной на данном компьютере (обращению к диску по сети он препятствий не составит). Однако это -- чисто теоретическое неудобство, потому что ни одна из известных мне операционок все равно не умеет толком работать с BSD-разделами и файловой системой FreeBSD (особенно современной -- UFS2). А, скажем, при наличии на другом физическом диске мультизагрузчика GRUB, FreeBSD с "эксклюзивного" диска вполне может быть им загружена.

В документации по FreeBSD встречаются указания, что "эксклюзивные" диски иногда не могут быть загрузочными, вероятно, потому, что BIOS не сможет опознать нестандартные записи в MBR. Однако, видимо, это относится к каким-либо старым версиям BIOS -- мне с таким сталкиваться не приходилось, хотя я часто прибегал к эксклюзивному режиму при возможности отдать под FreeBSD целый физический диск.

Тем не менее, в документах проекта FreeBSD всегда подчёркивается, что эксклюзивный режим -- в частности, из-за грошовой экономии дискового пространства, -- следует использовать лишь в исключительных случаях. Один из резонов к такому использованию -- несоответствие "геометрии" диска, видимой из BIOS, и того представления о ней, которое складывается у FreeBSD.

Схема разметки диска в BSD-стиле принята и в других ОС этого семейства, с той разницей, что термин слайс ни в OpenBSD, ни в NetBSD не применяется. А в NetBSD, кроме литеры c, предназначенной для описания всего диска, резервируется еще и литера d -- она также предназначается для описания первичного раздела целиком.

В ОС BSD-семейства может быть иным и формат таблицы разделов слайса. В частности, в DragonFlyBSD он позволяет разделить слайс не на 8, как во FreeBSD, а на 16 логических разделов. Впрочем, и в текущей версии FreeBSD предельное число разделов на один слайс увеличено, хотя отражения в официальной документации это пока не нашло. Да и штатными средствами её инсталлятора выделить более восьми разделов внутри слайса не получается.


Теги: , ,