Файлы устройств


В главе 3 мы коротко коснулись файлов устройств, а теперь рассмотрим их более подробно. Файлы устройств — это специальные файлы, представляющие аппаратные средства системы. Они служат логическим интерфейсом между пользовательскими программами с одной стороны и драйверами устройств или физическими устройствами — с другой. Выполняя команду с файлом устройств, посылая информацию файлу устройств или читая данные из него, ядро выполняет те или иные операции с физическим устройством. Для разных устройств эти операции могут существенно различаться, — в конце концов, запись данных на диск дает совсем другие результаты, нежели передача данных звуковой карте. Файлы устройств можно найти в каталоге /dev.

Чтобы приступить к работе с диском или дисковыми разделами, необходимо знать имя устройства или имя файла, который представляет это устройство. Как правило, они основаны на имени драйвера соответствующего аппаратного средства, а имена драйверов устройств, в свою очередь, основаны на названии микросхемы, применяемой в устройстве, а не на его назначении.

В табл. 8.1 приводятся наиболее типичные файлы устройств дисковых накопителей. Более подробное их описание вы найдете в соответствующих страницах руководства.

Таблица 8.1. Дисковые накопители и типы

Файл устройства Страница руководства Описание
/dev/fd* fdc(4) Накопители на гибких магнитных дисках
/dev/acd* acd(4) CD-ROM с интерфейсом IDE
/dev/ad* ad(4) Жесткие диски АТА и SATA и разделы
/dev/cd* cd(4) CD-ROM с интерфейсом SCSI
/dev/da* da(4) Жесткие диски с интерфейсом SCSI или SAS, устройства хранения данных с интерфейсом USB и flash-накопители

Для отдельных дисков, подключенных к аппаратным контроллерам RAID, файлы устройств не используются. Вместо этого контроллеры RAID представляют по виртуальному диску для каждого контейнера RAID, для чего к имени драйвера RAID добавляется имя устройства. Например, драйвер amr(4) представляет такие виртуальные диски, как /dev/amrd*. Для работы с некоторыми контроллерами RAID используется промежуточный уровень абстракции cam(4), и в этом случае диски отображаются как устройства /dev/da*.

Жесткие диски и разделы

В главе 2 мы уже рассматривали понятие раздела, теперь мы посмотрим на разделы с точки зрения драйвера устройства. Первый диск АТА, подключенный к первому контроллеру АТА, называется /dev/ad0. За ним следуют диски /dev/ad1, /dev/ad2 и т. д. Подразделы на каждом диске начинаются с этого имени. К данному названию добавляются дополнительные символы, например /dev/ad0s1b. Диск можно считать одним целым, но в каталоге /dev, как правило, есть масса файлов подразделов, начинающихся с /dev/ad0:

# ls /dev/ad*
/dev/ad0   /dev/ad0s1a /dev/ad0s1c /dev/ad0s1e
/dev/ad0s1 /dev/ad0s1b /dev/ad0s1d /dev/ad0s1f

Итак, что означают все эти подразделы? Вспомните, как вы распределяли дисковое пространство для FreeBSD. Если вы следовали рекомендациям этой книги, весь диск отдан FreeBSD. А может быть, вы создали второй раздел для другой операционной системы или даже разбили диск на две секции FreeBSD. В мире Microsoft и Linux эти секции называются разделами (partitions), а на территории FreeBSD — участками (slices). Символы s1 в предыдущем листинге представляют большие разделы, или участки. Диск ad0, представленный в листинге, имеет один участок ad0s1, который разбит на подразделы, отмеченные символами.

Во FreeBSD раздел — это сегмент внутри участка. Разделы внутри участка создаются во время установки системы. Каждый раздел имеет уникальный файл устройства, название которого образуется добавлением уникального символа к названию файла участка. Например, разделы внутри участка /dev/ad0s1 представлены как /dev/ad0s1a, /dev/ad0s1b, /dev/ad0s1c и т. д. Каждому разделу, создаваемому во время установки системы (/usr, /var и другим), назначается соответствующий файл устройства.

Название файлу устройства, соответствующего тому или иному разделу, можно давать произвольным образом с некоторыми ограничениями. Традиционно файл устройства, имя которого заканчивается на a (в нашем примере /dev/ad0s1a), — это корневой раздел (root), а файл с замыкающим символом b (/dev/ad0s1b) предназначен для раздела свопинга. Метка c служит признаком всего участка, от начала до конца, а символы от d до h можно назначить любому разделу по своему усмотрению. В одном участке может быть не больше восьми разделов, а на одном диске — не больше четырех участков. Например, файл устройства /dev/ad1s1a соответствует диску с номером 0, участку 1, разделу 1 и, возможно, файловой системе root. Файл устройства /dev/ad1s2b указывает на диск 2 и, возможно, участок свопинга.

Для приводов, отличных от АТА, вместо /dev/ad следует подставить соответствующие названия устройств.

Нумерация дисков АТА

То, что первый диск АТА будет называться /dev/ad0, вовсе не означает, что у вас обязательно должен быть установлен жесткий диск /dev/ad0. В моем ноутбуке жесткий диск имеет имя /dev/ad4, потому что он подключен не к встроенному контроллеру АТА, а к контроллеру RAID. Жесткие диски SCSI и SAS нумеруются немного иначе — первый диск получает название /dev/da0 независимо от того, куда он подключен. При необходимости можно заставить систему нумеровать жесткие диски АТА, начиная с 0, для этого достаточно удалить параметр ядра ATA_STATIC_ID.

Комментарии запрещены.