Como posso atualizar o kernel do meu servidor sem reiniciar?

29

Esta é uma pergunta carregada, porque eu já estou ciente e muito interessada no ksplice . O problema é que, desde que foram comprados pela Oracle, eles foram forçados a retirar várias ofertas de servidores. A resposta não é tão simples como era antes.

Percebi uma pergunta no Unix.SE que afirma:

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

Ótimo! Mas como?!

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

Além disso, se todo o maquinário necessário para atualizações sem reinicialização está parado no kernel (e no ksplicepacote), por que diabos não estamos tirando vantagem disso por padrão?


Recentemente, o kGraft foi anunciado . Parece ser aproximadamente o mesmo resultado, por isso, se você tiver uma resposta que a envolva, eu ficaria feliz com isso. No momento, está a poucos meses de ser lançado.


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

Nota 2: direi novamente; o principal "serviço" do ksplice não suporta o Ubuntu Server. Costumava, mas não existe mais. Quando falo em querer usar o ksplice, estou falando sobre as ferramentas de código aberto no ksplicepacote. Qualquer resposta que fale ksplice-uptrackprovavelmente não é o que eu estou procurando, pois esta é a parte que se integra diretamente ao "serviço" mencionado.

Oli
fonte

Respostas:

6

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

Com relação à pergunta, por que não adotamos isso como um mecanismo padrão? Bem, sobrescrever a memória do kernel atual enquanto ele ainda está em execução pode causar problemas em potencial. Ele 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 de trabalho do desenvolvedor IBM sobre ele para decidir se ele atende às suas necessidades.

Marcin Kaminski
fonte
5
+1 para kexec, mas, em essência, é uma reinicialização a quente - ou seja, o kernel é carregado novamente do zero, para que os scripts init etc. sejam chamados. Tecnicamente, não é uma reinicialização, mas os serviços em execução serão interrompidos.
jackweirdy
Sim, estou ciente disso, mas não li nada no ksplice para descobrir como é diferente.
Marcin Kaminski
11
De acordo com en.wikipedia.org/wiki/Ksplice , kspliceaplica-se um patch diff binário para o kernel em execução, enquanto ele ainda está na memória
jackweirdy
2
Vou precisar ler um pouco mais sobre isso, pois é interessante. Então, quanto tempo de atividade você está tentando economizar ao ser redefinido? : D
Marcin Kaminski
3

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

blindfett
fonte
2

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

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

bmaupin
fonte
1

O wiki do Arch Linux tinha instruções: https://wiki.archlinux.org/index.php/ksplice

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

bobpaul
fonte
11
Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Eric Carvalho
0

Desde 16 de julho de 2015 "o Oracle Ksplice é oferecido gratuitamente nas edições Fedora e Ubuntu Desktop.", Oficialmente.

Basta instalar o arquivo .deb baixado que você pode obter aqui .

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

Pablo A
fonte