среда, 22 июня 2011 г.

Non-volatile configuration memory is being accessed.

Сегодня зашел на маршрутизатор Cisco 870 серии, посмотрел running-config и чего-то дернуло меня глянуть на стартовый конфиг, сравнить насколько отличаются.
C871-IF#sh start
%% Non-volatile configuration memory is being accessed, Try again later

Интересная надпись. Почему нельзя посмотреть на конфиг в nvram? Данное сообщение выскакивает, когда несколько пользователей пытаются получить доступ к nvram, хоть на чтение, хоть на запись.

Лечение:
Команда sh users покажет кто еще работает с маршрутизатором
Команда clear line vty NUMBER сбросит пользователя с номером сессии NUMBER, полученного из вывода предыдущей команды.


Литература:
https://supportforums.cisco.com/docs/DOC-4924

понедельник, 20 июня 2011 г.

EXT4-fs (dm-0): Unaligned AIO/DIO on inode 90177549 by oracle; performance will be poor

Собственно, вылезло такое сообщение в /var/log/messages на сервере под RHEL 6.1. Сообщение вылезает нечасто, примерно раз в день. с разными номерами инодов. Особых проблем с производительностью я не заметил, прогнал с помощью dd запись/чтение больших файлов - вроде все нормально. на всякий случай связался с поддержкой RedHat, где вежливо объяснили, что во-первых железо не сертифицировано под RHEL6, а во-вторых:
a. This error is safe, and It will not cause filesystem corruption. In fact, the message was added when the code was made "corruption-safe"
b. This warning is throttled to only appear once per day in your logs, even if you encounter the problem much more often.
c. The code has been made corruption-safe, but as a consequence there may be a performance degradation depending on your workload.
d. If your testing shows that the performance is unacceptable, we can ask engineering to review the code and look for performance improvements, or try switching back to ext3 or RAW devices with Oracle ASM or similar.

Суммируя:
Сообщение НЕ указывает на то, что данные будут повреждены. Если производительность устраивает - не стоит париться. Если, наоборот, есть проблемы, то нужно откатиться к использованию ext3 или использовать Oracle ASM.

Литература:
http://www.spinics.net/lists/linux-ext4/msg22690.html

пятница, 17 июня 2011 г.

Squid 3 и ошибка NONE/417 при POST-запросе.

Сегодня столкнулся с такой интересной ошибкой на шлюзе под RHEL6 с squid3. Для отдела логистики купили супер-программу Benish Fleet Managment (система спутникового мониторинга, позволяющая контролировать местоположение автотранспорта и любых объектов интересующих клиентов - взято с их сайта). В программе есть возможность указать прокси-сервер, логин/пароль для авторизации. Прописал, запускаю, не работает. Выдает какую-то билиберду. В логах строчка "1308310455.273 0 dn-office111.office.com NONE/417 4679 POST http://91.1X.4X.X0:81/tavl/Tavlentry.asmx - NONE/- text/html"

Недолгое гугление указывает на необходимость добавить в /etc/squid/squid.conf
ignore_expect_100 on
которая позволяет НЕ отсылать ошибку 417 клиентам с кривой поддержкой HTTP/1.1.
По умолчанию данная опция выключена и squid игнорирует заголовки вида Expect: 1XX в запросе (согласно RFC 2616).
Вообщем кривой софт и техподдержка с заученной фразой "раз не конектится - значит проблемы у вас" были побеждены внесением в конфиг небольшого workaround. Насколько стабильно заработает - время покажет.

Литература:
http://www.squid-cache.org/Doc/config/ignore_expect_100/
http://www.ietf.org/rfc/rfc2616.txt

среда, 8 июня 2011 г.

Установка RDAC на IBM xSeries 366.


Недавно встала передо мной задача подготовить сервер IBM xSeries 366 под Oracle. Под данные выделили LUN на DS4300.
В данной заметке я постараюсь описать свой опыт установки Linux RDAC под RHEL 6.1.
Первым делом, определимся что это? Драйвер RDAC позволяет объединить несколько маршрутов ввода-вывода между узлами серверов и дисковыми массивами в единое целое. Маршруты в этом случае представляют собой физические SAN-соединения, которые могут включать отдельные кабели, переключатели и контроллеры. При их агрегации будет создано новое устройство.
Точно такую же функцию выполняет DM-Multipath из пакета device-mapper-multipath, входящего в поставку RHEL6. IBM рекомендует устанавливать Linux RDAC драйвер для доступа к стойке.

Скачиваем последний архив с исходниками:
wget -c http://www.lsi.com/sep/Documents/rdac/rdac-LINUX-09.03.0C05.0454-source.tar.gz
 wget -c http://www.lsi.com/sep/Documents/rdac/ibm_sw_ds3k4k5krdac_09.03.0C05.0454_linux_anycpu.txt

Внимательно читаем README и узнаем, что в версии 09.03.0C05.0454 предлагается:

- Новая архитектура с поддержкой многопоточной обработки.
- Улучшение производительности по сравнению с предыдущими версиями.
- Поддержка RedHat 6.

Отлично, изменения более подробно описывать смысла нет, можно посмотреть в файле изменений самостоятельно.
Теперь об ограничениях/замечаниях текущей версии драйвера:

1. KDUMP не работает с установленным MPP-драйвером в RHEL 6.0. Проблема решена в RHEL 6.1

2. RDAC драйвер не может сосуществовать с Fibre Channel HBA-level multipath failover/failback driver.

3. SCSI-подсистема в Linux не поддерживает несмежные LUNы. Например, хосту презентованы LUN1 и LUN4, в данном случае ядро не будет сканировать оставшиеся LUNы.
Рекомендуется презентовать смежные LUNы или перед запуском приложений запускать скрипт, который обнаружит LUNы с помощью mppBusRescan, а затем примонтирует найденные разделы.

4. Разработчики рекомендуют использовать зонирование FC-коммутаторов.

5. RDAC драйвер немедленно рапортует о ошибках ввод/вывода при потере всех путей к стойке.

6. Стек RDAC драйверов (включает mppUpper; драйвера HBA, например, qla2xxx; mppVhba) не рекомендуется загружать/выгружать с помощью modprobe/insmod/rmmod, только с помощью перезагрузки в тоже или другое ядро.

Новая установка

Распаковать исходники:
tar -zxf rdac-LINUX-09.03.0C05.0454-source.tar.gz
Войти в папку:
cd linuxrdac-09.03.0C05.0454
Удалить старые объектные файлы
make clean
Скомпилировать
make
Установить
make install

После этого в каталоге /boot появится файл mpp-2.6.32-131.2.1.el6.x86_64.img
Его нужно добавить в меню grub:

title Red Hat Enterprise Linux Server (2.6.32-131.2.1.el6.x86_64) with MPP
root (hd0,0)
kernel /vmlinuz-2.6.32-131.2.1.el6.x86_64 ro root=UUID=4be0d*** rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet elevator=deadline
initrd /mpp-2.6.32-131.2.1.el6.x86_64.img


Перезагрузка
reboot

Проверка, что модули драйвера успешно загружены:
# lsmod | grep mpp
mppVhba 135909 1
mppUpper 153884 1 mppVhba


Для проверки. что драйвер нашел устройства:
# ls -lR /proc/mpp
либо
# /opt/mpp/lsvdev
Array Name Lun sd device
-------------------------------------
IBM4300-001 0 -> /dev/sdb


Конфигурация драйвера хранится в файле /etc/mpp.conf. Если вы делаете какие-либо изменения в нем, рекомендуется запустить mppUpdate (обновит RAM-диск в сообветствии с новой конфигурацией). Многие изменения в конфигурации требуют перезагрузки системы. Разработчики драйвера категорично рекомендуют делать именно перезагрузку, а не выгрузку/загрузку модулей.

Удаление RDAC драйвера
cd linuxrdac-09.03.0C05.0454
make uninstall
reboot


Переустановка/обновление RDAC драйвера
cd linuxrdac-09.03.0C05.0454
make uninstall
make clean
make
make install
reboot


Kernel Update
rpm -Uvh kernel-firmware-VERSION kernel-devel-VERSION -kernel-headers-VERSION
rpm -ivh new_kernel-VERSION
Отмонтировать разделы
Отмапить разделы со стойки
reboot


После успешной загрузки следовать пунктам в "Переустановка/обновление RDAC драйвера".

среда, 1 июня 2011 г.

Мониторинг температуры серверной с помощью digitemp.

В серверной имеется старенький датчик температуры DS9097U. Года полтора назад надо было настроить мониторинг температуры в серверной. Собственно, это небольшая заметка о проделанной ранее работе. В организации, где я работаю, активно используется Nagios для мониторинга серверов/стоек/активного оборудования и т.п. Далее я кратко опишу, как прикрутить digitemp к nagios. DigiTemp - это простая программа, используемая для чтения данных из датчиков температур, в моем случае подключенных к COM-порту сервера под RHEL 6 (ранее RHEL 5).

1. Скачать digitemp можно отсюда:
wget -c http://www.digitemp.com/software/linux/digitemp-3.6.0.tar.gz

2. Распаковать
tar xzf digitemp-3.6.0.tar.gz
cd digitemp-3.6.0


3. прочитать README
less README

4. Компилирование исходников
make ds9097u

5. Инициализация датчика (ищет доступные устройства, если не указать явно, и записывает их ROM-параметры в .digitemprc)
./digitemp_DS9097U -i -s /dev/ttyS0

6. Копирование файлов в нужные папки
cp digitemp_DS9097U /usr/local/bin
ln -s /usr/local/bin/digitemp_DS9097U /usr/local/bin/digitemp
mv .digitemprc /etc/nagios/digitemp.conf


7. Установить необходимые права на устройство, либо добавить пользователя nagios в группу, которой принадлежит файл /dev/ttyS0
chmod 666 /dev/ttyS0 (подключенное устройство)
Обязательно добавить в правила udev соответствующие разрешения.

8. Скачать плагин для nagios под названием check_digitemp.pl. Например, отсюда http://oss.teamix.org/projects/nagiosplug/repository/revisions/master/changes/contrib/check_digitemp.pl

Проверка
/usr/local/nagios/libexec/check_digitemp.pl -t 0 -f /etc/nagios/digitemp.conf -w 30 -c 35 -C
добавить в /etc/nagios/nrpe.conf на стороне сервера, к которому подключен датчик.
echo “command[check_temperature]=/usr/local/nagios/libexec/check_digitemp.pl -t 0 -f /etc/nagios/digitemp.conf -w 30 -c 35 -C” >> /etc/nagios/nrpe.conf

Описать сервис на хосте с Nagios
define service{
use linux-service
host_name dbtest01
service_description Current temperature
check_command check_nrpe!check_temperature
}


Объявить команду check_temperature в файле /etc/nagios/commands.cfg на хосте с Nagios
*****
#DigiTemp temperature check command
define command{
command_name check_temperature
command_line $USER1$/check_digitemp.pl -w $ARG1$ -c $ARG2$ -t $ARG3$ -f $ARG4$ -C
}

*****