Semana passada migrei o Data Center da empresa do grupo onde trabalho todo para ambiente virtualizado com Xen Server. Como todo ambiente virtualizado, se faz necessário o uso de uma Storage para armazenar os discos virtuais das máquinas virtualizadas de forma centralizada. Então montei uma storage com CentOS 5.3 x64 compartilhando os arquivos das máquinas virtuais via NFS para os servidores Xen. Toda a migração ocorreu de forma tranquila, mas quando o ambiente foi para produção e o volume de dados cresceu, um bug da placa Realtek modelo RTL8111/8168B do servidor em questão veio á tona.
Quando a placa de rede atingia um nivel de uso elevado, o erro abaixo era exibido e placa de rede simplesmente parava de responder, onde a única solução era descarregar e carregar o módulo via modprobe.
kernel: r8169: eth0: link down
NETDEV WATCHDOG: eth0: transmit timed out
E isso passou a ocorrer com muita frequência dias após a migração. Em busca de uma solução encontrei um relatório de bug aberto na Red Hat sobre o módulo padrão utilizado para esse modelo da placa Realtek, que é reconhecido como r8169 de forma incorreta. O módulo correto que deve ser carregado deve ser o r8168, mas ele não existe por padrão nos repositórios. Portanto, compilá-lo-emos…
Para isso, acesse o site com os fontes atualizados dos drivers das placas Realtek aqui, faça o download do arquivo com os fontes para a máquina onde o módulo será compilado e substituido.
Descompacte o arquivo baixado em uma pasta qualquer.
# tar -xvjf r8168-8.012.00.tar.bz2
Remova o módulo errado do modprobe.
# rmmod r8169
Altere o modprobe.conf para reconhecer o módulo que será compilado.
# vim /etc/modprobe.conf
Onde existir alias eth0 r8169, altere para alias eth0 r8168.
Dentro da pasta onde o arquivo foi descompactado, compilar o novo driver e catalogar na lista de módulos do Linux.
# make clean modules
# make install
# depmod -a
Carregar o novo módulo compilado em memória.
# modprobe r8168
Pronto! Basta você reiniciar o serviço de rede ou reconfigurar sua placa com o ifconfig.
Vale ressaltar que a cada atualização de kernel aplicada nesta máquina, este módulo deverá ser recompilado.
Feito isso, storage rodando feito uma mariola.
Espero que os ajudem.
[]’s