DragonFly. Интермедия: знание через силу. Вопросы номенклатуры

Алексей Федорчук

Как известно, все, имеющееся в POSIX-системах, суть файлы. Не исключение и DragonFly — диски, слайсы и разделы представляются в ней файлами специального типа, которые так и назваются — файлы устройств.

Номенклатура файлов устройств дисков, слайсов и партиций в DragonFly подчиняется определённым правилам правилам: выделяется два типа имён, относящихся к различным видам дисковых интерфейсов:

диски с интерфейсом PATA (он же IDE) именуются /dev/ad# (от ATA Disk, надо полагать);

накопители со всеми прочими интерфейсами — SATA, SCSI/SAS, USB (в том числе внешние винчестеры и, флешки и SD-карточки), получают имена вида /dev/da# (от Direct Access — устройства прямого доступа, изначально эти имена присваивались SCSI-дискам).

Здесь и далее # — порядковый номер устройства, начиная с нуля.

В DragonFly по умолчанию принята так называемая статичная нумерация дисковых накопителей (это можно изменить при перекомпиляции ядра). То есть устройство /dev/da0 всегда будет соответствовать накопителю на первой SATA-линии, /dev/da1 — на второй, а /dev/da5 — на шестой (даже если в промежутке между 2-м и 6-м разъёмом не подключено никакое устройство).

А вот сменные накопители с USB-интерфейсом (флешки и SD-карты), напротив, получают имена с номером, соответствующим порядку подключения, вне зависимости от разъёма. И нумерация их начинается с цифры, следующей за номером самого последнего теоретически возможного внутреннего накопителя. Судя по тому, что в моей настольной (точнее, подстольной) машине встроенный кард-ридер с USB-интерфейсом является устройством с именем /dev/da8, теоретически возможно восемь SATA-устройств — именно столько поддерживается чипсетами AMD A8X.

В DragonFly с некоторых пор поддерживается файловая система устройств devfs в той же реализации, что и во FreeBSD. Поэтому встроенные накопители получают свои имена при старте системы, в подключаемые — в момент «втыкания» в машину, о чём на системную консоль выводится соответствующее сообщение. К слову — автоматическое монтирование накопителей самой по себе DragonFly не поддерживается, но его можно прикрутить посредством механизма HAL (для FreeBSD аналогичный трюк описан здесь, но он применим и в DragonFly).

Статическая нумерация действует и для постепенно почти сошедших со сцены PATA-дисков, и для них помнить про это более важно, поскольку их целесообразно раносить на разные IDE-каналы. И тогда /dev/ad0 всегда будет мастером на 1-м канале, а /dev/ad2 — им же на втором, даже если слейвов в машине нет вообще:

/dev/ad0 	1-й 	Master
/dev/ad1 	1-й 	Slave
/dev/ad2 	2-й 	Master
/dev/ad3 	2-й 	Slave

При установке DragonFly в виртуальной машине обычно эмулируется именно IDE-контроллер. Например, VirtualBox это будут PIIX4 или ICH6. Сообтветственно, виртуальный диск в этом случае будет именоваться по правилам PATA-накопителей — /dev/ad0.

Ещё можно было бы порассуждать о номенклатуре дисков на всякого рода аппаратных и «не очень» аппаратных RAID-контроллеров, но тут базар можно резюмировать очень коротко: «чипсетные» RAID материнских плат (так называемые fake RAID) в DragonFly не поддерживаются от слова «никак» — в отличие от Linux’а, в котором их всё-таки можно (хотя есть сомнения, что нужно) заставить работать. То же самое относится и к устройствам типа OCZ Revo Drive. А матерински с отдельными контроллерами PATA-RAID (вроде Promise или HighPoint) нынче практически вышли из употребления. Что же до «всамделишних» RAID-контроллеров — их цена никак не оправдывается на настольной машине.

В заключение разговора о накопителях — пара слов об OD-приводах (CD/DVD и всех их вариациях): вне зависимости от интерфейса, они не подчиняются правилам именования дисков. Имена соответствующих им файлов всегда будут: /dev/acd# для PATA (от ATAPI CD, нужно полагать) и /dev/cd# для SATA. Нумерация опять же начинается с нуля — и, скорее всего, им же и заканчивается, потому как нынче и одного «сидюшника» в машине много. Внешний OD-привод с интерфейсом USB после подключения обретает имя /dev/cd8 — видимо, опять же с расчётом на того умника, который займёт сидюшниками все восемь существующих и несуществующих разъёмов SATA.

Переходим к номенклатуре слайсов и разделов. Каждый диск в BSD-системах разделяется на слайсы — или размечается как один слайс, потому что, согласно уже говорилось, диски как raw-устройства в BSD-системах нынче не используются.

Слайсам на диске, как обычно, ставятся в соответствие собственные файлы устройств, которые именуются так: /dev/da0s1, /dev/da0s2, /dev/da0s3, /dev/da0s4. Здесь # — это все тот же номер дискового устройства, s символизирует слайс, цифра — порядковый номер оного (обращаю внимание, что слайсы, в отличие от дисков, нумеруются начиная с единицы).

Далее слайсы, используемые в DragonFly, также непременно делятся на разделы, которые маркируются буквами (латинского, конечно же, алфавита). Как уже говорилось, в таблице разметки слайса в этой ОС может быть до 16 разделов, и соответствующием им файлы устройств будут именоваться: /dev/ad0s1a, /dev/ad0s1b, /dev/ad0s1c и так далее, вплоть до /dev/ad0s1p.

Однако не все из теоретически возможных разделов слайса могут быть реально задействованы. Так, файл с именем /dev/ad0s1c соответствует не какому-то разделу, а слайсу вообще — это своего рода аналог Extended-раздела при DOS-разметке. Раздел, которому соответствует файл /dev/ad0s1a, предназначен исключительно для корневой файловой системы, и очевидно, что он может быть только один, сколько бы дисков и слайсов на них не имелось бы в наличии. Назначение же раздела, файл которого именуется /dev/ad0s1b, — служить областью подкачки (своппинга).

Прочие разделы могут нести отдельные ветви файловой иерархии. При необходимости можно подключить и разделы со другого слайса (или слайсов), также от /dev/ad0s2d до /dev/ad0s2p. Так что максимальное число теоретически доступных разделов составляет: 1+(13×4)=53. Да, в BSD-системах традиционно применяется весьма дробная разметка диска. Это свойственно и DragonFly при использовании файловой системы UFS. Однако полагаю, что рассчитанного их количества разделов хватит на все случаи жизни (смайлики по вкусу).

В реальности такого количества устройств, разумеется, не потребуется. Так, при установке DragonFly на файловую систему UFS дисковая разметка по умолчанию (в виртуальной машине) выглядит так:

$ ls -1 /dev/ad*
/dev/ad0
/dev/ad0s1
/dev/ad0s1a
/dev/ad0s1b
/dev/ad0s1d
/dev/ad0s1e
/dev/ad0s1f
/dev/ad0s1g

При использовании файловой системы Hammer всё гораздо проще: диск размечается как один-единственный слайс с разделами под /boot (несущий файловую систему UFS), под swap и под корень файловой иерархии, внутри которого создаются псевдофайловые системы (PFS) под каталоги /var, /usr, /home и всё, что потребуется впредь. Как можно видеть на странице, посвящённой инсталляции, это делается автоматически.

В итоге на моей машине разметка диска под Hammer выглядит следующим образом:

$ ls -1 /dev/da*
/dev/da2
/dev/da2s1
/dev/da2s1a
/dev/da2s1b
/dev/da2s1d

В дальнейшем PFS, в отличие от обычных разделов слайса, могут быть перекроены по потребностям.

Предварение | Интермедия: содержание | Продолжение
Оглавление