¿Cómo puedo actualizar el kernel de mi servidor sin reiniciar?


29

Esta es una pregunta cargada porque ya estoy al tanto y estoy muy interesado en ksplice . El problema es que desde que fueron comprados por Oracle, se han visto obligados a retirar numerosas distribuciones de servidores de las ofertas. La respuesta no es tan simple como lo era antes.

Noté una pregunta en Unix.SE que dice:

Puede construir sus propios parches de ksplice para cargarlos dinámicamente en su propio núcleo

¡Excelente! ¡¿Pero cómo?!

He instalado el ksplicepaquete gratuito en el repositorio en mi escritorio ( ksplice-uptrackque no es no gratuito) y ahora quiero generar y aplicar actualizaciones. Cual es el proceso ¿Hay algún script para automatizar el proceso?

Además, si toda la maquinaria necesaria para las actualizaciones sin reinicio se encuentra en el núcleo (y el ksplicepaquete), ¿por qué demonios no nos estamos aprovechando de manera predeterminada?


Recientemente se anunció kGraft . Parece ser más o menos el mismo resultado, por lo que si tiene una respuesta que lo involucre, estaría igual de feliz con eso. Sin embargo, actualmente están a unos pocos meses de su lanzamiento.


Nota 1: estoy feliz por una solución al lado de ksplice pero tiene que ofrecer lo mismo: actualizaciones continuas al núcleo que se pueden aplicar sin reiniciar el servidor.

Nota 2: lo diré de nuevo; el "servicio" principal de ksplice no es compatible con Ubuntu Server. Solía ​​hacerlo pero ya no. Cuando hablo de querer usar ksplice, estoy hablando de las herramientas de código abierto en el ksplicepaquete. Cualquier respuesta que las conversaciones acerca ksplice-uptrackprobablemente no es lo que busco ya que esta es la parte que se integra directamente con "servicio" antes mencionado.

Respuestas:



6

No sé mucho sobre ksplice, pero pensé en mencionarlo. ¿Has oído hablar de él kexec? Esto podría ser lo que necesitas.

En cuanto a la pregunta, ¿por qué no hemos adoptado esto como un mecanismo predeterminado? Bueno, sobrescribir la memoria del kernel actual mientras aún se está ejecutando puede causar problemas potenciales. También espera que los dispositivos de hardware estén en un estado bien definido que no siempre es posible.

Puede echar un vistazo al artículo de IBM Developer Works para decidir si se ajusta a sus necesidades.


55
+1 para kexec, pero en esencia es un reinicio en caliente: es decir, el núcleo se carga nuevamente desde cero, por lo que los scripts de inicio, etc. Esto no es técnicamente un reinicio, pero los servicios en ejecución se detendrán.
jackweirdy

Sí, lo sé, pero no he leído nada en ksplice para descubrir cómo es diferente.
Marcin Kaminski

1
De acuerdo con en.wikipedia.org/wiki/Ksplice , ksplicese aplica un parche diff binario para el núcleo en ejecución, mientras que todavía está en la memoria
jackweirdy

2
Necesitaré leer un poco más sobre esto ya que es interesante. Entonces, ¿cuánto tiempo de actividad intentas ahorrar al reiniciar? : D
Marcin Kaminski

3

ksplice permitirá el intercambio de kernel sin necesidad de reiniciar. Uptrack funciona dentro de ksplice y tiene un archivo de configuración editable en /etc/uptrack/uptrack.conf


2

Hay un par de alternativas de código abierto a Ksplice que se han enviado para su inclusión en el núcleo principal de Linux. Es demasiado pronto para saber cuál terminará en el núcleo, pero aún puede probarlos si es lo suficientemente valiente:

Puede leer más sobre ambos aquí: Publicaciones de SUSE kGraft, Publicaciones de Red Hat Parches de Kpatch



0

Desde el 16 de julio de 2015, "Oracle Ksplice se ofrece de forma gratuita en Fedora y Ubuntu Desktop Editions" oficialmente.

Simplemente instale el archivo descargado .deb que puede obtener aquí .

Si lo intentas sudo dpkg -i ksplice-uptrack.deb, quizás tengas que arreglar las dependencias con sudo apt-get install -f.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.