Para quem tem problemas em atualizar o kernel ou aplicar patches em seus servidores, pois existem processos críticos sendo rodados e que não podem se dar ao luxo de parar para o reboot do sistema, eis a solução: Ksplice.
Por: flavio augusto marques adao
Introdução
Realizar uma atualização no kernel é uma tarefa simples, mas quando falamos de um servidor cujos processos não podem parar, isto já se torna um pouco mais complicado. Praticamente tudo pode ser atualizado no sistema, mas as atualizações de kernel necessitam de um reboot do sistema.
Assim sendo imagino que vários sysadmins perdem noites e mais noites de sono para poderem aplicar algum patch em seu kernel, pois só podem parar o sistema de madrugada quando se tem poucos usuários utilizando os servidores. Isso quando se é possível rebootar o servidor.
Se você se identifica com essa situação ou algo parecido, lhes apresento o Ksplice.
Essa poderosa ferramenta permite que sejam aplicados patches no kernel sem o tradicional reboot. Isso mesmo, ele pára o sistema por 0,7ms. Como isso é possível? Veremos mais adiante.
Entendendo o funcionamento do Ksplice
Para gerar a atualização, ele compara os objetos compilados antes e depois do patch ser aplicado. Esta é uma técnica chamada de "pre-post differencing", ou seja, ele compara o pré-código com o que está rodando na memória e em seguida modifica o caminho das funções para que as novas funções passem a ser lidas no lugar das antigas.
Nos testes realizados foi constatado que 88% dos patches de segurança podem ser implementados sem a necessidade de mais nenhum código adicional.
Hoje o Ksplice Uptrack pode ser instalado facilmente no Ubuntu por um pacote .deb pré-testado.
Instalando e utilizando
Para instalar é só seguir os passos, ou se você usa Ubuntu ou algum outro parente do Debian pode recorrer ao pacote .deb fornecido em Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar....
Através do pacote binário:
$ wget Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
$ tar zxf ksplice-0.9.8-bin-i386.tar.gz
$ cd ksplice-0.9.8
$ ./configure
$ make
$ su root
# make install
Através do fonte:
$ wget Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
$ tar zxf ksplice-0.9.8-src.tar.gz
$ cd ksplice-0.9.8
$ ./configure
$ make
$ su root
# make install
Preparando o diretório:
$ mkdir ~/linux-source/ksplice
$ cp /boot/config-2.6.22-1-686-smp ~/linux-source/ksplice/.config
$ cp /boot/System.map-2.6.22-1-686-smp ~/linux-source/ksplice/System.map
$ ln -s /lib/modules/2.6.22-1-686-smp/build ~/linux-source/ksplice/build
Aplicando patches
Explicarei como aplicar o patch do printk, mas o mesmo procedimento serve para qualquer outro.
$ wget Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
$ ksplice-create --patch=printk.patch ~/linux-source
Ksplice update tarball written to ksplice-8c4o6ucj.tar.gz
# ksplice-apply ./ksplice-8c4o6ucj.tar.gz
Done!
Estes comandos anteriores podem ser dados em qualquer diretório do sistema. Para testar seu funcionamento:
# dmesg | tail -n2
Quoth the kernel:
ksplice: Update 8c4o6ucj applied successfully
Se algo parecido foi exibido na tela, quer dizer que está tudo ok e podemos prosseguir.
Para alguns kernels mais antigos é necessário digitar:
# dmesg | tail -n3
Quoth the kernel:
Quoth the kernel:
ksplice: Update 8c4o6ucj applied successfully
Para ver as atualizações em ação:
# rmmod loop
# modprobe loop
# dmesg | tail -n2
Quoth the kernel:
loop: loaded (max 8 devices)
Revertendo as alterações
Exibindo as atualizações:
# ksplice-view
8c4o6ucj
# ksplice-view --id=8c4o6ucj
Ksplice id 8c4o6ucj is present in the kernel and is applied.
Here is the source code patch associated with this update:
--- linux-2.6/kernel/printk.c 2008-06-28 22:26:15.000000000 -0400
+++ linux-2.6-new/kernel/printk.c 2008-06-29 00:19:16.000000000 -0400
@@ -609,6 +609,7 @@
va_list args;
int r;
+ vprintk("Quoth the kernel:\n", NULL);
va_start(args, fmt);
r = vprintk(fmt, args);
va_end(args);
Revertendo:
# ksplice-undo 8c4o6ucj
# dmesg | tail -n1
ksplice: Update 8c4o6ucj reversed successfully
Qualquer dúvida, uma maior documentação pode ser encontrada em: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
Conclusão
Após estes procedimentos, aplicar patches ao kernel se tornará tarefa fácil de ser executada e não mais uma dor de cabeça como era para mim e suponho que para muitos também.
Um reboot de um servidor pode demorar vários minutos e agora pode ser simplificado em menos de 1 segundo.
Espero que tenham gostado e tirado algum proveito do artigo, pois esta é uma tecnologia nova e muitos não tem conhecimento. Meu papel não é de fazer um artigo técnico e sim divulgar esse programa, que é uma mão na roda para quem não pode reiniciar seus computadores.
Fonte: VivaoLinux
Postado Por: RedDeviL
Por: flavio augusto marques adao
Introdução
Realizar uma atualização no kernel é uma tarefa simples, mas quando falamos de um servidor cujos processos não podem parar, isto já se torna um pouco mais complicado. Praticamente tudo pode ser atualizado no sistema, mas as atualizações de kernel necessitam de um reboot do sistema.
Assim sendo imagino que vários sysadmins perdem noites e mais noites de sono para poderem aplicar algum patch em seu kernel, pois só podem parar o sistema de madrugada quando se tem poucos usuários utilizando os servidores. Isso quando se é possível rebootar o servidor.
Se você se identifica com essa situação ou algo parecido, lhes apresento o Ksplice.
Essa poderosa ferramenta permite que sejam aplicados patches no kernel sem o tradicional reboot. Isso mesmo, ele pára o sistema por 0,7ms. Como isso é possível? Veremos mais adiante.
Entendendo o funcionamento do Ksplice
Para gerar a atualização, ele compara os objetos compilados antes e depois do patch ser aplicado. Esta é uma técnica chamada de "pre-post differencing", ou seja, ele compara o pré-código com o que está rodando na memória e em seguida modifica o caminho das funções para que as novas funções passem a ser lidas no lugar das antigas.
Nos testes realizados foi constatado que 88% dos patches de segurança podem ser implementados sem a necessidade de mais nenhum código adicional.
Hoje o Ksplice Uptrack pode ser instalado facilmente no Ubuntu por um pacote .deb pré-testado.
Instalando e utilizando
Para instalar é só seguir os passos, ou se você usa Ubuntu ou algum outro parente do Debian pode recorrer ao pacote .deb fornecido em Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar....
Através do pacote binário:
$ wget Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
$ tar zxf ksplice-0.9.8-bin-i386.tar.gz
$ cd ksplice-0.9.8
$ ./configure
$ make
$ su root
# make install
Através do fonte:
$ wget Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
$ tar zxf ksplice-0.9.8-src.tar.gz
$ cd ksplice-0.9.8
$ ./configure
$ make
$ su root
# make install
Preparando o diretório:
$ mkdir ~/linux-source/ksplice
$ cp /boot/config-2.6.22-1-686-smp ~/linux-source/ksplice/.config
$ cp /boot/System.map-2.6.22-1-686-smp ~/linux-source/ksplice/System.map
$ ln -s /lib/modules/2.6.22-1-686-smp/build ~/linux-source/ksplice/build
Aplicando patches
Explicarei como aplicar o patch do printk, mas o mesmo procedimento serve para qualquer outro.
$ wget Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
$ ksplice-create --patch=printk.patch ~/linux-source
Ksplice update tarball written to ksplice-8c4o6ucj.tar.gz
# ksplice-apply ./ksplice-8c4o6ucj.tar.gz
Done!
Estes comandos anteriores podem ser dados em qualquer diretório do sistema. Para testar seu funcionamento:
# dmesg | tail -n2
Quoth the kernel:
ksplice: Update 8c4o6ucj applied successfully
Se algo parecido foi exibido na tela, quer dizer que está tudo ok e podemos prosseguir.
Para alguns kernels mais antigos é necessário digitar:
# dmesg | tail -n3
Quoth the kernel:
Quoth the kernel:
ksplice: Update 8c4o6ucj applied successfully
Para ver as atualizações em ação:
# rmmod loop
# modprobe loop
# dmesg | tail -n2
Quoth the kernel:
loop: loaded (max 8 devices)
Revertendo as alterações
Exibindo as atualizações:
# ksplice-view
8c4o6ucj
# ksplice-view --id=8c4o6ucj
Ksplice id 8c4o6ucj is present in the kernel and is applied.
Here is the source code patch associated with this update:
--- linux-2.6/kernel/printk.c 2008-06-28 22:26:15.000000000 -0400
+++ linux-2.6-new/kernel/printk.c 2008-06-29 00:19:16.000000000 -0400
@@ -609,6 +609,7 @@
va_list args;
int r;
+ vprintk("Quoth the kernel:\n", NULL);
va_start(args, fmt);
r = vprintk(fmt, args);
va_end(args);
Revertendo:
# ksplice-undo 8c4o6ucj
# dmesg | tail -n1
ksplice: Update 8c4o6ucj reversed successfully
Qualquer dúvida, uma maior documentação pode ser encontrada em: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
Conclusão
Após estes procedimentos, aplicar patches ao kernel se tornará tarefa fácil de ser executada e não mais uma dor de cabeça como era para mim e suponho que para muitos também.
Um reboot de um servidor pode demorar vários minutos e agora pode ser simplificado em menos de 1 segundo.
Espero que tenham gostado e tirado algum proveito do artigo, pois esta é uma tecnologia nova e muitos não tem conhecimento. Meu papel não é de fazer um artigo técnico e sim divulgar esse programa, que é uma mão na roda para quem não pode reiniciar seus computadores.
Fonte: VivaoLinux
Postado Por: RedDeviL