Adicionando suporte a HP Smart Array B110i no Redhat 5.4
Há alguns dias atrás me deparei com um problema. Estava mexendo em uma blade HP e fiz o raid 1 via hardware, até ae tudo bem. Depois gravei o iso do Red Hat 5.4 e fui fazer a instalação. Quando a instalação começou, vi que os discos eram reconhecidos individualmente, ou seja, o SO reconheceu os 2 discos e não o volume que criei. Há princípio achei que era problema na controlada, pois todos os servidores que já mexi, quando a controladora não é reconhecida, os discos também não são.
Depois de muito apanhar, descobri que o problema era driver.
Com o problema em mãos, fui atrás de uma solução. Pesquisei no site da HP e vi que ela disponibiliza o driver em em formato .rpm. Só que o rpm neste momento não me ajuda pois preciso que a controladora seja reconhecida no boot e não depois da instalação. Eles até disponibilizam o disquete de boot com o driver, mas para RedHat 5.3, como o kernel do 5.4 é mais novo o driver não funciona.
Por este motivo resolvi criar este artigo. Os passos que irei mostrar servem para qualquer driver, e funcionam tanto em Red Hat quanto para CentOS, ajuste-o conforme sua necessidade.
Os itens que iremos utilizar são:
rhel-server-5.4-x86_64-dvd.iso hpahcisr-1.2.1-9.rhel5.x86_64.rpm
Primeiramente vamos montar o iso e copiar os arquivos para customizá-lo. Os comandos abaixo são responsáveis por criar os diretórios que iremos utilizar para montar o iso e copiar os arquivos:
mkdir -p /mnt/{driver,original,customizado} mount -o loop /root/rhel-server-5.4-x86_64-dvd.iso /mnt/original/ cp -av /mnt/original/* /mnt/original/.discinfo /mnt/original/.treeinfo /mnt/customizado/
Dando continuidade, vamos descompactar o hpahcisr-1.2.1-9.rhel5.x86_64.rpm para pegar o driver e incluir no initrd:
cd /mnt/driver/ rpm2cpio /root/hpahcisr-1.2.1-9.rhel5.x86_64.rpm | cpio -idmv
Dentro do diretório /mnt/driver ele vai criar o opt/hp/storage_drivers/hpahcisr-1.2.1_2009_09_17.tar.gz, precisamos descompactar este arquivo e separar os módulos que iremos utilizar:
tar xzf ./opt/hp/storage_drivers/hpahcisr-1.2.1_2009_09_17.tar.gz cp -a hpahcisr-1.2.1_2009_09_17/lib/modules/2.6.18-164.el5/kernel/drivers/scsi/hpahcisr/hpahcisr.ko /mnt/driver/
Com o driver separado, vamos descompactar o initrd:
cd /mnt/customizado/isolinux/ mkdir initrd cd initrd gzip -dc ../initrd.img | cpio -ivd
Descompactando os modules:
cd modules gzip -dc modules.cgz | cpio -idumv
Agora precisamos copiar o driver para dentro do diretório que foi criado com o comando acima e adicionar o mesmo nos arquivos para serem lidos no boot:
cp -a /mnt/driver/hpahcisr.ko 2.6.18-164.el5/x86_64/ modinfo -F alias 2.6.18-164.el5/x86_64/hpahcisr.ko | sed -e 's/^/alias /' -e 's/$/ hpahcisr/' >> modules.alias sed -i '/^hptiop/ihpahcisr\n\tscsi\n\t\"Update HP HPAHCISR driver\"' module-info sed -i '/^hptiop/ihpahcisr: scsi_mod' modules.dep
Depois de adicionar o driver e incluir o mesmo nos arquivos necessário, precisamos compactar os modules:
rm -f modules.cgz find 2.6.18-164.el5 | cpio -o -H crc | gzip -9 > modules.cgz rm -rf 2.6.18-164.el5 cd ..
Com este passo finalizado, vamos recriar o initrd:
find . | cpio -o -H newc | gzip -9 > ../initrd.img cd .. rm -rf initrd
O initrd está pronto, ou seja, agora quando você gravar o .iso, a controladora será reconhecida no boot, só que se você instalar o SO e não instalar o driver vai dar problema pois no initrd do kernel que vem no iso não tem o driver, então adicione o hpahcisr-1.2.1-9.rhel5.x86_64.rpm a arvore de pacotes e recriar os .xml utilizados para a instalação dos pacotes:
cp -a /root/hpahcisr-1.2.1-9.rhel5.x86_64.rpm /mnt/customizado/Server/ cd /mnt/customizado/Server/ createrepo -u "media://`head -1 ../.discinfo`" -g repodata/comps-rhel5-server-core.xml .
No passo final, vamos recriar o .iso:
cd /mnt/customized64/ mkisofs -V "Custom Red Hat 5.4" -r -R -J -T -v -no-emul-boot \ -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin \ -c isolinux/boot.cat -o /root/RedHatLinux54-customized.iso .
Grave o .iso em um dvd e instale seu servidor, na hora do boot, digite:
linux text
Quando finalizar a instalação, vai apagar um botão para dar boot, NÃO FAÇA ISSO AINDA, aperte:
alt + f2
Vai abrir um terminal, digite:
cd /mnt/sysimage/ chroot . mount /dev/scd0 /media/ rpm -ivh /media/Server/hpahcisr-1.2.1-9.rhel5.x86_64.rpm umount /media/ exit
Aperte alt +f1 e agora pressione o OK que quando o servidor voltar do boot, seu sistema vai estar instalado com o driver da controladora. A última coisa a ser feita é excluir o kernel das atualizações do sistema pois se você atualizar, irá perder o suporte da controladora e irá ferrar todo o seu sistema pois vai quebrar o raid, então digite:
echo "" >> /etc/yum.conf echo "# Exclui o kernel da atualizacao, necessario para o modulo da hp." >> /etc/yum.conf echo "# Nao tente copiar o modulo para uma versao mais nova do kernel," >> /etc/yum.conf echo "# que alem de nao funcionar, vai foder o lvm." >> /etc/yum.conf echo "exclude=kernel*" >> /etc/yum.conf
Agora você sabe como customizar um dvd de Red Hat e CentOS, caso queira remover pacotes e/ou atualizá-los, basta remover os arquivos .rpm do diretório Server e depois rodar o comando createrpo como mostrado anteriormente.
Muito Obrigado!
estava com o mesmo problema.
Derick
18 Jun 10 at edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>
Olá Claudio! Estou enfrentando um problema semelhante ao postado por vc, com um servidor HP ML110 G6, com a mesma controladora. Estou usando um CentOS 5.4. Fiz todos os passos acima descrito, porém no momento de localizar os discos, continuam aparecendo dois discos, e não um único volume RAID. Fiz algumas adaptações para o CentOS, como “createrepo -u “media://`head -1 ../.discinfo`” -g ../repodata/comps.xml .” mas mesmo assim não deu. Podes me dar uma ajuda? Att.
Max Colling
6 Jul 10 at edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>
Olá Max, o problema pode ser o seguinte:
Se na hora da instalação fica aparecendo os discos e não o raid, o initrd não carregou o módulo, pois na hora da instalação é ele que carrega o módulo, o rpm que fica dentro do repo é para ser instalado depois de finalizar a instalação do SO, para assim após o boot seu sistema reconhecer o raid.
but3k4
15 Jul 10 at edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>
Ola Claudio, fiz todo o procedimento conforme voce orientou, durante a instalacao encontrou os drivers corretamente. mas depois do boot, o raid nao funcionou mais. olhando o resultado do lsmod o driver hpahcisr foi carregado.
notei que durante a instalacao do pacote rpm do driver para o RedHat, ocorrem alguns erros no CentOS, devido ao kernel usar alguns nomes diferentes, por ex:
RedHat /lib/modules/2.6.18-194.el5
Centos /lib/modules/2.6.18-194.el5xen
Pode me dar um help? Grato
Marco
30 Dec 10 at edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>
Olá Marcos, você pode fazer o seguinte: reinstalar seu sistema, só que depois de instalar o driver, você copia ele para dentro do kernel do centos roda um depmod e recriar o initrd, pois como a versão do kernel é diferente, ele não copiou para o lugar certo e com isto o driver não sobe após o boot.
but3k4
3 Jan 11 at edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>
Muito bom!
Muito obrigado!
estava com o mesmo problema!
funcionou perfeitamente!
att Peter
Peter
20 Jan 11 at edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>
Valeu, resolveu meu problema.
Obrigado!
Ricardo
21 Nov 11 at edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>
De nada, qualquer dúvida estou a disposição.
but3k4
29 Nov 11 at edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>