ОБЗОР
modprobe cciss [ cciss_allow_hpsa=1 ]
ОПИСАНИЕ
cciss — это блочный драйвер для старых контроллеров RAID HP Smart Array.Параметры
cciss_allow_hpsa=1: этот параметр запрещает драйверу cciss пробовать управлять контроллерами, которыми может управлять драйвер hpsa(4). Другими словами, этим параметром драйвер cciss будет ограничен следующими контроллерами:Smart Array 5300 Smart Array 5i Smart Array 532 Smart Array 5312 Smart Array 641 Smart Array 642 Smart Array 6400 Smart Array 6400 EM Smart Array 6i Smart Array P600 Smart Array P400i Smart Array E200i Smart Array E200 Smart Array E200i Smart Array E200i Smart Array E200i Smart Array E500
Поддерживаемое оборудование
Драйвер cciss поддерживает следующие платы Smart Array:Smart Array 5300 Smart Array 5i Smart Array 532 Smart Array 5312 Smart Array 641 Smart Array 642 Smart Array 6400 Smart Array 6400 U320 Expansion Module Smart Array 6i Smart Array P600 Smart Array P800 Smart Array E400 Smart Array P400i Smart Array E200 Smart Array E200i Smart Array E500 Smart Array P700m Smart Array P212 Smart Array P410 Smart Array P410i Smart Array P411 Smart Array P812 Smart Array P712m Smart Array P711m
Особенности настройки
Для настройки контроллеров HP Smart Array используйте HP Array Configuration Utility (hpacuxe(8) или hpacucli(8)) или Offline ROM-based Configuration Utility (ORCA), которую можно запустить из ROM Smart Array при включении машины.ФАЙЛЫ
Узлы устройства
Ниже приведена схема именования устройств:Старшие номера: 104 cciss0 105 cciss1 106 cciss2 105 cciss3 108 cciss4 109 cciss5 110 cciss6 111 cciss7 Младшие номера: b7 b6 b5 b4 b3 b2 b1 b0 |----+----| |----+----| | | | +-------- Идентификатор раздела (0=всё устройство, 1-15 раздел) | +-------------------- Номер логического тома Порядок именования устройств: /dev/cciss/c0d0 Контроллер 0, диск 0, устройство целиком /dev/cciss/c0d0p1 Контроллер 0, диск 0, раздел 1 /dev/cciss/c0d0p2 Контроллер 0, диск 0, раздел 2 /dev/cciss/c0d0p3 Контроллер 0, диск 0, раздел 3 /dev/cciss/c1d1 Контроллер 1, диск 1, устройство целиком /dev/cciss/c1d1p1 Контроллер 1, диск 1, раздел 1 /dev/cciss/c1d1p2 Контроллер 1, диск 1, раздел 2 /dev/cciss/c1d1p3 Контроллер 1, диск 1, раздел 3
Файлы в /proc
В файлах /proc/driver/cciss/cciss[0-9]+ содержится информация о настройке каждого контроллера. Пример:$ cd /proc/driver/cciss $ ls -l total 0 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss0 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss1 -rw-r--r-- 1 root root 0 2010-09-10 10:38 cciss2 $ cat cciss2 cciss2: HP Smart Array P800 Controller Board ID: 0x3223103c Firmware Version: 7.14 IRQ: 16 Logical drives: 1 Current Q depth: 0 Current # commands on controller: 0 Max Q depth since init: 1 Max # commands on controller since init: 2 Max SG entries since init: 32 Sequential access devices: 0 cciss/c2d0: 36.38GB RAID 0
Файлы в /sys
- /sys/bus/pci/devices/<dev>/ccissX/cXdY/model
- Модель логического устройства Y контроллера X со страницы 0 SCSI INQUIRY.
- /sys/bus/pci/devices/<dev>/ccissX/cXdY/rev
- Версия логического устройства Y контроллера X со страницы 0 SCSI INQUIRY.
- /sys/bus/pci/devices/<dev>/ccissX/cXdY/unique_id
- Серийный номер логического устройства Y контроллера X со страницы 83 SCSI INQUIRY.
- /sys/bus/pci/devices/<dev>/ccissX/cXdY/vendor
- Производитель логического устройства Y контроллера X со страницы 0 SCSI INQUIRY.
- /sys/bus/pci/devices/<dev>/ccissX/cXdY/block:cciss!cXdY
- Символьная ссылка на /sys/block/cciss!cXdY.
- /sys/bus/pci/devices/<dev>/ccissX/rescan
- При записи в этот файл драйвер повторно сканирует контроллер для обнаружения новых, удалённых или изменённых логических дисков.
- /sys/bus/pci/devices/<dev>/ccissX/resettable
- Значение 1 в файле показывает, что параметр ядра «reset_devices=1» (используемый kdump) был принят данным контроллером. Значение 0 показывает, что параметр ядра «reset_devices=1» принят не был. Некоторые модели Smart Array не способны принять этот параметр.
- /sys/bus/pci/devices/<dev>/ccissX/cXdY/lunid
- 8-байтовый LUN ID, используемый для адресации логического устройства Y контроллера X.
- /sys/bus/pci/devices/<dev>/ccissX/cXdY/raid_level
- Уровень RAID логического устройства Y контроллера X.
- /sys/bus/pci/devices/<dev>/ccissX/cXdY/usage_count
- Счётчик использования (число открытий) логического устройства Y контроллера X.
Поддержка ленточных устройств SCSI и устройств смены носителя
Драйвер поддерживает устройства SCSI с последовательным доступом и смены носителя, и автоматически создаёт соответствующие узлы устройств (например, /dev/st0, /dev/st1 и т. д.; подробней смотрите в st(4)). Чтобы использовать ленточные устройства SCSI с контроллером Smart Array 5xxx в настройках ядра нужно включить «SCSI tape drive support for Smart Array 5xxx» и «SCSI support».Также заметим, что драйвер не привлекает ядро SCSI во время инициализации. Драйвер должен динамически задействовать ядро SCSI через запись в файловой системе /proc, которую (/proc/driver/cciss/cciss*) «блочная» часть драйвера создаёт во время работы. Так сделано потому, что на момент инициализации драйвера ядро SCSI ещё может быть не инициализировано (так как драйвер — блочный) и попытка зарегистрировать его в ядре SCSI в этом случае вызывала бы зависание. Это лучше всего выполнять из сценария инициализации (обычно, в /etc/init.d, но в разных дистрибутивах по-разному). Пример:
for x in /proc/driver/cciss/cciss[0-9]* do echo "engage scsi" > $x doneПосле того, как драйвер подключил ядро SCSI, он не может быть выключен (за исключением выгрузки драйвера, если он собран в виде модуля).
Также заметим, что если устройства с последовательным доступом или смены носителя не обнаружены, то ядро SCSI не привлекается из показанного выше сценария.
Ленточные устройства SCSI, подключаемые во время работы (hot plug)
Поддерживается подключение ленточных устройств SCSI без выключения машины. Драйвер cciss должен быть уведомлён об изменениях на шине SCSI. Это можно сделать через файловую систему /proc. Пример:
echo "rescan" > /proc/scsi/cciss0/1
Это заставляет драйвер:
-
- 1.
- Опросить адаптер об изменениях на физических шинах SCSI и/или управляемой петли (arbitrated loop) fibre channel;
- 2.
- Определить все новые или удалённые устройства с последовательным доступом или смены носителя;
Драйвер выводит сообщения о добавленных или удалённых устройствах, а также контроллер, шину, назначение и lun каждого используемого устройства. Также, драйвер уведомляет промежуточный слой SCSI об этих изменениях.
Заметим, что по соглашению об именовании кроме имени драйвера, записи файловой системы /proc содержат номер (например, «cciss0» вместо «cciss», как вы могли бы ожидать).
Замечание: драйвер cciss на промежуточном слое SCSI представляет в виде устройств SCSI только устройства с последовательным доступом и смены носителя. Устройства для физических дисков SCSI не представляются на промежуточном слое SCSI. Дисковые устройства представляются ядром как логические устройства, который контроллер массива собрал из частей физических дисков. Логические устройства представляются на блочном уровне (не на промежуточном слое SCSI). Это важно для драйвера — не дать прямой доступ ядру к физическим дискам, так как устройства используются контроллером массива для сборки логических устройств.
Обработка ошибок SCSI для ленточных устройств и устройств смены носителя
Промежуточный слой Linux SCSI предоставляет порядок (protocol) обработки ошибок, который запускается, если команда SCSI выполнилась с ошибкой определённое количество раз (которое может зависеть от команды). Драйвер cciss следует этому порядку с некоторыми изменениями. Обычный порядок состоит из четырёх шагов:- *
- Устройству указывается прервать работу команды.
- *
- Если это не сработало, устройство сбрасывается (reset).
- *
- Если это не сработало, сбрасывается шина SCSI.
- *
- Если это не сработало, сбрасывается адаптер шины узла.
Как драйвер SCSI, cciss является блочным и только ленточные устройства и устройства смены носителя представлены на промежуточном уровне SCSI. Кроме этого, в отличие от более простых драйверов SCSI, дисковый ввод-вывод продолжается через блочную часть во время процесса восстановления после ошибки SCSI. Поэтому драйвер cciss выполняет только первые два шага: прерывание команды и сброс устройства. Также заметим, что большинству ленточных устройств не поможет прерывание команды и, иногда, они даже не подчиняются этой команде, хотя очень редко. Если команда не может быть прервана и устройство не может быть сброшено, то устройство переводится в неактивный режим (offline).
Если событие обработки ошибок возникло и ленточное устройство успешно сброшено или последняя команда успешно прервана, то ленточное устройств может всё ещё продолжать не позволять выполнять ввод-вывод, пока какая-нибудь команда не поместит ленточное устройство в известное положение. Как правило, вы должны перемотать ленту (например, командной mt -f /dev/st0 rewind) перед тем как продолжить ввод-вывод снова в ленточное устройство, которое было сброшено.