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.
[1] Comentário enviado por
snails em 19/08/2009 - 12:52h:
Muito bom artigo, mas tenho uma dúvida.
No caso de atualização de kernel...por exemplo...eu tenhu um kernel de versão mais atual do que está operando. Eu o compilei em uma máquina de desenvolvimento a parte e gostaria de descompactá-lo no meu sistema. Ao realizar este procedimento eu consigo subir o kernel novo, mas preciso do reboot para que os módulos e o sistema suba neste kernel novo.
Gostaria de saber se, consigo gerar um patch com o kernel compilado novo, e fazer com que o ksplice suba os serviços neste kernel novo sem reboot.
Obrigado pela atenção e aguardo um retorno.
Snails
[2] Comentário enviado por
Gerson Raymond em 19/08/2009 - 17:32h:
Muito bom o artigo amigo e sinceramente meus parabéns pela ferramenta de extrema utilidade, sem comentários adicionais ... o próprio artigo já responde por si mesmo.
Um abraço.
[3] Comentário enviado por
dfsantos em 20/08/2009 - 14:31h:
Otimo artigo....parabens!
[4] Comentário enviado por
ragen em 24/08/2009 - 18:12h:
Olá Flávio,
Me tira uma dúvida:
E se por acaso o kernel não bootar, como um kernel que dá panic porque alguma recurso foi mal aplicado, ou conflitante com um kernel "não padrão" como muita gente que usa/usava patches do PaX/GrSec em seus servidores.
O Ksplice dá a opção de recover?
[5] Comentário enviado por
flaviodm em 24/08/2009 - 23:28h:
Ola ragen,
Tem jeito sim. Basta usar o ksplice-undo, por exemplo:
ksplice-apply ./ksplice-lalalalala.tar.gz
para remover basta digitar
ksplice-undo lalalalala
Quanto ao post do snails eu ainda nao testei mais parece que tem como atualizar os modulos sim.
ksplice-create --prebuild KERNEL_SOURCE
ksplice-apply --partial
Acho que isso deve resolver seu problema, qualquer duvida estou a disposiçao.
Abraços.
[6] Comentário enviado por
aaron.binner em 26/08/2009 - 01:09h:
Opa, não sabia sobre esta ferramenta. E com certeza é de grande valia para nós. Ótimo artigo parabéns.