Операционные системы - статьи

         

Создание дисковых разделов


Всякий, кто хоть раз устанавливал эту ОС Linux знает, что ATA-диски (SCSI-накопители - тема особая и для большинства пользователей все менее актуальная) в Linux маркируются в соответствии с порядком подключения к IDE-контроллеру: первый диск на первом канале - /dev/hda, второй - /dev/hdb, третий - /dev/hdc, четвертый - /dev/hdd. Эти имена дисков (собственно, не дисков, а файлов соответствующих им устройств) всегда неизменны.

Разделы на дисках маркируются дополнительными цифрами: с hd?1 по hd?4 для первичных разделов и начиная с hd?5 - для логических томов расширенного раздела. Поскольку в Linux принята таблица разделов в стиле MS DOS, последний может присутствовать только в единственном экземпляре, отнимая одно поле в таблице у разделов первичных. На физическом диске теоретически могут сосуществовать три первичных раздела и некоторое количество логических томов, например, hda1-hda3 и hda5-hda8. Ныне это нуждается в коррективах - большинство современных дистрибутивов Linux на базе ядра 2.4.xx задействуют файловую систему devfs, которая предоставляет массу дополнительных возможностей, в частности, избавляет от резервирования имен для отсутствующих в системе устройств, проблем со старшими номерами устройств и многого другого. Однако в ней по умолчанию применяется совершенно иная номенклатура и предусмотрены совершенно иные места для размещения файлов устройств. Так, для файлов любых ATA-накопителей предназначен каталог /dev/ide (в некоторых дистрибутивах файловая система устройств монтируется в каталог /devices, а каталог /dev сохраняется для совместимости). Файлы накопителей на встроенном IDE-контроллере локализуются в подкаталоге /dev/ide/host0. А внутри него есть два подкаталога, соответствующие IDE-каналам - /dev/ide/host/bus0(bus1), каждый из которых опять же может делиться надвое: на каталоги target0 и target1, по количеству подключенных устройств. Внутри каталога target0(1) имеется минимум еще один подкаталог lun0. А уж в нем размещаются непосредственно файлы устройств: disc для всего накопителя, part1, ...
part# для разделов. Таким образом, полное обозначение дискового раздела будет выглядеть как:

/dev/ide/host0/bus0 /target0/lun0/part1

для первого первичного раздела на первом диске первого IDE-канала. Предусмотрен и более краткий способ обращения к файлам устройств - через жесткие ссылки (иные имена для тех же наборов данных). Для файлов дисковых накопителей они собраны в каталоге /dev/discs (для файлов CD-приводов, например, в каталоге /dev/cdrom) с подкаталогами disc0, ... , disc#. И потому к приведенному в качестве примера разделу можно обратиться и так:

/dev/discs/disc0/part1

Наконец, для совместимости со старыми соглашениями в большинстве дистрибутивов поддерживается номенклатура, принятая до внедрения devfs - все то же из примера можно обозвать просто как /dev/hda1.

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

При использовании файловой системы devfs имена файлов создаются только для реально существующих в системе устройств. Поэтому, если в системе имеется только единственное IDE-устройство, скажем, жесткий диск как мастер на первом канале, бесполезно было бы искать файлы устройств с именами, отличными от приведенного в примере - это удобно, но при неаккуратной реализации devfs может создавать сложности. Так, мне встречались дистрибутивы, в которых без дополнительных настроек удавалось смонтировать IDE-Zip только в том случае, если он находился в приводе в момент старта системы.


Содержание раздела