CCISS(4) Руководство программиста Linux CCISS(4)

ИМЯ

cciss - блочный драйвер устройства HP Smart Array

ОБЗОР

modprobe cciss [ cciss_allow_hpsa=1 ]

ОПИСАНИЕ

Замечание: Данный устаревший драйвер был удалён из ядра версии 4.14; в новых ядрах его заменяет hpsa(4).

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) перед тем как продолжить ввод-вывод снова в ленточное устройство, которое было сброшено.

СМОТРИТЕ ТАКЖЕ

hpsa(4), cciss_vol_status(8), hpacucli(8), hpacuxe(8)

http://cciss.sf.net, Documentation/blockdev/cciss.txt и файл Documentation/ABI/testing/sysfs-bus-pci-devices-cciss в дереве исходного кода ядра Linux

2017-09-15 Linux