Вы посетили: » ssh_fishki » sshd_debian » install_oracle_10g_on_ubuntu » manga » michael_wittmann » orphanswanted » steven_jobs » bearloga » bearman » ubuntu_qla2xxx_with_failover_support
Введение
qla2xxx - драйвер поддержки адаптеров FibreChannel (HBA) компании QLogic для ОС Linux
Драйвер идущий в комплекте с оригинальным кернелом не поддерживает режим работы failover, т.е. случай, когда установлены два FC адаптера, но работает только один из них и в случае выхода из строя первого адаптера автоматически начинает работать второй адаптер.
За настройку failover отвечает опция модуля ql2xfailover равная 1 или 0 (включение и отключение соответственно). Поддержка этой опции исключена из оригинального кернела «по различным причинам»©LKML.
Требуется
Тем не менее поддержка failover режима требуется и поэтому придётся самостоятельно подготовить драйвер взятый с ftp сервера ftp://ftp.qlogic.com/outgoing/linux/beta/8.x/
На момент написания статьи я выбрал последнюю по дате версию драйвера ftp://ftp.qlogic.com/outgoing/linux/beta/8.x/qla2xxx-v8.01.07.11-dist.tgz
Для сборки драйвера помимо само собой разумеющихся программ (gcc, make и т.д) потребуются исходники ядра linux-source-2.6.20 (версия в моём случае)
На что обратить внимание
Драйвер компанией QLogic поддерживается для коммерческих дистрибутивов Linux компаний Novell (SLES) и Redhat (RHEL), это накладывает определённые требования на системное окружение.
- Интерпретатор
shвсегда должен бытьbash, в Ubuntu это не так, поэтому нужно явно указывать в скриптах в первой строке необходимый интерпретатор#!/bin/bash - Необходимо наличие файла
/etc/modprobe.conf, который отсутствует по умолчанию в Ubuntu, без него скрипт сборки драйвера будет выполнен с ошибками. - Для сборки модуля
intermodule.koнеобходимо наличие исходных текстов ядра в пути/lib/modules/x.x.xx-xx-xxxxxxx/source, где x..x - текущая версия ядра. Это пожет быть и символическая ссылка на исходный код ядра в каталоге/usr/src. Убедитесь что модульintermodule.koсобран, без него остальные модули qla2*** не смогут загрузиться.
Сборка драйвера
sudo apt-get install build-essential
gcc, make и прочие необходимые для сборки программы, я к сожалению не могу точно сказать что этого пакета достаточно, т.к. у меня уже настроена среда разработки и установлено множество *-dev пакетов не относящихся к данной статье.
sudo apt-get install linux-source-2.6.20
данный пакет только помещает архив linux-source-2.6.20.tar.bz2 в каталог /usr/src поэтому потребуется его распаковать.
cd /usr/src tar jxvf linux-source-2.6.20.tar.bz2
Также для сборки драйвера потребуется символическая ссылка на исходники ядра следующего вида:
cd /lib/modules/2.6.20-15-generic/ sudo ln -s /usr/src/linux-source-2.6.20 source
Ещё нужно создать отсутствующий в Ubuntu файл /etc/modprobe.conf в который при сборке будут записаны команды загрузки модулей ядра.
sudo touch /etc/modprobe.conf
Распаковываем архив драйвера qla2xxx и внутренний архив.
tar zxvf qla2xxx-v8.01.07.11-dist.tgz cd qlogic/ ./drvrsetup
В README файле написано что сборка осуществляеся командой extras/build.sh, но в этом файле не верно указан интерпретатор #!/bin/sh, тогда как требуется #!/bin/bash, поэтому исправьте первую строчку файла extras/build.sh в удобном вам редакторе.
cd qla2xxx-8.01.07.11/ vim extras/build.sh
Теперь можно собрать драйвер как написано в README
sudo extras/build.sh install
Драйвер должен быть собран успешно и установлен в каталог /lib/modules/2.6.20-15-generic/kernel/drivers/scsi/qla2xxx/ убедитесь в этом
ls -l /lib/modules/2.6.20-15-generic/kernel/drivers/scsi/qla2xxx/
итого 6548 -rw-r--r-- 1 root root 222834 2007-05-09 14:16 qla2100.ko -rw-r--r-- 1 root root 230514 2007-05-09 14:16 qla2200.ko -rw-r--r-- 1 root root 269895 2007-05-09 14:16 qla2300.ko -rw-r--r-- 1 root root 280891 2007-05-09 14:16 qla2322.ko -rw-r--r-- 1 root root 350322 2007-05-09 14:16 qla2400.ko -rw-r--r-- 1 root root 198417 2007-05-09 14:16 qla2xip.ko -rw-r--r-- 1 root root 341307 2007-05-09 14:16 qla2xxx_conf.ko -rw-r--r-- 1 root root 4755134 2007-05-09 14:16 qla2xxx.ko
Видим что все файлы с одним и тем же (сегодняшним) временем создания.
Можно принудительно указать опцию ql2xfailover=1 в файле /etc/modprobe.d/options, хотя в README указано, что по умолчанию она включена:
sudo vim /etc/modprobe.d/options
options qla2xxx ql2xfailover=1
Теперь удалите уже загруженный оригинальный драйвер из памяти:
sudo lsmod | grep qla sudo rmmod qla2xxx sudo lsmod | grep qla
Загрузите новый модуль и посмотрите как определились ваши диски командой dmesg:
sudo modprobe -v qla2300 (либо другой в зависимости от вашей версии адаптера)
dmesg
[81094.696702] QLogic Fibre Channel HBA Driver [81094.709841] ACPI: PCI Interrupt 0000:03:03.0[A] -> GSI 72 (level, low) -> IRQ 72 [81094.710132] qla2300 0000:03:03.0: Found an ISP2312, irq 72, iobase 0xffffc20000016000 [81094.710553] qla2300 0000:03:03.0: Configuring PCI space... [81094.710754] qla2300 0000:03:03.0: Configure NVRAM parameters... [81094.796008] qla2300 0000:03:03.0: Verifying loaded RISC code... [81094.859957] qla2300 0000:03:03.0: Allocated (412 KB) for firmware dump... [81094.883845] qla2300 0000:03:03.0: Waiting for LIP to complete... [81095.390266] qla2300 0000:03:03.0: LIP reset occured (f7f7). [81095.398235] qla2300 0000:03:03.0: LIP occured (f7f7). [81095.414186] qla2300 0000:03:03.0: LOOP UP detected (2 Gbps). [81095.462060] qla2300 0000:03:03.0: Waiting for LIP to complete... [81095.485984] qla2300 0000:03:03.0: Topology - (Loop), Host Loop address 0x7d [81095.534688] scsi5 : qla2xxx [81095.534781] qla2300 0000:03:03.0: [81095.534783] QLogic Fibre Channel HBA Driver: 8.01.07.11-fo [81095.534784] QLogic QLA2340 - 133MHz PCI-X to 2Gb FC, Single Channel [81095.534786] ISP2312: PCI-X (133 MHz) @ 0000:03:03.0 hdma+, host#=5, fw=3.03.19 IPX [81095.534863] ACPI: PCI Interrupt 0000:04:04.0[A] -> GSI 96 (level, low) -> IRQ 96 [81095.534971] qla2300 0000:04:04.0: Found an ISP2312, irq 96, iobase 0xffffc20000018000 [81095.535137] qla2300 0000:04:04.0: Configuring PCI space... [81095.535363] scsi 5:0:0:0: Direct-Access IBM 1722-600 0520 PQ: 0 ANSI: 3 [81095.535373] qla2300 0000:03:03.0: scsi(5:0:0:0): Enabled tagged queuing, queue depth 32. [81095.535416] qla2300 0000:04:04.0: Configure NVRAM parameters... [81095.537260] scsi 5:0:0:1: Direct-Access IBM 1722-600 0520 PQ: 0 ANSI: 3 [81095.537266] qla2300 0000:03:03.0: scsi(5:0:0:1): Enabled tagged queuing, queue depth 32. [81095.560186] SCSI device sda: 426975744 512-byte hdwr sectors (218612 MB) [81095.560396] sda: Write Protect is off [81095.560403] sda: Mode Sense: 6f 00 10 08 [81095.560774] SCSI device sda: write cache: enabled, read cache: enabled, supports DPO and FUA [81095.561825] SCSI device sda: 426975744 512-byte hdwr sectors (218612 MB) [81095.562005] sda: Write Protect is off [81095.562009] sda: Mode Sense: 6f 00 10 08 [81095.562350] SCSI device sda: write cache: enabled, read cache: enabled, supports DPO and FUA [81095.562360] sda:<6>qla2300 0000:04:04.0: Verifying loaded RISC code... [81095.681428] qla2300 0000:04:04.0: Allocated (412 KB) for firmware dump... [81095.705304] qla2300 0000:04:04.0: Waiting for LIP to complete... [81096.211722] qla2300 0000:04:04.0: LIP reset occured (f7f7). [81096.211733] qla2300 0000:04:04.0: LIP occured (f7f7). [81096.219693] qla2300 0000:04:04.0: LOOP UP detected (2 Gbps). [81096.251614] qla2300 0000:04:04.0: Topology - (Loop), Host Loop address 0x2 [81096.300256] scsi6 : qla2xxx [81096.300347] qla2300 0000:04:04.0: [81096.300349] QLogic Fibre Channel HBA Driver: 8.01.07.11-fo [81096.300350] QLogic QLA2340 - 133MHz PCI-X to 2Gb FC, Single Channel [81096.300352] ISP2312: PCI-X (133 MHz) @ 0000:04:04.0 hdma+, host#=6, fw=3.03.19 IPX [81097.529137] unknown partition table [81097.529243] sd 5:0:0:0: Attached scsi disk sda [81097.529310] sd 5:0:0:0: Attached scsi generic sg0 type 0 [81097.531164] SCSI device sdb: 426975744 512-byte hdwr sectors (218612 MB) [81097.531716] sdb: Write Protect is off [81097.531722] sdb: Mode Sense: 6f 00 10 08 [81097.532772] SCSI device sdb: write cache: enabled, read cache: enabled, supports DPO and FUA [81097.536472] SCSI device sdb: 426975744 512-byte hdwr sectors (218612 MB) [81097.536665] sdb: Write Protect is off [81097.536669] sdb: Mode Sense: 6f 00 10 08 [81097.537006] SCSI device sdb: write cache: enabled, read cache: enabled, supports DPO and FUA [81097.537012] sdb: sdb1 [81099.219023] sd 5:0:0:1: Attached scsi disk sdb [81099.219090] sd 5:0:0:1: Attached scsi generic sg1 type 0
Как видим созданы только 2 диска sda и sdb, а не 4 (идентичных попарно) как было до установки драйвера.
ls /dev/sd*
/dev/sda /dev/sdb /dev/sdb1 /dev/sde /dev/sde1 /dev/sde2 /dev/sde5
Фиксация изменений
Нужно собрать новый файл initrd, так как в старом находится старая версия драйвера.
sudo update-initramfs -u
Теперь после перезагрузки будет автоматически загружен установленный нами драйвер.
Советы по монтированию
Небольшой совет по монтированию жёстких дисков. Монтируйте диски по их udev идентификатору UUID, это позволит вам избежать проблем, которые могут возникнуть, если диски поменяют свою букву (с /dev/sde на /dev/sdc например) из-за добавления или удаления дополнительных дисков.
Узнать UUID раздела диска можно командой (для /dev/sda1)
sudo vol_id -u /dev/sda1
Строчка /etc/fstab может выглядеть следующим образом
UUID=d3dcf7c9-1c34-426c-ae1c-1abba7b29e02 / ext3 defaults,errors=remount-ro 0 1
Заключение
Всё вышеуказанное было сделано в рамках переноса сервера Oracle с SLES9 на Ubuntu Feisty.
По сравнению с жутко платным и при этом кривым SLES9 (Oracle так и не заработал на нём в полном объёме из-за ошибок линковки, но это тема другого разговора) Ubuntu вызывает эстетическое наслаждение, посмотрим как оно будет в работе.
Вы находитесь здесь: Заглавная Страница » ubuntu_qla2xxx_with_failover_support
