¿Es bueno tener una versión múltiple del kernel de Linux?

14

Una vez, estaba instalando algunos parches de kernel y algo salió mal en un servidor en vivo donde teníamos cientos de clientes. Solo había un núcleo en el sistema. Entonces, el servidor estuvo inactivo por algún tiempo, y usando un CD en vivo, pusimos el sistema en funcionamiento e hicimos el trabajo de reparación adicional.

Ahora mi pregunta: ¿Es una buena idea tener 2 versiones del kernel, de modo que si el kernel está dañado siempre podamos reiniciar con otro kernel disponible? Por favor hagamelo saber.

Además, ¿es posible tener 2 versiones del mismo núcleo? ¿Para que pueda elegir el otro núcleo cuando hay corrupción del núcleo?

Edited:
My Server Details:
2.6.32-431.el6.x86_64
CentOS release 6.5 (Final)

¿Cómo puedo tener la misma copia de este kernel, de modo que cuando mi kernel se dañe, pueda iniciar el kernel de respaldo?

Mani
fuente
44
Me parece que has respondido tu propia pregunta. No hay inconveniente en tener múltiples núcleos, siempre que sepa que funcionan con su sistema, y ​​ocasionalmente puede ser útil si tiene problemas con un núcleo en particular por alguna razón.
Faheem Mitha
Gracias, puede que no le pregunte a los qns correctamente. ¿Cómo puedo tener la misma copia de este kernel, para que cuando mi kernel esté dañado, pueda iniciar el kernel de respaldo?
Mani
2
Claro que puedes tener el kernel idéntico. El núcleo es solo un archivo en el disco. Puede copiar su núcleo existente con un nombre ligeramente diferente.
Faheem Mitha
En uno de los servidores que heredé, tenía 16 entradas de arranque para 8 núcleos diferentes ... Ya sabes, hasta que lo limpié
Canadian Luke
Normalmente mantengo el kernel anterior en caso de que algo salga mal.
Joshua

Respuestas:

18

Tanto RedHat como la distribución basada en Debian mantienen varias versiones de Kernel cuando instalas una nueva usando yumo apt-getpor defecto. Se considera una buena práctica y se hace exactamente para el caso que usted describe: si algo sale mal con el kernel más reciente, siempre puede reiniciar y en GRUB elige arrancar usando uno de los kernels anteriores.

En distribuciones RedHat permite controlar el número de los granos de mantenerse en /etc/yum.confla installonly_limitconfiguración. En mi instalación nueva de CentOS 7, el valor predeterminado es 5.

Además, si en RedHat está instalando un nuevo núcleo del paquete RPM que debe usar rpm -ivh, no rpm -Uvh: el primero mantendrá el núcleo más antiguo en su lugar mientras que el segundo lo reemplazará.

Debian mantiene los núcleos antiguos pero no los elimina automáticamente. Si necesita liberar su partición de arranque, debe eliminar los núcleos antiguos manualmente (recuerde dejar al menos uno de los núcleos anteriores). Para enumerar todos los paquetes de instalación de kernel y encabezados de kernel, utilice dpkg -l | egrep "linux-(im|he)".

Respondiendo a su pregunta: Además, ¿es posible tener una versión 2 del mismo núcleo? -- Sí, es posible. No puedo verificarlo en CentOS 6.5 en este momento, pero en CentOS 7 pude obtener el resultado deseado simplemente duplicando archivos de /bootdirectorio relacionados con el núcleo y reconstruyendo el menú de grub:

cd /boot

# Duplicate kernel files; 
# "3.10.0-123.el7" is a substring in the name of the current kernel
ls -1 | grep "3.10.0-123.el7" | { while read i; \
    do cp $i $(echo $i | sed 's/el7/el7.backup/'); done; }

# Backup the grub configuration, just in case
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.backup

# Rebuild grub configuration
grub2-mkconfig -o /boot/grub2/grub.cfg

# At this point you can reboot and see that a new kernel is available 
# for you to choose in GRUB menu
golem
fuente
gracias, estoy trabajando en eso. Pero en CentOS 6.5, no hay "grub2-mkconfig". sabes cómo hacer esto en centos 6.5, creo que grub2 solo está disponible en Centos 7. Estoy buscando en Google ahora, si encuentro una solución, se actualizará aquí.
Mani
Modifiqué esas líneas para adaptarlas a Centos 6.5 como se muestra a continuación y me quedé atascado con la forma de actualizar grub.conf. ls -1 | grep "2.6.32-431.el6" | {mientras lee i; \ do cp $ i $ (echo $ i | sed 's / el6 / el6.backup /'); hecho; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup
Mani
¡¡¡muchas gracias!!! Funcionó y modifiqué así ls -1 | grep "2.6.32-431.el6" | {mientras lee i; \ do cp $ i $ (echo $ i | sed 's / el6 / el6.backup /'); hecho; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup y edité el grup.conf manualmente. Puede mantener el UUID igual, si va a copiar en el mismo disco y partición.
Mani
7

Sí, es posible y diría que incluso aconsejable. Solo necesita configurar el proceso de arranque para ofrecerle la alternativa. Por lo general, esto se hace en la configuración del cargador de arranque; por lo general, solo puede duplicar la entrada que está allí y cambiar el nombre de archivo de la imagen del núcleo y la etiqueta de entrada del menú de arranque.

En un servidor de producción, esto generalmente no es un problema, pero cada vez que actualiza el kernel es una buena idea tener una copia de seguridad presente. Algunas distribuciones de Linux ofrecen reversión (generalmente respaldada por capacidades de instantáneas del sistema de archivos) en las actualizaciones de paquetes para hacer que el proceso sea lo más sencillo posible, pero incluso en esos casos tendería a tener una copia de seguridad lista.

En cuanto a tener varias copias del mismo núcleo, incluso eso tendría sentido, pero como señala @goldilocks en el comentario a continuación, si su núcleo se corrompe, debería pensar en reemplazar el hardware. Por otro lado, colocar el duplicado en un HDD físico diferente puede ahorrarle algunos problemas. Pero tenga en cuenta que el archivo de imagen del kernel solo se usa durante el arranque.

Peterph
fuente
He modificado los qns. Por favor, hágamelo saber, ¿Cómo tener un kernel de respaldo? (preferiblemente la misma versión)
Mani
3
No debería tener que hacer nada, ya están allí, pero en diferentes versiones. No tiene sentido tener dos la misma versión a menos que haya compilado uno de ellos, de lo contrario son copias idénticas. El problema de la "corrupción" es algo falso: según esa lógica, necesitaría dos copias idénticas de todo el sistema en caso de que el bashbinario se corrompiera, libcse corrompiera, etc., todo lo cual hará que el sistema sea inútil. Estos archivos no deberían estar "corrompidos". Si es así, reemplace su hardware.
Ricitos
1
@goldilocks O reemplace su administrador de sistemas, dependiendo de dónde estaba la falla.
Philip Kendall
@goldilocks ver respuesta actualizada: puede tener sentido en casos específicos. Obviamente, debe preferirse reemplazar el hardware defectuoso siempre que sea posible.
Peter