Показаны сообщения с ярлыком initrd. Показать все сообщения
Показаны сообщения с ярлыком initrd. Показать все сообщения

среда, 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 драйвера".

понедельник, 7 февраля 2011 г.

Перенос системы на бОльший жесткий диск.

Ничего нового не опишу, только грабли, на которые встал. Сервер используется под почту - smtp+imap, настроен программынй raid с помощью mdadm (заметка по настройке проскакивала ранее). Размер жесткого диска в 120G стал заканчиваться спустя 2 года.
Цель: перенести систему на диск 400G, создать программный raid.
Теперь, собственно, как все происходило. Во-первых, хочется заметить, что я нахожусь от сервера за 500 км, так что пришлось воспользоваться услугами местного админа (сервер не имеет ни IP-kvm, ни power-on-net). Вечером в пятницу админ выключил сервер, подкинул новый жесткий диск. Сервер загрузился со старого винчестера, затем я удаленно разбил с помощью fdisk новый жесткий диск, создал файловые системы (mkfs.ext3 -L LABELX /dev/sdbY), добавил сигнатуру на раздел со swap (mkswap /dev/sdb9), создал точки монтирования (mkdir -p /mnt/sdb{1,...10}), подмонтировал разделы (mount /dev/sdbY /mnt/sdbY), скопировал данные со старых разделов на новые, предварительно остановив некоторые сервисы, (cp -dpRx . /mnt/sdbY). Прописал загрузчик grub в mbr.
Тут, как говорится, я дал маху. Сначала скопировал, потом поменял строки в /etc/fstab и /boot/grub/grub.conf. Это да, промах.
Перезагрузка без старого винта и сервер счастливо не смог загрузить ядро. Ничего страшного - объясняем админу по телефону. что прописать в меню grub (хорошо, что админ вполне адекватный работает). Ядро загрузилось, но не смогло найти корневую файловую систему. Супер! Возвращаемся назад к меню grub (конечно, передернув сервер по питанию) и правим не только параметр root (hd0,0), но и kernel /vmlinuz*** ro root=/dev/sda2. Вроде все должно быть в порядке, НО НЕ ГРУЗИТСЯ с ошибкой "mkrootdev: label / not found" 
Тут до меня доходит, что initrd сохранил запись о том, что корневая файловая системы находится на /dev/md6 (старая информация), и соот. не может найти устройство. Что делать? Грузиться с live-cd или режиме rescue. Не вопрос, админ предварительно по моему указанию выкачал по корпоративному каналу образ RHEL5.6 (как будто я предчувствовал такие проблемы :)) и записал на DVD.
Загрузка, linux rescue, включить поддержку сети (предполагал, что зайду по сети и сам дальше сделаю), настроить нужный IP, gateway. Теперь самое главное, chroot сделать, но тут очередная засада - предыдущая инсталляция НЕ найдена и автоматически не поднялись необходимые устройства. Ладно, объясняем по телефону что надо сделать (распаковать initrd, изменить init, запаковать initrd):
mount /dev/sda2 /mnt/sysimage
mount /dev/sda1 /mnt/sysimage/boot
chroot /mnt/sysimage
mkdir -p /tt
cd /tt
cp /boot/initrd-2.6.18-194.11.3.img .
cat initrd-2.6.18-194.11.3.img | gunzip | cpio -i
правим init - убираем все, что касается старых устройств, меняем /dev/md6 на /dev/sda2, убираем resume /dev/md6, сохраняем изменения
rm -f initrd-2.6.18-194.11.3.img
find . -print | cpio -H newc -o | gzip -9 -c ../initrd_new.img
cp ../initrd_new.img /boot
Отлично.
Грузимся с жесткого диска, правим меню grub (на предыдущем этапе благополучно забыли сразу поменять). Оно грузится!!! Но опять лажа - записи в /etc/fstab старые и как дошло до проверки файловых систем - тут же выкинуло предложение ввести пароль root и занятся проверкой/монированием файловых систем самостоятельно.
Опять грузимся с диска в linux rescue, меняем записи в /etc/fstab на правильные, заодно и grub.conf. Теперь система нормально загрузилась.
Вообщем, пример довольно поучительный, правильное планирование переноса никто не отменяет + надо думать за какое-то удаленное управление системой.