É bom ter várias versões do Linux Kernel?

14

Uma vez, eu estava instalando alguns patches do kernel e algo deu errado em um servidor ao vivo onde tínhamos centenas de clientes. Apenas um kernel estava lá no sistema. Portanto, o servidor ficou inativo por algum tempo e, usando um CD ao vivo, colocamos o sistema em funcionamento e fizemos os reparos posteriores.

Agora, minha pergunta: é uma boa idéia ter duas versões do kernel, para que, se o kernel estiver corrompido, sempre possamos reiniciar com outro kernel disponível? Por favor deixe-me saber.

Além disso, é possível ter 2 versões do mesmo kernel? Para que eu possa escolher o outro kernel quando houver corrupção do kernel?

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

Como posso ter a mesma cópia deste kernel, para que, quando meu kernel corrompa, eu possa iniciar o kernel de backup?

Mani
fonte
4
Parece-me que você respondeu sua própria pergunta. Não há desvantagem em ter vários kernels, desde que você saiba que eles funcionam com seu sistema, e pode ser útil ocasionalmente se você tiver problemas com um kernel específico por algum motivo.
Faheem Mitha
Obrigado, pode ser que eu não perguntei o qns corretamente. Como posso ter a mesma cópia deste kernel, para que, quando meu kernel corrompa, eu possa iniciar o kernel de backup?
Mani
2
Claro que você pode ter o kernel idêntico. O kernel é apenas um arquivo no disco. Você pode copiar seu kernel existente com um nome ligeiramente diferente.
Faheem Mitha
Em um dos servidores que herdei, que tinha 16 entradas de inicialização para 8 núcleos diferentes sobre isso ... Você sabe, até que eu limpa-lo
canadense Luke
Eu costumo manter o kernel anterior no caso de algo dar errado.
Joshua Joshua

Respostas:

18

A distribuição baseada em RedHat e Debian mantém várias versões do Kernel quando você instala uma nova usando yumou apt-getpor padrão. Isso é considerado uma boa prática e é feito exatamente para o caso que você descreve: se algo der errado com o kernel mais recente, você sempre poderá reiniciar e no GRUB optar por inicializar usando um dos kernels anteriores.

Nas distros do RedHat, você controla o número de kernels para manter /etc/yum.confa installonly_limitconfiguração. Na minha nova instalação do CentOS 7, o padrão é 5.

Além disso, se no RedHat você estiver instalando um novo kernel a partir do pacote RPM rpm -ivh, não deve rpm -Uvh: o anterior manterá o kernel antigo no lugar enquanto o posterior o substituirá.

O Debian mantém kernels antigos, mas não os remove automaticamente. Se você precisar liberar sua partição de inicialização, precisará remover manualmente os kernels antigos (lembre-se de deixar pelo menos um dos kerneles anteriores). Para listar todos os pacotes de instalação do kernel e de cabeçalhos do kernel, use dpkg -l | egrep "linux-(im|he)".

Respondendo à sua pergunta - Além disso, é possível ter uma versão 2 do mesmo kernel? -- Sim, é possível. Não posso verificá-lo no CentOS 6.5 no momento, mas no CentOS 7 consegui obter o resultado desejado apenas duplicando os arquivos de /bootdiretório relacionados ao kernel e reconstruindo o menu 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
fonte
obrigado, estou trabalhando nisso. Mas no CentOS 6.5, não há "grub2-mkconfig". você sabe, como fazer isso no centos 6.5, acho que o grub2 está disponível apenas no centos 7. Estou pesquisando no Google agora, se encontrar um soln, será atualizado aqui.
Mani
Eu modifiquei essas linhas para se adequar ao Centos 6.5, como abaixo, e fiquei preso com a atualização do grub.conf. ls -1 | grep "2.6.32-431.el6" | {enquanto lê i; \ do cp $ i $ (echo $ i | sed 's / el6 / el6.backup /'); feito; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup
Mani
Muito obrigado!!! Funcionou e eu modifiquei assim ls -1 | grep "2.6.32-431.el6" | {enquanto lê i; \ do cp $ i $ (echo $ i | sed 's / el6 / el6.backup /'); feito; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup e editei o grup.conf manualmente. Você pode manter o UUID igual, se quiser copiar no mesmo disco e partição.
Mani
7

Sim, é possível e eu diria até aconselhável. Você só precisa configurar o processo de inicialização para oferecer a alternativa. Normalmente, isso é feito na configuração do carregador de inicialização - geralmente você pode apenas duplicar a entrada existente e alterar o nome do arquivo da imagem do kernel e o rótulo da entrada do menu de inicialização.

Em um servidor de produção, isso geralmente não é um problema, mas sempre que você atualiza o kernel, é uma boa ideia ter um backup presente. Algumas distribuições Linux oferecem reversão (geralmente suportada pelos recursos de captura instantânea do sistema de arquivos) em atualizações de pacotes para tornar o processo o mais simples possível, mas mesmo nesses casos, eu costumava manter um backup pronto.

Quanto a ter várias cópias do mesmo kernel - até isso faria sentido, mas como o @goldilocks aponta no comentário abaixo, se o seu kernel for corrompido, você deve pensar em substituir o hardware. Por outro lado, colocar a duplicata em um disco rígido físico diferente pode poupar alguns problemas. Mas tenha em mente, que o arquivo de imagem do kernel só é sempre usado durante a inicialização.

peterph
fonte
Eu modifiquei o qns, por favor me avise, como ter um kernel de backup? (de preferência a mesma versão)
Mani
3
Você não deveria ter que fazer nada, eles já estão lá - mas em versões diferentes. Não faz sentido ter duas da mesma versão, a menos que você tenha compilado uma delas, caso contrário, elas são apenas cópias idênticas. A questão da "corrupção" é meio falsa - por essa lógica, você precisaria de duas cópias idênticas de todo o sistema, caso o bashbinário estivesse corrompido, o libccorrompido etc. etc., o que tornará o sistema inútil. Esses arquivos não devem estar "corrompidos". Se estiverem, substitua o seu hardware.
Goldilocks
1
@goldilocks Ou substitua o administrador do sistema, dependendo da falha.
Philip Kendall
@goldilocks veja a resposta atualizada - pode fazer sentido em casos específicos. Obviamente, a substituição de hardware defeituoso deve ser preferida sempre que possível.
Peterph