Como posso atualizar o kernel do meu servidor sem reiniciar?

29

Esta é uma pergunta carregada porque já estou ciente e estou muito interessado em ksplice . O problema é que desde que eles foram comprados pela Oracle, eles foram forçados a retirar várias distribuições de servidor das ofertas. A resposta não é tão simples como era antes.

Eu notei uma pergunta no Unix.SE que afirma:

  

Você pode criar seus próprios patches do ksplice para carregar dinamicamente seu próprio kernel

Ótimo! Mas como?!

Instalei o pacote ksplice gratuito no repositório na minha área de trabalho (não ksplice-uptrack , que é não-livre) e agora quero gerar e aplicar atualizações. Qual é o processo? Existem scripts para automatizar o processo?

Além disso, se todas as máquinas necessárias para atualizações sem reinicialização estiverem no kernel (e ksplice package), por que, na verdade, não estamos tirando proveito disso por padrão?

Recentemente, o anunciou o kGraft . Parece ser mais ou menos o mesmo resultado, então se você tem uma resposta que envolva isso, eu ficaria muito feliz com isso. Ainda faltam alguns meses para serem lançados.

Nota 1: Fico feliz por uma solução ao lado do ksplice, mas ela precisa oferecer a mesma coisa: atualizações contínuas no kernel que podem ser aplicadas sem reiniciar o servidor.

Nota 2: direi novamente; o "serviço" principal do ksplice não suporta o Ubuntu Server. Ele costumava, mas não faz mais. Quando falo sobre querer usar o ksplice, estou falando sobre as ferramentas de código aberto no pacote ksplice . Qualquer resposta que fale sobre ksplice-uptrack provavelmente não é o que eu estou procurando, já que esta é a parte que se integra diretamente com o "serviço" acima mencionado.

    
por Oli 26.09.2012 / 08:59

6 respostas

5

Todas as outras respostas aqui são ótimas, mas para o Ubuntu especificamente, a Canonical agora oferece esse serviço no 16.04.

Isso usa a tecnologia de atualização ao vivo no kernel do Linux desde que o 4.0 foi lançado.

    
por dpb 19.10.2016 / 00:28
6

Eu não sei muito sobre o ksplice, mas pensei em mencioná-lo - você já ouviu falar sobre kexec ? Isso pode ser o que você precisa.

Sobre a pergunta por que não adotamos isso como um mecanismo padrão? Bem, sobrescrevendo a memória do kernel atual enquanto ainda está em execução pode causar problemas potenciais. Também espera que os dispositivos de hardware estejam em um estado bem definido, o que nem sempre é possível.

Você pode dar uma olhada no artigo sobre o desenvolvedor da IBM sobre isso para decidir se atende às suas necessidades.

    
por Marcin Kaminski 24.11.2012 / 01:08
3

O ksplice permitirá a troca do kernel sem precisar de reinicialização. O Uptrack funciona dentro do ksplice e tem um arquivo de configuração editável em /etc/uptrack/uptrack.conf

    
por blindfett 16.12.2012 / 04:48
2

Existem algumas alternativas de código aberto ao Ksplice que foram submetidas para inclusão no kernel principal do Linux. É muito cedo para dizer o que vai acabar no kernel, mas você ainda pode testá-los se for corajoso o suficiente:

  • kGraft , que você mencionou anteriormente. Um dos engenheiros de kernel do Ubuntu tem um post onde ele tentou: usando o kgraft com o ubuntu
  • kpatch , atualmente em desenvolvimento pela Red Hat. Seu site github tem algumas instruções para testá-lo no Ubuntu: link

Você pode ler mais sobre os dois aqui: Posts do SUSE kGraft, Patches do KPatch do Red Hat Posts

    
por bmaupin 26.08.2014 / 15:33
1

O wiki do Arch Linux tinha instruções: link

A única parte que parece ser específica da distribuição é como instalar o próprio ksplice. Desde que você já descobriu isso parece, eu acho que isso deve levá-lo em seu caminho.

    
por bobpaul 04.02.2014 / 15:04
0

Desde 16 de julho de 2015, o "Oracle Ksplice é oferecido gratuitamente no Fedora e no Ubuntu Desktop Editions", oficialmente.

Basta instalar o arquivo baixado .deb você pode acessá-lo .

Se você tentar sudo dpkg -i ksplice-uptrack.deb , poderá ter que corrigir dependências com sudo apt-get install -f .

    
por Pablo Bianchi 09.10.2015 / 21:14