Организация UNIX-систем и ОС Solaris

Файлы разделов дисков в Solaris


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

Жесткий диск принято делить на разделы (в Solaris их называют slices). Раздел - это группа расположенных рядом цилиндров. Смысл разделения диска на разделы состоит в том, чтобы:

  • минимизировать расстояние, которое потребуется головке диска для считывания фрагментов одного файла;
  • разделить данные разных типов, чтобы обезопасить системные данные от возможной порчи пользовательскими программами;
  • зарезервировать под системные нужды достаточное пространство на диске так, чтобы несистемные файлы не могли его занять.

В Solaris на одном физическом жестком диске может быть до восьми разделов, которые принято нумеровать цифрами от 0 до 7.

Каждому разделу соответствует свой файл устройства в каталоге /dev/dsk. Пространство под разделы выделяется цилиндрами. Раздел однозначно определяется номерами начального и конечного цилиндров. В Solaris принята следующая концепция именования таких файлов устройств: в имени устройства учитываются номер контроллера, SCSI ID (target number), номер диска (LUN - Logical Unit Number) и номер раздела на диске (см. рис. 5.1). Если это диск IDE, то роль SCSI ID играет пара master/slave (соответственно, 0/1). Для встроенных дисков SCSI и любых дисков IDE номер диска равен 0. Это иллюстрирует рис. 5.2.


Рис. 5.1.  Формирование имени устройства - раздела SCSI-диска


Рис. 5.2.  Конфигурация с IDE-устройствами

Так, для системы с дисками SCSI /dev/dsk/c0t0d0s0 будет указывать на нулевой контроллер SCSI (c0), диск со SCSI ID 0 (t0), диск номер 0 на этом SCSI контроллере (d0), нулевой раздел на этом диске (s0).

Как показано на рис. 5.2, при создании файла устройства для раздела, который находится на IDE-диске, в названии файла учитываются номер адаптера IDE (как правило, в компьютерах x86 используют системные платы с одним адаптером, который поддерживает два канала IDE), номер канала (он кодируется как SCSI ID, как показано в табл. 5.1), номер диска (всегда d0) и номер раздела (первый раздел на диске - s0 и т.д., подобно разделам на SCSI-дисках).

Таблица 5.1. Соответствие между SCSI ID и позицией IDE-диска в подсистеме IDE

Номер диска в подсистеме IDEПозиция диска в подсистеме IDE
0primary master
1primary slave
2secondary master
3secondary slave
<
Сказанное выше об именовании файлов устройств дисков IDE относится к системам на платформе SPARC. На платформе х86 файлы устройств, соответствующие разделам дисков IDE, именуются несколько иначе. Файлы, соответствующие разделам fdisk, обозначаются cNdMpK, где после с идет номер контроллера, после d - номер диска, а после p - номер раздела fdisk. На каждом из разделов fdisk может быть создано несколько подразделов (slices), если этот раздел fdisk является разделом типа Solaris. Любой раздел fdisk имеет свой тип, он указывается в таблице Master Boot Record (MBR), в которой описаны все разделы fdisk-диска.

По умолчанию при установке Solaris на IDE-диск на платформе IA (x86) программа-установщик создает два раздела fdisk - загрузочный (примерно 20 Мб) с программой-загрузчиком и раздел, на котором будут находиться все остальные части системы, а также пользовательские файлы. Первый раздел fdisk имеет тип FAT, а второй - тип Solaris. На втором разделе создаются подразделы (slices). Они именуются по такому же принципу, как и разделы на дисках систем SPARC, но без указания SCSI ID: c0d0s0, c0d0s1 и т.д.

Каждому файлу из каталога /dev/dsk соответствует файл устройства прямого доступа (raw disk) в каталоге /dev/rdsk:

# ls /dev/dsk c0d0p0 c0d0s1 c0d0s15 c0d0s7 c1t0d0p3 c1t0d0s12 c1t0d0s4 c0d0p1 c0d0s10 c0d0s2 c0d0s8 c1t0d0p4 c1t0d0s13 c1t0d0s5 c0d0p2 c0d0s11 c0d0s3 c0d0s9 c1t0d0s0 c1t0d0s14 c1t0d0s6 c0d0p3 c0d0s12 c0d0s4 c1t0d0p0 c1t0d0s1 c1t0d0s15 c1t0d0s7 c0d0p4 c0d0s13 c0d0s5 c1t0d0p1 c1t0d0s10 c1t0d0s2 c1t0d0s8 c0d0s0 c0d0s14 c0d0s6 c1t0d0p2 c1t0d0s11 c1t0d0s3 c1t0d0s9

# ls /dev/rdsk c0d0p0 c0d0s1 c0d0s15 c0d0s7 c1t0d0p3 c1t0d0s12 c1t0d0s4 c0d0p1 c0d0s10 c0d0s2 c0d0s8 c1t0d0p4 c1t0d0s13 c1t0d0s5 c0d0p2 c0d0s11 c0d0s3 c0d0s9 c1t0d0s0 c1t0d0s14 c1t0d0s6 c0d0p3 c0d0s12 c0d0s4 c1t0d0p0 c1t0d0s1 c1t0d0s15 c1t0d0s7 c0d0p4 c0d0s13 c0d0s5 c1t0d0p1 c1t0d0s10 c1t0d0s2 c1t0d0s8 c0d0s0 c0d0s14 c0d0s6 c1t0d0p2 c1t0d0s11 c1t0d0s3 c1t0d0s9

В Solaris принято, что раздел номер 2 (slice 2) представляет собой весь диск, т.е. является репрезентацией всего диска в целом, со всеми его разделами. Иначе говоря, на диске на самом деле может быть создано до 7 разделов, а восьмой (раздел 2) всегда охватывает все эти разделы вместе. Поэтому в разделе 2 нельзя создать файловую систему и записывать туда файлы: он служит для системных надобностей. В частности, в структурах, адресуемых через раздел 2, хранятся сведения о диске в целом: реальный размер, число цилиндров и т.п.

Замечание о разных типах имен устройств можно проиллюстрировать на примере именования разделов диска. Так, разделам SCSI-диска со SCSI ID, равным 6, присоединенным к нулевому контроллеру, будут соответствовать логические имена устройств (разделов диска) от /dev/dsk/c0t6d0s0 до /dev/dsk/c0t6d0s7, физические имена от /devices/pci@1f,0/pci@1,1/scsi@6/sd@0,0:a до /devices/pci@1f,0/pci@1,1/scsi@6/sd@0,0:g. При этом диску в целом будет соответствовать экземплярное имя sd6.


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