Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Ksplice - atualizando o kernel sem necessidade de reboot

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Artigo Ksplice - atualizando o kernel sem necessidade de reboot

    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
X
Working...
X