Привязка устройств


Диски с интерфейсом SCSI не всегда включаются в одном и том же порядке, но нумерация устройств SCSI в системе FreeBSD соответствует порядку, в каком они подключены к шине SCSI. Кроме того, если изменить порядок подключения устройств к шине SCSI, это приведет к изменению порядка, в каком они будут опрашиваться. Диск, который имел порядковый номер 0 при установке FreeBSD, после добавления нового диска может получить номер 1. Такое изменение может привести к тому, что разделы будут монтироваться в неверные точки монтирования, и может даже вызвать повреждение данных. Похожая проблема может возникнуть при добавлении нового контроллера SCSI, так как в этом случае произойдет переупорядочение шин SCSI! Например, устройство, имевшее имя /dev/da0 при установке FreeBSD, может превратиться в устройство /dev/da1 или даже /dev/da17 после подключения нового накопителя на магнитных лентах. Это приведет к тому, что разделы будут монтированы в неверные точки монтирования.

Во избежание этих трудностей порядок нумерации дисков можно жестко закодировать в ядре. Процесс, избавляющий от подобной путаницы, называется привязкой (wiring down) устройств SCSI. Чтобы выполнить привязку устройств, надо знать SCSI ID, номер шины SCSI и LUN (если применяется) каждого устройства в цепочке SCSI, доступных в /var/run/dmesg.boot. Например, в моей тестовой системе есть следующие записи dmesg для адаптера SCSI:

ahc0: <Adaptec 2940В Ultra2 SCSI adapter> port 0xe000-0xe0ff mem 0xe8042000- 0xe8042fff irq 11 at device 20.0 on pci0
aic7890/91: Ultra2 Wide Channel A, SCSI Id=7, 32/253 SCBs

В первой строке сообщается, что основная карта SCSI — это адаптер «Adaptec 2940B Ultra2». Во второй содержится дополнительная информация об адаптере на этой карте. На самом деле здесь есть только одна физическая карта. Хост-адаптер использует SCSI ID 7. LUN не применяется.

Далее, в файле dmesg.boot содержатся записи для всех дисков SCSI. Эти записи включают в себя такие сведения, как емкость диска, название модели, скорость и дополнительные особенности, но я приведу здесь только первые строки записей для каждого диска:

Эти строки сообщают, что диск da0 (1) подсоединен к карте SCSI ahc0 (2), на шине 0 (3), SCSI ID 8 (4), LUN равен 0 (5). Диск da1 расположен на той же самой карте SCSI и той же шине, однако SCSI ID равен 9 (6).

Чтобы выполнить привязку дисков, сообщите ядру, какой номер шины SCSI к какой карте подключается, SCSI ID и LUN для каждого диска. Эту информацию следует поместить в файл /boot/device.hints:

Здесь ядру FreeBSD сообщается, что шина SCSI (1) с номером 0 (2) должна подключаться к карте ahc0 (3). Диск da0 (4) подключен к шине SCSI с номером 0 (5) и имеет SCSI ID 8 (6), а диск da1 подключается к той же шине и имеет SCSI ID 9 (7). Во время следующей перезагрузки устройства будут нумероваться так, как указано здесь. Если добавить еще одну карту SCSI или дополнительные жесткие диски SCSI, FreeBSD присвоит номера новым шинам и устройствам с учетом номеров, зарезервированных для этих устройств. При наличии нескольких устройств с разными номерами LUN в файле /boot/device.hints можно использовать параметр lun.

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